diff options
277 files changed, 1090 insertions, 496 deletions
diff --git a/apps/dashboard/src/DashboardApp.vue b/apps/dashboard/src/DashboardApp.vue index dffcd783516..4eb820848a5 100644 --- a/apps/dashboard/src/DashboardApp.vue +++ b/apps/dashboard/src/DashboardApp.vue @@ -386,7 +386,7 @@ export default { background-attachment: fixed; > h2 { - color: var(--color-primary-text); + color: var(--color-primary-element-text); text-align: center; font-size: 32px; line-height: 130%; @@ -561,7 +561,7 @@ export default { } &:hover { - border-color: var(--color-primary); + border-color: var(--color-primary-element); } } @@ -577,7 +577,7 @@ export default { } input:focus + label { - border-color: var(--color-primary); + border-color: var(--color-primary-element); } } diff --git a/apps/dav/l10n/cs.js b/apps/dav/l10n/cs.js index 402aaba944c..526451b7cd5 100644 --- a/apps/dav/l10n/cs.js +++ b/apps/dav/l10n/cs.js @@ -115,6 +115,8 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} upravil(a) kontakt {card} v adresáři kontaktů {addressbook}", "You updated contact {card} in address book {addressbook}" : "Upravili jste kontakt {card} v adresáři kontaktů {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakt</strong> nebo <strong>adresář kontaktů</strong> byl upraven", + "Accounts" : "Účty", + "System address book which holds all accounts" : "Systémový adresář kontaktů, který obsahuje veškeré účty", "File is not updatable: %1$s" : "Soubor není možné zaktualizovat: %1$s", "Could not write to final file, canceled by hook" : "Nedaří se zapsat do konečného souboru – zrušeno háčkem (hook)", "Could not write file contents" : "Nedaří se zapsat obsahy souborů", diff --git a/apps/dav/l10n/cs.json b/apps/dav/l10n/cs.json index 3a09ff574a7..815dede14ce 100644 --- a/apps/dav/l10n/cs.json +++ b/apps/dav/l10n/cs.json @@ -113,6 +113,8 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} upravil(a) kontakt {card} v adresáři kontaktů {addressbook}", "You updated contact {card} in address book {addressbook}" : "Upravili jste kontakt {card} v adresáři kontaktů {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakt</strong> nebo <strong>adresář kontaktů</strong> byl upraven", + "Accounts" : "Účty", + "System address book which holds all accounts" : "Systémový adresář kontaktů, který obsahuje veškeré účty", "File is not updatable: %1$s" : "Soubor není možné zaktualizovat: %1$s", "Could not write to final file, canceled by hook" : "Nedaří se zapsat do konečného souboru – zrušeno háčkem (hook)", "Could not write file contents" : "Nedaří se zapsat obsahy souborů", diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index 047c12d3f05..d4a916aa742 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -118,6 +118,7 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "You updated contact {card} in address book {addressbook}" : "Du hast den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert", + "Accounts" : "Konten", "File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s", "Could not write to final file, canceled by hook" : "In die endgültige Datei konnte nicht geschrieben werden, wurde durch einen Hook abgebrochen", "Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden", diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index 8c6d7a686b7..3f3169348d9 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -116,6 +116,7 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "You updated contact {card} in address book {addressbook}" : "Du hast den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert", + "Accounts" : "Konten", "File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s", "Could not write to final file, canceled by hook" : "In die endgültige Datei konnte nicht geschrieben werden, wurde durch einen Hook abgebrochen", "Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden", diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index a662caf861f..7f3b72b640e 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -118,6 +118,8 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "You updated contact {card} in address book {addressbook}" : "Sie haben den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert", + "Accounts" : "Konten", + "System address book which holds all accounts" : "Systemadressbuch, das alle Konten enthält", "File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s", "Could not write to final file, canceled by hook" : "Konnte nicht in die endgültige Datei schreiben, wurde durch Hook abgebrochen.", "Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden", diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index 6aed2dbbdbe..dd60a2b8d4c 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -116,6 +116,8 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} hat den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "You updated contact {card} in address book {addressbook}" : "Sie haben den Kontakt {card} im Adressbuch {addressbook} aktualisiert", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Ein <strong>Kontakt</strong> oder ein <strong>Adressbuch</strong> wurde geändert", + "Accounts" : "Konten", + "System address book which holds all accounts" : "Systemadressbuch, das alle Konten enthält", "File is not updatable: %1$s" : "Datei kann nicht aktualisiert werden: %1$s", "Could not write to final file, canceled by hook" : "Konnte nicht in die endgültige Datei schreiben, wurde durch Hook abgebrochen.", "Could not write file contents" : "Dateiinhalt konnte nicht geschrieben werden", diff --git a/apps/dav/l10n/hr.js b/apps/dav/l10n/hr.js index 8ba84dfa42f..117a85f081e 100644 --- a/apps/dav/l10n/hr.js +++ b/apps/dav/l10n/hr.js @@ -94,6 +94,7 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} je ažurirao kontakt {card} u adresaru {addressbook}", "You updated contact {card} in address book {addressbook}" : "Ažurirali ste kontakt {card} u adresaru {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Izmijenjen je <strong>kontakt</strong> ili <strong>adresar</strong>", + "Accounts" : "Korisnićki računi", "System is in maintenance mode." : "Sustav je u načinu održavanja.", "Upgrade needed" : "Potrebno nadograditi", "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Vaš %s treba konfigurirati za korištenje HTTPS-a kako bi se mogli upotrebljavati CalDAV i CardDAV s operacijskim sustavom iOS/macOS.", diff --git a/apps/dav/l10n/hr.json b/apps/dav/l10n/hr.json index 9fa2fcf97e3..374a1753ee2 100644 --- a/apps/dav/l10n/hr.json +++ b/apps/dav/l10n/hr.json @@ -92,6 +92,7 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} je ažurirao kontakt {card} u adresaru {addressbook}", "You updated contact {card} in address book {addressbook}" : "Ažurirali ste kontakt {card} u adresaru {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Izmijenjen je <strong>kontakt</strong> ili <strong>adresar</strong>", + "Accounts" : "Korisnićki računi", "System is in maintenance mode." : "Sustav je u načinu održavanja.", "Upgrade needed" : "Potrebno nadograditi", "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Vaš %s treba konfigurirati za korištenje HTTPS-a kako bi se mogli upotrebljavati CalDAV i CardDAV s operacijskim sustavom iOS/macOS.", diff --git a/apps/dav/l10n/hu.js b/apps/dav/l10n/hu.js index ff1a75da57c..dd229543152 100644 --- a/apps/dav/l10n/hu.js +++ b/apps/dav/l10n/hu.js @@ -75,6 +75,9 @@ OC.L10N.register( "Cancelled: %1$s" : "Lemondva: %1$s", "\"%1$s\" has been canceled" : "A következőt le lett mondva: „%1$s”", "Re: %1$s" : "Vá: %1$s", + "%1$s has accepted your invitation" : "%1$s elfogadta a meghívását", + "%1$s has tentatively accepted your invitation" : "%1$s feltételesen elfogadta a meghívását", + "%1$s has declined your invitation" : "%1$s elutasította a meghívását", "%1$s has responded to your invitation" : "%1$s válaszolt a meghívására", "Invitation updated: %1$s" : "Meghívó frissítve: %1$s", "%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: %2$s", @@ -115,6 +118,8 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}", "You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett", + "Accounts" : "Fiókok", + "System address book which holds all accounts" : "A rendszer címjegyzéke, amely az összes fiókot tartalmazza", "File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s", "Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította", "Could not write file contents" : "A fájl tartalma nem írható", diff --git a/apps/dav/l10n/hu.json b/apps/dav/l10n/hu.json index d3a9c284d23..9c934526102 100644 --- a/apps/dav/l10n/hu.json +++ b/apps/dav/l10n/hu.json @@ -73,6 +73,9 @@ "Cancelled: %1$s" : "Lemondva: %1$s", "\"%1$s\" has been canceled" : "A következőt le lett mondva: „%1$s”", "Re: %1$s" : "Vá: %1$s", + "%1$s has accepted your invitation" : "%1$s elfogadta a meghívását", + "%1$s has tentatively accepted your invitation" : "%1$s feltételesen elfogadta a meghívását", + "%1$s has declined your invitation" : "%1$s elutasította a meghívását", "%1$s has responded to your invitation" : "%1$s válaszolt a meghívására", "Invitation updated: %1$s" : "Meghívó frissítve: %1$s", "%1$s updated the event \"%2$s\"" : "%1$s frissítette a következő eseményt: %2$s", @@ -113,6 +116,8 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}", "You updated contact {card} in address book {addressbook}" : "Aktualizálta a(z) {card} névjegyet a következő címjegyzékben: {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Egy <strong>névjegy</strong> vagy <strong>címjegyzék</strong> módosítva lett", + "Accounts" : "Fiókok", + "System address book which holds all accounts" : "A rendszer címjegyzéke, amely az összes fiókot tartalmazza", "File is not updatable: %1$s" : "A fájl nem frissíthető: %1$s", "Could not write to final file, canceled by hook" : "A végleges fájl nem írható, a hurok megszakította", "Could not write file contents" : "A fájl tartalma nem írható", diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js index af760bd33d1..606ff131578 100644 --- a/apps/dav/l10n/pl.js +++ b/apps/dav/l10n/pl.js @@ -118,6 +118,8 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} zaktualizował kontakt {card} w książce adresowej {addressbook}", "You updated contact {card} in address book {addressbook}" : "Zaktualizowałeś kontakt {card} w książce adresowej {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Zmodyfikowano <strong>kontakt</strong> lub <strong>książkę adresową</strong>", + "Accounts" : "Konta", + "System address book which holds all accounts" : "Systemowa książka adresowa, która przechowuje wszystkie konta", "File is not updatable: %1$s" : "Plik nie podlega aktualizacji: %1$s", "Could not write to final file, canceled by hook" : "Nie można zapisać do pliku końcowego, anulowane przez hook", "Could not write file contents" : "Nie można zapisać zawartości pliku", diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json index 5332f810cac..46337bedd40 100644 --- a/apps/dav/l10n/pl.json +++ b/apps/dav/l10n/pl.json @@ -116,6 +116,8 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} zaktualizował kontakt {card} w książce adresowej {addressbook}", "You updated contact {card} in address book {addressbook}" : "Zaktualizowałeś kontakt {card} w książce adresowej {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Zmodyfikowano <strong>kontakt</strong> lub <strong>książkę adresową</strong>", + "Accounts" : "Konta", + "System address book which holds all accounts" : "Systemowa książka adresowa, która przechowuje wszystkie konta", "File is not updatable: %1$s" : "Plik nie podlega aktualizacji: %1$s", "Could not write to final file, canceled by hook" : "Nie można zapisać do pliku końcowego, anulowane przez hook", "Could not write file contents" : "Nie można zapisać zawartości pliku", diff --git a/apps/dav/l10n/ru.js b/apps/dav/l10n/ru.js index 7d6995c6f1a..1eb5282a69a 100644 --- a/apps/dav/l10n/ru.js +++ b/apps/dav/l10n/ru.js @@ -118,6 +118,7 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} изменил(а) запись {card} в адресной книге {addressbook}", "You updated contact {card} in address book {addressbook}" : "Вы изменили запись {card} в адресной книге {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Изменение <strong>контакта</strong> или <strong>адресной книги</strong>", + "Accounts" : "Учётные записи", "File is not updatable: %1$s" : "Файл не подлежит обновлению: %1$s", "Could not write to final file, canceled by hook" : "Не удалось записать результирующий файл, запись отменена вызовом обработчика", "Could not write file contents" : "Не удалось записать содержимое файла", diff --git a/apps/dav/l10n/ru.json b/apps/dav/l10n/ru.json index 4b942bf0f69..0ea2a3ecc03 100644 --- a/apps/dav/l10n/ru.json +++ b/apps/dav/l10n/ru.json @@ -116,6 +116,7 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} изменил(а) запись {card} в адресной книге {addressbook}", "You updated contact {card} in address book {addressbook}" : "Вы изменили запись {card} в адресной книге {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Изменение <strong>контакта</strong> или <strong>адресной книги</strong>", + "Accounts" : "Учётные записи", "File is not updatable: %1$s" : "Файл не подлежит обновлению: %1$s", "Could not write to final file, canceled by hook" : "Не удалось записать результирующий файл, запись отменена вызовом обработчика", "Could not write file contents" : "Не удалось записать содержимое файла", diff --git a/apps/dav/l10n/sv.js b/apps/dav/l10n/sv.js index 1ddc55d5ab3..32a116dfa2b 100644 --- a/apps/dav/l10n/sv.js +++ b/apps/dav/l10n/sv.js @@ -118,6 +118,8 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} uppdaterade kontakten {card} i adressboken {addressbook}", "You updated contact {card} in address book {addressbook}" : "Du uppdaterade kontakten {card} i adressboken {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "En <strong>kontakt</strong> eller <strong>adressbok</strong> ändrades", + "Accounts" : "Konton", + "System address book which holds all accounts" : "Systemadressbok som innehåller alla konton", "File is not updatable: %1$s" : "Fil kan inte uppdateras: %1$s", "Could not write to final file, canceled by hook" : "Kunde ej skriva till den slutgiltiga filen, avbröts av en kopplad åtgärd", "Could not write file contents" : "Kunde inte skriva filens innehåll", diff --git a/apps/dav/l10n/sv.json b/apps/dav/l10n/sv.json index 5f7fba87831..ba52ba164e7 100644 --- a/apps/dav/l10n/sv.json +++ b/apps/dav/l10n/sv.json @@ -116,6 +116,8 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} uppdaterade kontakten {card} i adressboken {addressbook}", "You updated contact {card} in address book {addressbook}" : "Du uppdaterade kontakten {card} i adressboken {addressbook}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "En <strong>kontakt</strong> eller <strong>adressbok</strong> ändrades", + "Accounts" : "Konton", + "System address book which holds all accounts" : "Systemadressbok som innehåller alla konton", "File is not updatable: %1$s" : "Fil kan inte uppdateras: %1$s", "Could not write to final file, canceled by hook" : "Kunde ej skriva till den slutgiltiga filen, avbröts av en kopplad åtgärd", "Could not write file contents" : "Kunde inte skriva filens innehåll", diff --git a/apps/dav/l10n/tr.js b/apps/dav/l10n/tr.js index d813de5faaf..ac3eceb5791 100644 --- a/apps/dav/l10n/tr.js +++ b/apps/dav/l10n/tr.js @@ -118,6 +118,8 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor}, {addressbook} adres defterindeki {card} kişi kartını güncelledi", "You updated contact {card} in address book {addressbook}" : "{addressbook} adres defterindeki {card} kişi kartını güncellediniz", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Bir <strong>kişi</strong> ya da <strong>adres defteri</strong> değiştirildiğinde", + "Accounts" : "Hesaplar", + "System address book which holds all accounts" : "Tüm hesapların bulunduğu sistem adres defteri", "File is not updatable: %1$s" : "Dosya güncellenebilir değil: %1$s", "Could not write to final file, canceled by hook" : "Sonuç dosyasına yazılamadı, bağlantı tarafından iptal edildi", "Could not write file contents" : "Dosya içerikleri yazılamadı", diff --git a/apps/dav/l10n/tr.json b/apps/dav/l10n/tr.json index fd66403e007..51aa7625e17 100644 --- a/apps/dav/l10n/tr.json +++ b/apps/dav/l10n/tr.json @@ -116,6 +116,8 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor}, {addressbook} adres defterindeki {card} kişi kartını güncelledi", "You updated contact {card} in address book {addressbook}" : "{addressbook} adres defterindeki {card} kişi kartını güncellediniz", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "Bir <strong>kişi</strong> ya da <strong>adres defteri</strong> değiştirildiğinde", + "Accounts" : "Hesaplar", + "System address book which holds all accounts" : "Tüm hesapların bulunduğu sistem adres defteri", "File is not updatable: %1$s" : "Dosya güncellenebilir değil: %1$s", "Could not write to final file, canceled by hook" : "Sonuç dosyasına yazılamadı, bağlantı tarafından iptal edildi", "Could not write file contents" : "Dosya içerikleri yazılamadı", diff --git a/apps/dav/l10n/zh_TW.js b/apps/dav/l10n/zh_TW.js index 4b72e020db1..b89b9897da6 100644 --- a/apps/dav/l10n/zh_TW.js +++ b/apps/dav/l10n/zh_TW.js @@ -118,6 +118,8 @@ OC.L10N.register( "{actor} updated contact {card} in address book {addressbook}" : "{actor} 在通訊錄 {addressbook} 中更新了聯絡人 {card}", "You updated contact {card} in address book {addressbook}" : "您在通訊錄 {addressbook} 中更新了聯絡人 {card}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>聯絡人</strong>或<strong>通訊錄</strong>已被修改", + "Accounts" : "帳號", + "System address book which holds all accounts" : "包含所有帳號的系統通訊錄", "File is not updatable: %1$s" : "檔案無法更新:%1$s", "Could not write to final file, canceled by hook" : "無法寫入最終檔案,被掛勾取消", "Could not write file contents" : "無法寫入檔案內容", diff --git a/apps/dav/l10n/zh_TW.json b/apps/dav/l10n/zh_TW.json index b7e501c0cb7..9ecfa0dcf10 100644 --- a/apps/dav/l10n/zh_TW.json +++ b/apps/dav/l10n/zh_TW.json @@ -116,6 +116,8 @@ "{actor} updated contact {card} in address book {addressbook}" : "{actor} 在通訊錄 {addressbook} 中更新了聯絡人 {card}", "You updated contact {card} in address book {addressbook}" : "您在通訊錄 {addressbook} 中更新了聯絡人 {card}", "A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>聯絡人</strong>或<strong>通訊錄</strong>已被修改", + "Accounts" : "帳號", + "System address book which holds all accounts" : "包含所有帳號的系統通訊錄", "File is not updatable: %1$s" : "檔案無法更新:%1$s", "Could not write to final file, canceled by hook" : "無法寫入最終檔案,被掛勾取消", "Could not write file contents" : "無法寫入檔案內容", diff --git a/apps/encryption/appinfo/info.xml b/apps/encryption/appinfo/info.xml index e77261c4712..de7ba7f0783 100644 --- a/apps/encryption/appinfo/info.xml +++ b/apps/encryption/appinfo/info.xml @@ -42,6 +42,7 @@ Please read the documentation to know all implications before you decide to enab <command>OCA\Encryption\Command\ScanLegacyFormat</command> <command>OCA\Encryption\Command\FixEncryptedVersion</command> <command>OCA\Encryption\Command\FixKeyLocation</command> + <command>OCA\Encryption\Command\DropLegacyFileKey</command> </commands> <settings> diff --git a/apps/encryption/composer/composer/autoload_classmap.php b/apps/encryption/composer/composer/autoload_classmap.php index 9f9ab4e406f..059296338b4 100644 --- a/apps/encryption/composer/composer/autoload_classmap.php +++ b/apps/encryption/composer/composer/autoload_classmap.php @@ -9,6 +9,7 @@ return array( 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', 'OCA\\Encryption\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', 'OCA\\Encryption\\Command\\DisableMasterKey' => $baseDir . '/../lib/Command/DisableMasterKey.php', + 'OCA\\Encryption\\Command\\DropLegacyFileKey' => $baseDir . '/../lib/Command/DropLegacyFileKey.php', 'OCA\\Encryption\\Command\\EnableMasterKey' => $baseDir . '/../lib/Command/EnableMasterKey.php', 'OCA\\Encryption\\Command\\FixEncryptedVersion' => $baseDir . '/../lib/Command/FixEncryptedVersion.php', 'OCA\\Encryption\\Command\\FixKeyLocation' => $baseDir . '/../lib/Command/FixKeyLocation.php', diff --git a/apps/encryption/composer/composer/autoload_static.php b/apps/encryption/composer/composer/autoload_static.php index 8f50f064997..6c458eabddd 100644 --- a/apps/encryption/composer/composer/autoload_static.php +++ b/apps/encryption/composer/composer/autoload_static.php @@ -24,6 +24,7 @@ class ComposerStaticInitEncryption 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'OCA\\Encryption\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', 'OCA\\Encryption\\Command\\DisableMasterKey' => __DIR__ . '/..' . '/../lib/Command/DisableMasterKey.php', + 'OCA\\Encryption\\Command\\DropLegacyFileKey' => __DIR__ . '/..' . '/../lib/Command/DropLegacyFileKey.php', 'OCA\\Encryption\\Command\\EnableMasterKey' => __DIR__ . '/..' . '/../lib/Command/EnableMasterKey.php', 'OCA\\Encryption\\Command\\FixEncryptedVersion' => __DIR__ . '/..' . '/../lib/Command/FixEncryptedVersion.php', 'OCA\\Encryption\\Command\\FixKeyLocation' => __DIR__ . '/..' . '/../lib/Command/FixKeyLocation.php', diff --git a/apps/encryption/composer/composer/installed.php b/apps/encryption/composer/composer/installed.php index 1426826287d..46be34510db 100644 --- a/apps/encryption/composer/composer/installed.php +++ b/apps/encryption/composer/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'dd3d689e04a5e1d558da937ca72980e0e2c7c404', + 'reference' => 'ffa8d21f37c8ccf968974b6aeb828e3e84287b94', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'dd3d689e04a5e1d558da937ca72980e0e2c7c404', + 'reference' => 'ffa8d21f37c8ccf968974b6aeb828e3e84287b94', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), diff --git a/apps/encryption/lib/Command/DropLegacyFileKey.php b/apps/encryption/lib/Command/DropLegacyFileKey.php new file mode 100644 index 00000000000..f0a5f36f30f --- /dev/null +++ b/apps/encryption/lib/Command/DropLegacyFileKey.php @@ -0,0 +1,167 @@ +<?php + +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2023, Côme Chilliet <come.chilliet@nextcloud.com> + * + * @author Côme Chilliet <come.chilliet@nextcloud.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Encryption\Command; + +use OC\Encryption\Exceptions\DecryptionFailedException; +use OC\Files\FileInfo; +use OC\Files\View; +use OCA\Encryption\KeyManager; +use OCP\Encryption\Exceptions\GenericEncryptionException; +use OCP\IUserManager; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +class DropLegacyFileKey extends Command { + private View $rootView; + + public function __construct( + private IUserManager $userManager, + private KeyManager $keyManager, + ) { + parent::__construct(); + + $this->rootView = new View(); + } + + protected function configure(): void { + $this + ->setName('encryption:drop-legacy-filekey') + ->setDescription('Scan the files for the legacy filekey format using RC4 and get rid of it (if master key is enabled)'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int { + $result = true; + + $output->writeln('<info>Scanning all files for legacy filekey</info>'); + + foreach ($this->userManager->getBackends() as $backend) { + $limit = 500; + $offset = 0; + do { + $users = $backend->getUsers('', $limit, $offset); + foreach ($users as $user) { + $output->writeln('Scanning all files for ' . $user); + $this->setupUserFS($user); + $result = $result && $this->scanFolder($output, '/' . $user); + } + $offset += $limit; + } while (count($users) >= $limit); + } + + if ($result) { + $output->writeln('All scanned files are properly encrypted.'); + return 0; + } + + return 1; + } + + private function scanFolder(OutputInterface $output, string $folder): bool { + $clean = true; + + foreach ($this->rootView->getDirectoryContent($folder) as $item) { + $path = $folder . '/' . $item['name']; + if ($this->rootView->is_dir($path)) { + if ($this->scanFolder($output, $path) === false) { + $clean = false; + } + } else { + if (!$item->isEncrypted()) { + // ignore + continue; + } + + $stats = $this->rootView->stat($path); + if (!isset($stats['hasHeader']) || $stats['hasHeader'] === false) { + $clean = false; + $output->writeln('<error>' . $path . ' does not have a proper header</error>'); + } else { + try { + $legacyFileKey = $this->keyManager->getFileKey($path, null, true); + if ($legacyFileKey === '') { + $output->writeln('Got an empty legacy filekey for ' . $path . ', continuing', OutputInterface::VERBOSITY_VERBOSE); + continue; + } + } catch (GenericEncryptionException $e) { + $output->writeln('Got a decryption error for legacy filekey for ' . $path . ', continuing', OutputInterface::VERBOSITY_VERBOSE); + continue; + } + /* If that did not throw and filekey is not empty, a legacy filekey is used */ + $clean = false; + $output->writeln($path . ' is using a legacy filekey, migrating'); + $this->migrateSinglefile($path, $item, $output); + } + } + } + + return $clean; + } + + private function migrateSinglefile(string $path, FileInfo $fileInfo, OutputInterface $output): void { + $source = $path; + $target = $path . '.reencrypted.' . time(); + + try { + $this->rootView->copy($source, $target); + $copyResource = $this->rootView->fopen($target, 'r'); + $sourceResource = $this->rootView->fopen($source, 'w'); + if ($copyResource === false || $sourceResource === false) { + throw new DecryptionFailedException('Failed to open '.$source.' or '.$target); + } + if (stream_copy_to_stream($copyResource, $sourceResource) === false) { + $output->writeln('<error>Failed to copy '.$target.' data into '.$source.'</error>'); + $output->writeln('<error>Leaving both files in there to avoid data loss</error>'); + return; + } + $this->rootView->touch($source, $fileInfo->getMTime()); + $this->rootView->unlink($target); + $output->writeln('<info>Migrated ' . $source . '</info>', OutputInterface::VERBOSITY_VERBOSE); + } catch (DecryptionFailedException $e) { + if ($this->rootView->file_exists($target)) { + $this->rootView->unlink($target); + } + $output->writeln('<error>Failed to migrate ' . $path . '</error>'); + $output->writeln('<error>' . $e . '</error>', OutputInterface::VERBOSITY_VERBOSE); + } finally { + if (is_resource($copyResource)) { + fclose($copyResource); + } + if (is_resource($sourceResource)) { + fclose($sourceResource); + } + } + } + + /** + * setup user file system + */ + protected function setupUserFS(string $uid): void { + \OC_Util::tearDownFS(); + \OC_Util::setupFS($uid); + } +} diff --git a/apps/encryption/lib/Command/ScanLegacyFormat.php b/apps/encryption/lib/Command/ScanLegacyFormat.php index dc6d43ee5b8..85a99a17845 100644 --- a/apps/encryption/lib/Command/ScanLegacyFormat.php +++ b/apps/encryption/lib/Command/ScanLegacyFormat.php @@ -36,7 +36,6 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class ScanLegacyFormat extends Command { - /** @var Util */ protected $util; @@ -89,7 +88,7 @@ class ScanLegacyFormat extends Command { foreach ($users as $user) { $output->writeln('Scanning all files for ' . $user); $this->setupUserFS($user); - $result &= $this->scanFolder($output, '/' . $user); + $result = $result && $this->scanFolder($output, '/' . $user); } $offset += $limit; } while (count($users) >= $limit); diff --git a/apps/encryption/lib/Crypto/Encryption.php b/apps/encryption/lib/Crypto/Encryption.php index 465856fd28d..0bcaa167907 100644 --- a/apps/encryption/lib/Crypto/Encryption.php +++ b/apps/encryption/lib/Crypto/Encryption.php @@ -309,7 +309,12 @@ class Encryption implements IEncryptionModule { $publicKeys = $this->keyManager->addSystemKeys($this->accessList, $publicKeys, $this->getOwner($path)); $shareKeys = $this->crypt->multiKeyEncrypt($this->fileKey, $publicKeys); - $this->keyManager->deleteLegacyFileKey($this->path); + if (!$this->keyManager->deleteLegacyFileKey($this->path)) { + $this->logger->warning( + 'Failed to delete legacy filekey for {path}', + ['app' => 'encryption', 'path' => $path] + ); + } foreach ($shareKeys as $uid => $keyFile) { $this->keyManager->setShareKey($this->path, $uid, $keyFile); } diff --git a/apps/files/css/files.css b/apps/files/css/files.css index ee370c2ea70..dc47323cd77 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -1 +1 @@ -.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px)}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */ +.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px)}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */ diff --git a/apps/files/css/files.css.map b/apps/files/css/files.css.map index 84dcb9c9921..9ae2993928e 100644 --- a/apps/files/css/files.css.map +++ b/apps/files/css/files.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,4CAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAGD,6FACC,uDAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,uDAID,gBCtEC,yCDyED,iBCzEC,yCD4ED,oBC5EC,0CD+ED,yFC/EC,wCDqFD,uBCrFC,yCDwFD,2BCxFC,2CD2FD,mBC3FC,yCD8FD,2BC9FC,4CDiGD,wBCjGC,0CDoGD,4BCpGC,4CDwGD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,4CAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,iDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,2DASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCtEC,yCDyED,iBCzEC,yCD4ED,oBC5EC,0CD+ED,yFC/EC,wCDqFD,uBCrFC,yCDwFD,2BCxFC,2CD2FD,mBC3FC,yCD8FD,2BC9FC,4CDiGD,wBCjGC,0CDoGD,4BCpGC,4CDwGD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"}
\ No newline at end of file diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss index 67c8adff897..6a1a8632ef8 100644 --- a/apps/files/css/files.scss +++ b/apps/files/css/files.scss @@ -23,7 +23,7 @@ background-color: var(--color-background-hover); } .actions .button a:active { - background-color: var(--color-primary-light); + background-color: var(--color-primary-element-light); } .actions.creatable { @@ -117,7 +117,7 @@ } .file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover { - background-color: var(--color-primary-light) !important; + background-color: var(--color-primary-element-light) !important; } .app-files #app-content.dir-drop { @@ -129,7 +129,7 @@ } .app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{ - background-color: var(--color-primary-light) !important; + background-color: var(--color-primary-element-light) !important; } /* icons for sidebar */ @@ -202,7 +202,7 @@ table tr.mouseOver td { .files-filestable tbody tr.highlighted .name:focus, .files-filestable tbody tr.selected, .files-filestable tbody tr.searchresult { - background-color: var(--color-primary-light); + background-color: var(--color-primary-element-light); } tbody a { color: var(--color-main-text); } @@ -551,7 +551,7 @@ table td.selection { background-color: var(--color-background-hover); border-radius: var(--border-radius-pill); outline: none !important; - border: 2px solid var(--color-primary) !important; + border: 2px solid var(--color-primary-element) !important; padding: 14px; } } @@ -1303,7 +1303,7 @@ table.dragshadow td.size { &:focus-visible, #showgridview:focus-visible + & { - box-shadow: inset 0 0 0 2px var(--color-primary) !important; + box-shadow: inset 0 0 0 2px var(--color-primary-element) !important; } } diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css index 75615a7c34d..fc9081859de 100644 --- a/apps/files/css/merged.css +++ b/apps/files/css/merged.css @@ -1 +1 @@ -.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px)}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */ +.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px)}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-6px;right:-6px;line-height:100%;text-align:center}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{padding:14px;left:auto;top:-22px;right:-22px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;width:44px;height:44px;z-index:10;background:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */ diff --git a/apps/files/css/merged.css.map b/apps/files/css/merged.css.map index 5b260ebdcd4..fdfc2d8db5b 100644 --- a/apps/files/css/merged.css.map +++ b/apps/files/css/merged.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,4CAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAGD,6FACC,uDAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,uDAID,gBCtEC,yCDyED,iBCzEC,yCD4ED,oBC5EC,0CD+ED,yFC/EC,wCDqFD,uBCrFC,yCDwFD,2BCxFC,2CD2FD,mBC3FC,yCD8FD,2BC9FC,4CDiGD,wBCjGC,0CDoGD,4BCpGC,4CDwGD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,4CAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,iDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,2DASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cEn1CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,sCAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,gCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCtEC,yCDyED,iBCzEC,yCD4ED,oBC5EC,0CD+ED,yFC/EC,wCDqFD,uBCrFC,yCDwFD,2BCxFC,2CD2FD,mBC3FC,yCD8FD,2BC9FC,4CDiGD,wBCjGC,0CDoGD,4BCpGC,4CDwGD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,QA1EK,KA2EL,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAzJK,KA0JL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WACA,YACA,WACA,yBAEA,kJACC,WACA,YACA,oBACA,QA7NO,KA8NP,kKACC,SACA,MAhOM,KAiON,OAjOM,KAuOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cEn1CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"}
\ No newline at end of file diff --git a/apps/files/css/upload.css b/apps/files/css/upload.css index ad443ad788c..458f6b33b34 100644 --- a/apps/files/css/upload.css +++ b/apps/files/css/upload.css @@ -1 +1 @@ -#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}/*# sourceMappingURL=upload.css.map */ +#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}/*# sourceMappingURL=upload.css.map */ diff --git a/apps/files/css/upload.css.map b/apps/files/css/upload.css.map index ca3c7a1e2fe..59585e0f790 100644 --- a/apps/files/css/upload.css.map +++ b/apps/files/css/upload.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["upload.scss"],"names":[],"mappings":"AAAA,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,sCAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,gCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA","file":"upload.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["upload.scss"],"names":[],"mappings":"AAAA,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA","file":"upload.css"}
\ No newline at end of file diff --git a/apps/files/css/upload.scss b/apps/files/css/upload.scss index 88207e0a844..a8f02e9122c 100644 --- a/apps/files/css/upload.scss +++ b/apps/files/css/upload.scss @@ -58,7 +58,7 @@ left: -1px; position: absolute; overflow: hidden; - background-color: var(--color-primary); + background-color: var(--color-primary-element); } #uploadprogressbar .label { top: 8px; @@ -68,7 +68,7 @@ font-weight: normal; } #uploadprogressbar .label.inner { - color: var(--color-primary-text); + color: var(--color-primary-element-text); position: absolute; display: block; width: 200px; diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index 714dad570cd..1db36f47648 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -109,6 +109,8 @@ OC.L10N.register( "Create new folder" : "Utwórz nowy katalog", "Upload file" : "Wyślij plik", "Recent" : "Ostatnie", + "This file has the tag {tag}" : "Ten plik posiada etykietę {tag}", + "This file has the tags {firstTags} and {lastTag}" : "Ten plik posiada etykiety {firstTags} i {lastTag}", "Not favorited" : "Wyłączone z ulubionych", "Remove from favorites" : "Usuń z ulubionych", "Add to favorites" : "Dodaj do ulubionych", @@ -191,6 +193,7 @@ OC.L10N.register( "Choose file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia", "Change" : "Zmień", "New owner" : "Nowy właściciel", + "Search for an account" : "Wyszukaj konto", "Choose a file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia", "Transfer" : "Przenieś", "Transfer {path} to {userid}" : "Przenieś {path} do {userid}", @@ -228,6 +231,7 @@ OC.L10N.register( "Delete permanently" : "Usuń bezpowrotnie", "Set up templates folder" : "Skonfiguruj katalog szablonów", "Templates" : "Szablony", + "Create new templates folder" : "Stwórz nowy folder z szablonami", "Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów", "Toggle %1$s sublist" : "Przełącz podlistę %1$s", "Toggle grid view" : "Przełącz widok siatki", diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 601571ee736..7db3cc9c072 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -107,6 +107,8 @@ "Create new folder" : "Utwórz nowy katalog", "Upload file" : "Wyślij plik", "Recent" : "Ostatnie", + "This file has the tag {tag}" : "Ten plik posiada etykietę {tag}", + "This file has the tags {firstTags} and {lastTag}" : "Ten plik posiada etykiety {firstTags} i {lastTag}", "Not favorited" : "Wyłączone z ulubionych", "Remove from favorites" : "Usuń z ulubionych", "Add to favorites" : "Dodaj do ulubionych", @@ -189,6 +191,7 @@ "Choose file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia", "Change" : "Zmień", "New owner" : "Nowy właściciel", + "Search for an account" : "Wyszukaj konto", "Choose a file or folder to transfer" : "Wybierz plik lub katalog do przeniesienia", "Transfer" : "Przenieś", "Transfer {path} to {userid}" : "Przenieś {path} do {userid}", @@ -226,6 +229,7 @@ "Delete permanently" : "Usuń bezpowrotnie", "Set up templates folder" : "Skonfiguruj katalog szablonów", "Templates" : "Szablony", + "Create new templates folder" : "Stwórz nowy folder z szablonami", "Unable to initialize the templates directory" : "Nie można zainicjować katalogu szablonów", "Toggle %1$s sublist" : "Przełącz podlistę %1$s", "Toggle grid view" : "Przełącz widok siatki", diff --git a/apps/files/src/components/TemplatePreview.vue b/apps/files/src/components/TemplatePreview.vue index 832e4d9dda2..9b7827e1ebe 100644 --- a/apps/files/src/components/TemplatePreview.vue +++ b/apps/files/src/components/TemplatePreview.vue @@ -182,7 +182,7 @@ export default { border-radius: var(--border-radius-large); input:checked + label > & { - border-color: var(--color-primary); + border-color: var(--color-primary-element); } &--failed { diff --git a/apps/files_external/3rdparty/autoload.php b/apps/files_external/3rdparty/autoload.php index 28026e9da6b..d3359ad45d9 100644 --- a/apps/files_external/3rdparty/autoload.php +++ b/apps/files_external/3rdparty/autoload.php @@ -3,8 +3,21 @@ // autoload.php @generated by Composer if (PHP_VERSION_ID < 50600) { - echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; - exit(1); + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, $err); + } elseif (!headers_sent()) { + echo $err; + } + } + trigger_error( + $err, + E_USER_ERROR + ); } require_once __DIR__ . '/composer/autoload_real.php'; diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json index ff102e7c3ec..348e482c2c3 100644 --- a/apps/files_external/3rdparty/composer.json +++ b/apps/files_external/3rdparty/composer.json @@ -8,7 +8,7 @@ "classmap-authoritative": true }, "require": { - "icewind/streams": "0.7.4", - "icewind/smb": "3.5.4" + "icewind/smb": "3.5.4", + "icewind/streams": "0.7.7" } } diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock index a9b699e2c55..281fdef3e23 100644 --- a/apps/files_external/3rdparty/composer.lock +++ b/apps/files_external/3rdparty/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5d34e39627716fec1b5b11ab6a667e53", + "content-hash": "1419e286d2372dfbce44dd73ddbab2ff", "packages": [ { "name": "icewind/smb", @@ -55,16 +55,16 @@ }, { "name": "icewind/streams", - "version": "v0.7.4", + "version": "v0.7.7", "source": { "type": "git", "url": "https://github.com/icewind1991/Streams.git", - "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c" + "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/93bce472202d36d9808c30eaa52a1dc72b39e04c", - "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c", + "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", + "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", "shasum": "" }, "require": { @@ -94,9 +94,9 @@ "description": "A set of generic stream wrappers", "support": { "issues": "https://github.com/icewind1991/Streams/issues", - "source": "https://github.com/icewind1991/Streams/tree/v0.7.4" + "source": "https://github.com/icewind1991/Streams/tree/v0.7.7" }, - "time": "2021-03-12T15:48:22+00:00" + "time": "2023-03-16T14:52:25+00:00" } ], "packages-dev": [], diff --git a/apps/files_external/3rdparty/composer/ClassLoader.php b/apps/files_external/3rdparty/composer/ClassLoader.php index afef3fa2ad8..a72151c77c8 100644 --- a/apps/files_external/3rdparty/composer/ClassLoader.php +++ b/apps/files_external/3rdparty/composer/ClassLoader.php @@ -42,6 +42,9 @@ namespace Composer\Autoload; */ class ClassLoader { + /** @var \Closure(string):void */ + private static $includeFile; + /** @var ?string */ private $vendorDir; @@ -106,6 +109,7 @@ class ClassLoader public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); } /** @@ -425,7 +429,8 @@ class ClassLoader public function loadClass($class) { if ($file = $this->findFile($class)) { - includeFile($file); + $includeFile = self::$includeFile; + $includeFile($file); return true; } @@ -555,18 +560,26 @@ class ClassLoader return false; } -} -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - * @private - */ -function includeFile($file) -{ - include $file; + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } } diff --git a/apps/files_external/3rdparty/composer/InstalledVersions.php b/apps/files_external/3rdparty/composer/InstalledVersions.php index 41bc143c114..51e734a774b 100644 --- a/apps/files_external/3rdparty/composer/InstalledVersions.php +++ b/apps/files_external/3rdparty/composer/InstalledVersions.php @@ -28,7 +28,7 @@ class InstalledVersions { /** * @var mixed[]|null - * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null */ private static $installed; @@ -39,7 +39,7 @@ class InstalledVersions /** * @var array[] - * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}> + * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> */ private static $installedByVendor = array(); @@ -98,7 +98,7 @@ class InstalledVersions { foreach (self::getInstalled() as $installed) { if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; } } @@ -119,7 +119,7 @@ class InstalledVersions */ public static function satisfies(VersionParser $parser, $packageName, $constraint) { - $constraint = $parser->parseConstraints($constraint); + $constraint = $parser->parseConstraints((string) $constraint); $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); return $provided->matches($constraint); @@ -243,7 +243,7 @@ class InstalledVersions /** * @return array - * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string} + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} */ public static function getRootPackage() { @@ -257,7 +257,7 @@ class InstalledVersions * * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. * @return array[] - * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} */ public static function getRawData() { @@ -280,7 +280,7 @@ class InstalledVersions * Returns the raw data of all installed.php which are currently loaded for custom implementations * * @return array[] - * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}> + * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> */ public static function getAllRawData() { @@ -303,7 +303,7 @@ class InstalledVersions * @param array[] $data A vendor/composer/installed.php data set * @return void * - * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data */ public static function reload($data) { @@ -313,7 +313,7 @@ class InstalledVersions /** * @return array[] - * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}> + * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}> */ private static function getInstalled() { @@ -328,7 +328,9 @@ class InstalledVersions if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { - $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ + $required = require $vendorDir.'/composer/installed.php'; + $installed[] = self::$installedByVendor[$vendorDir] = $required; if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { self::$installed = $installed[count($installed) - 1]; } @@ -340,12 +342,17 @@ class InstalledVersions // only require the installed.php file if this file is loaded from its dumped location, // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = require __DIR__ . '/installed.php'; + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */ + $required = require __DIR__ . '/installed.php'; + self::$installed = $required; } else { self::$installed = array(); } } - $installed[] = self::$installed; + + if (self::$installed !== array()) { + $installed[] = self::$installed; + } return $installed; } diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json index bc6cdb8e6c9..9b66e649715 100644 --- a/apps/files_external/3rdparty/composer/installed.json +++ b/apps/files_external/3rdparty/composer/installed.json @@ -52,17 +52,17 @@ }, { "name": "icewind/streams", - "version": "v0.7.4", - "version_normalized": "0.7.4.0", + "version": "v0.7.7", + "version_normalized": "0.7.7.0", "source": { "type": "git", "url": "https://github.com/icewind1991/Streams.git", - "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c" + "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/93bce472202d36d9808c30eaa52a1dc72b39e04c", - "reference": "93bce472202d36d9808c30eaa52a1dc72b39e04c", + "url": "https://api.github.com/repos/icewind1991/Streams/zipball/64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", + "reference": "64200fd7cfcc7f550c3c695c48d8fd8bba97fecb", "shasum": "" }, "require": { @@ -73,7 +73,7 @@ "phpstan/phpstan": "^0.12", "phpunit/phpunit": "^9" }, - "time": "2021-03-12T15:48:22+00:00", + "time": "2023-03-16T14:52:25+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -94,7 +94,7 @@ "description": "A set of generic stream wrappers", "support": { "issues": "https://github.com/icewind1991/Streams/issues", - "source": "https://github.com/icewind1991/Streams/tree/v0.7.4" + "source": "https://github.com/icewind1991/Streams/tree/v0.7.7" }, "install-path": "../icewind/streams" } diff --git a/apps/files_external/3rdparty/composer/installed.php b/apps/files_external/3rdparty/composer/installed.php index 1adf5df7db3..65684203f3f 100644 --- a/apps/files_external/3rdparty/composer/installed.php +++ b/apps/files_external/3rdparty/composer/installed.php @@ -1,40 +1,40 @@ <?php return array( 'root' => array( + 'name' => 'files_external/3rdparty', 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '979f4033ca1cd0be7f255f028d4cc637a216440d', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '15d43dcc6226b92c0d51d643ef8c5ab1339cae48', - 'name' => 'files_external/3rdparty', 'dev' => true, ), 'versions' => array( 'files_external/3rdparty' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', + 'reference' => '979f4033ca1cd0be7f255f028d4cc637a216440d', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '15d43dcc6226b92c0d51d643ef8c5ab1339cae48', 'dev_requirement' => false, ), 'icewind/smb' => array( 'pretty_version' => 'v3.5.4', 'version' => '3.5.4.0', + 'reference' => '76995aa11c14e39bccd0f2370ed63b2f8f623a6d', 'type' => 'library', 'install_path' => __DIR__ . '/../icewind/smb', 'aliases' => array(), - 'reference' => '76995aa11c14e39bccd0f2370ed63b2f8f623a6d', 'dev_requirement' => false, ), 'icewind/streams' => array( - 'pretty_version' => 'v0.7.4', - 'version' => '0.7.4.0', + 'pretty_version' => 'v0.7.7', + 'version' => '0.7.7.0', + 'reference' => '64200fd7cfcc7f550c3c695c48d8fd8bba97fecb', 'type' => 'library', 'install_path' => __DIR__ . '/../icewind/streams', 'aliases' => array(), - 'reference' => '93bce472202d36d9808c30eaa52a1dc72b39e04c', 'dev_requirement' => false, ), ), diff --git a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php index 5d78b5a3db0..bc5e4356cda 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php +++ b/apps/files_external/3rdparty/icewind/streams/src/CallbackWrapper.php @@ -58,7 +58,7 @@ class CallbackWrapper extends Wrapper { * @param callable|null $close (optional) * @param callable|null $readDir (optional) * @param callable|null $preClose (optional) - * @return resource|bool + * @return resource|false * */ public static function wrap($source, $read = null, $write = null, $close = null, $readDir = null, $preClose = null) { diff --git a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php index b3346209aed..d5aee9c9c4b 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php +++ b/apps/files_external/3rdparty/icewind/streams/src/CountWrapper.php @@ -55,7 +55,7 @@ class CountWrapper extends Wrapper { * * @param resource $source * @param callable $callback - * @return resource|bool + * @return resource|false * * @throws \BadMethodCallException */ diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php index 80b27e8bab8..6a896c04b08 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php +++ b/apps/files_external/3rdparty/icewind/streams/src/DirectoryFilter.php @@ -46,7 +46,7 @@ class DirectoryFilter extends DirectoryWrapper { /** * @param resource $source * @param callable $filter - * @return resource|bool + * @return resource|false */ public static function wrap($source, callable $filter) { return self::wrapSource($source, [ diff --git a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php index 7f2f5c291c6..ff47096d2d7 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php +++ b/apps/files_external/3rdparty/icewind/streams/src/DirectoryWrapper.php @@ -23,7 +23,7 @@ class DirectoryWrapper extends Wrapper implements Directory { } /** - * @return string + * @return string|false */ public function dir_readdir() { return readdir($this->source); diff --git a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php index 616c2fe506f..5e0163092e8 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php +++ b/apps/files_external/3rdparty/icewind/streams/src/HashWrapper.php @@ -41,7 +41,7 @@ abstract class HashWrapper extends Wrapper { * @param resource $source * @param string $hash * @param callable $callback - * @return resource|bool + * @return resource|false * * @throws \BadMethodCallException */ diff --git a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php index a3872ddf474..7c6bd515c1e 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php +++ b/apps/files_external/3rdparty/icewind/streams/src/IteratorDirectory.php @@ -92,7 +92,7 @@ class IteratorDirectory extends WrapperHandler implements Directory { * Creates a directory handle from the provided array or iterator * * @param \Iterator | array $source - * @return resource|bool + * @return resource|false * * @throws \BadMethodCallException */ diff --git a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php index 03d0b202571..5b6348afe4f 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php +++ b/apps/files_external/3rdparty/icewind/streams/src/Wrapper.php @@ -44,7 +44,7 @@ abstract class Wrapper extends WrapperHandler implements File, Directory { public function stream_seek($offset, $whence = SEEK_SET) { $result = fseek($this->source, $offset, $whence); - return $result == 0 ? true : false; + return $result == 0; } public function stream_tell() { @@ -109,4 +109,23 @@ abstract class Wrapper extends WrapperHandler implements File, Directory { public function dir_rewinddir() { return rewind($this->source); } + + public function getSource() { + return $this->source; + } + + /** + * Retrieves header/metadata from the source stream. + * + * This is equivalent to calling `stream_get_meta_data` on the source stream except nested stream wrappers are handled transparently + * + * @return array + */ + public function getMetaData(): array { + $meta = stream_get_meta_data($this->source); + while (isset($meta['wrapper_data']) && $meta['wrapper_data'] instanceof Wrapper) { + $meta = $meta['wrapper_data']->getMetaData(); + } + return $meta; + } } diff --git a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php b/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php index 52a02feb19f..be408807ed3 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php +++ b/apps/files_external/3rdparty/icewind/streams/src/WrapperHandler.php @@ -55,9 +55,9 @@ class WrapperHandler { * @param resource|array $context * @param string|null $protocol deprecated, protocol is now automatically generated * @param string|null $class deprecated, class is now automatically generated - * @return bool|resource + * @return resource|false */ - protected static function wrapSource($source, $context = [], $protocol = null, $class = null) { + protected static function wrapSource($source, $context = [], $protocol = null, $class = null, $mode = 'r+') { if ($class === null) { $class = static::class; } @@ -72,7 +72,7 @@ class WrapperHandler { if (self::isDirectoryHandle($source)) { return opendir($protocol . '://', $context); } else { - return fopen($protocol . '://', 'r+', false, $context); + return fopen($protocol . '://', $mode, false, $context); } } finally { stream_wrapper_unregister($protocol); diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index 27bb6faac7d..ccde2f2a689 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -120,6 +120,7 @@ OC.L10N.register( "You cannot share to a Circle if the app is not enabled" : "Nie możesz udostępnić w Kręgach, jeśli aplikacja jest wyłączona", "Please specify a valid circle" : "Podaj prawidłowy krąg", "Sharing %s failed because the back end does not support room shares" : "Udostępnienie %s nie powiodło się, ponieważ zaplecze nie obsługuje udostępnień pokoju", + "Sharing %s failed because the back end does not support ScienceMesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępniania ScienceMesh", "Unknown share type" : "Nieznany typ udostępnienia", "Not a directory" : "Nie jest katalogiem", "Could not lock node" : "Nie można zablokować powiązania", @@ -225,6 +226,7 @@ OC.L10N.register( "Circle" : "Krąg", "Talk conversation" : "Rozmowa Talk", "Deck board" : "Tablica Deck", + "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", "Others with access" : "Inni z dostępem", "No other users with access found" : "Nie znaleziono innych użytkowników z dostępem", @@ -276,6 +278,7 @@ OC.L10N.register( "Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa.", "Toggle grid view" : "Przełącz widok siatki", "Sharing %s failed because the back end does not support sciencemesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępnień Science Mesh", + "Science Mesh" : "Science Mesh", "Error generating password from password_policy" : "Błąd podczas generowania hasła z password_policy" }, "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index f2502d85c38..c4037a32777 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -118,6 +118,7 @@ "You cannot share to a Circle if the app is not enabled" : "Nie możesz udostępnić w Kręgach, jeśli aplikacja jest wyłączona", "Please specify a valid circle" : "Podaj prawidłowy krąg", "Sharing %s failed because the back end does not support room shares" : "Udostępnienie %s nie powiodło się, ponieważ zaplecze nie obsługuje udostępnień pokoju", + "Sharing %s failed because the back end does not support ScienceMesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępniania ScienceMesh", "Unknown share type" : "Nieznany typ udostępnienia", "Not a directory" : "Nie jest katalogiem", "Could not lock node" : "Nie można zablokować powiązania", @@ -223,6 +224,7 @@ "Circle" : "Krąg", "Talk conversation" : "Rozmowa Talk", "Deck board" : "Tablica Deck", + "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", "Others with access" : "Inni z dostępem", "No other users with access found" : "Nie znaleziono innych użytkowników z dostępem", @@ -274,6 +276,7 @@ "Sorry, this link doesn’t seem to work anymore." : "Niestety, ten link już nie działa.", "Toggle grid view" : "Przełącz widok siatki", "Sharing %s failed because the back end does not support sciencemesh shares" : "Udostępnienie %s nie powiodło się, ponieważ oprogramowanie nie obsługuje udostępnień Science Mesh", + "Science Mesh" : "Science Mesh", "Error generating password from password_policy" : "Błąd podczas generowania hasła z password_policy" },"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index bf0e94f35c1..b3740d4097f 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -904,7 +904,7 @@ export default { } ::v-deep .avatar-link-share { - background-color: var(--color-primary); + background-color: var(--color-primary-element); } .sharing-entry__action--public-upload { diff --git a/apps/settings/css/settings.css b/apps/settings/css/settings.css index 99a5f8f094b..f9b8f3ed1be 100644 --- a/apps/settings/css/settings.css +++ b/apps/settings/css/settings.css @@ -1 +1 @@ -input#openid,input#webdav{width:20em}.clear{clear:both}.nav-icon-personal-settings{background-image:var(--icon-personal-dark)}.nav-icon-security{background-image:var(--icon-toggle-filelist-dark)}.nav-icon-clientsbox{background-image:var(--icon-change-dark)}.nav-icon-federated-cloud{background-image:var(--icon-share-dark)}.nav-icon-second-factor-backup-codes,.nav-icon-ssl-root-certificate{background-image:var(--icon-password-dark)}#personal-settings-avatar-container{display:inline-grid;grid-template-columns:1fr;grid-template-rows:2fr 1fr 2fr;vertical-align:top}.profile-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-show-container{width:100%}.personal-settings-setting-box .section{padding:10px 30px}.personal-settings-setting-box .section .headerbar-label{margin-bottom:0}.personal-settings-setting-box .section input[type=text],.personal-settings-setting-box .section input[type=email],.personal-settings-setting-box .section input[type=tel],.personal-settings-setting-box .section input[type=url]{width:100%}.personal-settings-setting-box-profile{grid-row:3/5}.personal-settings-setting-box-detail{grid-row:5}.personal-settings-setting-box-detail--without-profile{grid-row:3}select#timezone{width:100%}#personal-settings{display:grid;padding:20px;max-width:1700px;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-column-gap:10px}#personal-settings .section{padding:10px 10px;border:0}#personal-settings .section h2{margin-bottom:12px}#personal-settings .section h3>label{font-weight:bold}#personal-settings .personal-info{margin-right:10%;margin-bottom:12px;margin-top:12px}#personal-settings .personal-info[class^=icon-],#personal-settings .personal-info[class*=" icon-"]{background-position:0px 2px;padding-left:30px;opacity:.7}.development-notice{text-align:center}.development-notice a:not(.link-button){text-decoration:underline}.development-notice a:not(.link-button):hover{background-color:var(--color-primary-element-hover)}.link-button{display:inline-block;margin:16px;padding:14px 20px;background-color:var(--color-primary);color:#fff;border-radius:var(--border-radius-pill);border:1px solid var(--color-primary);box-shadow:0 2px 9px var(--color-box-shadow)}.link-button:active,.link-button:hover,.link-button:focus{color:var(--color-primary);background-color:var(--color-primary-text);border-color:var(--color-primary) !important}.link-button.icon-file{padding-left:48px;background-position:24px}.personal-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-settings-container:after{clear:both}.personal-settings-container>div h3{position:relative;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start;width:100%;align-items:center;gap:8px}.personal-settings-container>div h3>label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.personal-settings-container>div>form span[class^=icon-checkmark],.personal-settings-container>div>form span[class^=icon-error]{position:relative;right:8px;top:-28px;pointer-events:none;float:right}.personal-settings-container .verify{position:relative;left:100%;top:0;height:0}.personal-settings-container .verify img{padding:12px 7px 6px}.personal-settings-container .verify-action{cursor:pointer}.personal-settings-container input:disabled{background-color:#fff;color:#000;border:none;opacity:100}.verification-dialog{display:none;right:-9px;top:40px;width:275px}.verification-dialog p{padding:10px}.verification-dialog .verificationCode{font-family:monospace;display:block;overflow-wrap:break-word}.federation-menu{position:relative;cursor:pointer;width:44px;height:44px;padding:10px;margin:0;background:none;border:none}.federation-menu:hover,.federation-menu:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.federation-menu:hover .icon-federation-menu,.federation-menu:focus .icon-federation-menu{opacity:.8}.federation-menu .icon-federation-menu{padding-left:16px;background-size:16px;background-position:left center;opacity:.3;cursor:inherit}.federation-menu .icon-federation-menu .icon-triangle-s{display:inline-block;vertical-align:middle;cursor:inherit}.federation-menu .federationScopeMenu{top:44px}.federation-menu .federationScopeMenu.popovermenu .menuitem{font-size:12.8px;line-height:1.6em}.federation-menu .federationScopeMenu.popovermenu .menuitem .menuitem-text-detail{opacity:.75}.federation-menu .federationScopeMenu.popovermenu .menuitem.active{box-shadow:inset 2px 0 var(--color-primary)}.federation-menu .federationScopeMenu.popovermenu .menuitem.active .menuitem-text{font-weight:bold}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled{opacity:.5;cursor:default}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled *{cursor:default}.clientsbox img{height:60px}#sslCertificate tr.expired{background-color:rgba(255,0,0,.5)}#sslCertificate td{padding:5px}#displaynameerror,#displaynamechanged{display:none}input#identity{width:20em}#showWizard{display:inline-block}.msg.success{color:#fff;background-color:#47a447;padding:3px}.msg.error{color:#fff;background-color:#d2322d;padding:3px}table.nostyle label{margin-right:2em}table.nostyle td{padding:.2em 0}#security-password #passwordform{display:flex;flex-wrap:wrap;flex-direction:column;gap:1rem}#security-password #passwordform .input-control{display:flex;flex-wrap:wrap;flex-direction:column}#security-password #passwordform .input-control label{margin-bottom:.5rem}#security-password #passwordform #pass1,#security-password #passwordform .personal-show-container{flex-shrink:1;width:300px;min-width:150px}#security-password #passwordform .personal-show-container #pass2{position:relative;top:.5rem}#security-password #passwordform .personal-show-container .personal-show-label{top:34px !important;margin-right:0;margin-top:0 !important;right:3px}#security-password #passwordform #pass2{width:100%}#security-password #passwordform .password-state{display:inline-block}#security-password #passwordform .strengthify-wrapper{position:absolute;left:0;width:100%;border-radius:0 0 2px 2px;margin-top:5px;overflow:hidden;height:3px}#two-factor-auth h3{margin-top:24px}#two-factor-auth li>div{margin-left:20px}#two-factor-auth .two-factor-provider-settings-icon{width:16px;height:16px;vertical-align:sub;filter:var(--background-invert-if-dark)}.isgroup .groupname{width:85%;display:block;overflow:hidden;text-overflow:ellipsis}.isgroup.active .groupname{width:65%}li.active .delete,li.active .rename{display:block}.app-navigation-entry-utils .delete,.app-navigation-entry-utils .rename{display:none}#usersearchform{position:absolute;top:2px;right:0}#usersearchform input{width:150px}#usersearchform label{font-weight:bold}table.grid{width:100%}table.grid th{height:2em;color:#999;border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}table.grid td{border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}td.name,th.name{padding-left:.8em;min-width:5em;max-width:12em;text-overflow:ellipsis;overflow:hidden}td.password,th.password{padding-left:.8em}td.password>img,th.password>img{visibility:hidden}td.displayName>img,th.displayName>img{visibility:hidden}td.password,td.mailAddress,th.password,th.mailAddress{min-width:5em;max-width:12em;cursor:pointer}td.password span,td.mailAddress span,th.password span,th.mailAddress span{width:90%;display:inline-block;text-overflow:ellipsis;overflow:hidden}td.mailAddress,th.mailAddress{cursor:pointer}td.password>span,th.password>span{margin-right:1.2em;color:#c7c7c7}span.usersLastLoginTooltip{white-space:nowrap}#app-content>svg.app-filter{float:left;height:0;width:0}#app-category-app-bundles{margin-bottom:20px}.appinfo{margin:1em 40px}#app-navigation img{margin-bottom:-3px;margin-right:6px;width:16px}#app-navigation li span.no-icon{padding-left:32px}#app-navigation ul li.active>span.utils .delete,#app-navigation ul li.active>span.utils .rename{display:block}#app-navigation .appwarning{background:#fcc}#app-navigation.appwarning:hover{background:#fbb}#app-navigation .app-external{color:var(--color-text-maxcontrast)}span.version{margin-left:1em;margin-right:1em;color:var(--color-text-maxcontrast)}.app-version{color:var(--color-text-maxcontrast)}.app-level span{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);padding:3px 6px}.app-level a{padding:10px;margin:-6px;white-space:nowrap}.app-level .official{background-position:left center;background-position:5px center;padding-left:25px}.app-level .supported{border-color:var(--color-success);background-position:left center;background-position:5px center;padding-left:25px;color:var(--color-success)}.app-score{position:relative;top:4px;opacity:.5}.app-settings-content #searchresults{display:none}#apps-list.store .section{border:0}#apps-list.store .app-name{display:block;margin:5px 0}#apps-list.store .app-name,#apps-list.store .app-image *{cursor:pointer}#apps-list.store .app-summary{opacity:.7}#apps-list.store .app-image-icon .icon-settings-dark{width:100%;height:150px;background-size:45px;opacity:.5}#apps-list.store .app-score-image{height:14px}#apps-list.store .actions{margin-top:10px}#app-sidebar #app-details-view h2 .icon-settings-dark,#app-sidebar #app-details-view h2 svg{display:inline-block;width:16px;height:16px;margin-right:10px;opacity:.7}#app-sidebar #app-details-view .app-level{clear:right;width:100%}#app-sidebar #app-details-view .app-level .supported,#app-sidebar #app-details-view .app-level .official{vertical-align:top}#app-sidebar #app-details-view .app-level .app-score-image{float:right}#app-sidebar #app-details-view .app-author,#app-sidebar #app-details-view .app-licence{color:var(--color-text-maxcontrast)}#app-sidebar #app-details-view .app-dependencies{margin:10px 0}#app-sidebar #app-details-view .app-description p{margin:10px 0}#app-sidebar #app-details-view .close{position:absolute;top:0;right:0;padding:14px;opacity:.5;z-index:1;width:44px;height:44px}#app-sidebar #app-details-view .actions{display:flex;align-items:center}#app-sidebar #app-details-view .actions .app-groups{padding:5px}#app-sidebar #app-details-view .appslink{text-decoration:underline;margin-right:5px}#app-sidebar #app-details-view .app-level,#app-sidebar #app-details-view .actions,#app-sidebar #app-details-view .documentation,#app-sidebar #app-details-view .app-dependencies,#app-sidebar #app-details-view .app-description{margin:20px 0}@media only screen and (min-width: 1601px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1600px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1400px){.store .section{width:33%}.with-app-sidebar .store .section{width:50%}}@media only screen and (max-width: 900px){.store .section{width:50%}.with-app-sidebar .store .section{width:100%}}@media only screen and (max-width: 1024px){.store .section{width:50%}}@media only screen and (max-width: 480px){.store .section{width:100%}}@media only screen and (max-width: 900px){.apps-list.installed .app-version,.apps-list.installed .app-level{display:none !important}}@media only screen and (max-width: 500px){.apps-list.installed .app-groups{display:none !important}}.section{margin-bottom:0}.section:not(:last-child){border-bottom:1px solid var(--color-border)}.section h2{margin-bottom:22px}.section h2 .icon-info{padding:6px 20px;vertical-align:text-bottom;display:inline-block}.followupsection{display:block;padding:0 30px 30px 30px}.app-image{position:relative;height:150px;opacity:1;overflow:hidden}.app-name,.app-version,.app-score,.app-level{display:inline-block}.app-description-toggle-show,.app-description-toggle-hide{clear:both;padding:7px 0;cursor:pointer;opacity:.5}.app-description-container{clear:both;position:relative;top:7px}.app-description{clear:both}#app-category-1{margin-bottom:18px}#app-category-925{text-transform:capitalize}.app-dependencies{color:#ce3702}.missing-dependencies{list-style:initial;list-style-type:initial;list-style-position:inside}.apps-list{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list .section{cursor:pointer}.apps-list .app-list-move{transition:transform 1s}.apps-list #app-list-update-all{margin-left:10px}.apps-list .toolbar{height:60px;padding:8px;padding-left:60px;width:100%;background-color:var(--color-main-background);position:sticky;top:0;z-index:1;display:flex;align-items:center}.apps-list.installed{margin-bottom:100px}.apps-list.installed .apps-list-container{display:table;width:100%;height:auto;margin-top:60px}.apps-list.installed .section{display:table-row;padding:0;margin:0}.apps-list.installed .section>*{display:table-cell;height:initial;vertical-align:middle;float:none;border-bottom:1px solid var(--color-border);padding:6px;box-sizing:border-box}.apps-list.installed .section.selected{background-color:var(--color-background-dark)}.apps-list.installed .groups-enable{margin-top:0}.apps-list.installed .groups-enable label{margin-right:3px}.apps-list.installed .app-image{width:44px;height:auto;text-align:right}.apps-list.installed .app-image-icon svg,.apps-list.installed .app-image-icon .icon-settings-dark{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.apps-list.installed .actions{text-align:right}.apps-list.installed .actions .icon-loading-small{display:inline-block;top:4px;margin-right:10px}.apps-list:not(.installed) .app-image-icon svg{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.apps-list.hidden{display:none}.apps-list .section{position:relative;flex:0 0 auto}.apps-list .section h2.app-name{display:block;margin:8px 0}.apps-list .section:hover{background-color:var(--color-background-dark)}.apps-list .app-description p{margin:10px 0}.apps-list .app-description ul{list-style:disc}.apps-list .app-description ol{list-style:decimal}.apps-list .app-description ol ol,.apps-list .app-description ol ul{padding-left:15px}.apps-list .app-description>ul,.apps-list .app-description>ol{margin-left:19px}.apps-list .app-description ul ol,.apps-list .app-description ul ul{padding-left:15px}.apps-list .apps-header{display:table-row;position:relative}.apps-list .apps-header div{display:table-cell;height:70px}.apps-list .apps-header h2{display:table-cell;position:absolute;padding-left:6px;padding-top:15px}.apps-list .apps-header h2 .enable{position:relative;top:-1px;margin-left:12px}.apps-list .apps-header h2+.section{margin-top:50px}#apps-list-search .section h2{margin-bottom:0}#log{white-space:normal;margin-bottom:14px}#lessLog{display:none}table.grid td.date{white-space:nowrap}#log-section p{margin-top:20px}#security-warning-state-ok span,#security-warning-state-warning span,#security-warning-state-failure span,#security-warning-state-loading span{vertical-align:middle}#security-warning-state-ok span.message,#security-warning-state-warning span.message,#security-warning-state-failure span.message,#security-warning-state-loading span.message{padding:12px}#security-warning-state-ok span.icon,#security-warning-state-warning span.icon,#security-warning-state-failure span.icon,#security-warning-state-loading span.icon{width:32px;height:32px;background-position:center center;display:inline-block;border-radius:50%}#security-warning-state-ok span.icon-checkmark-white,#security-warning-state-warning span.icon-checkmark-white,#security-warning-state-failure span.icon-checkmark-white,#security-warning-state-loading span.icon-checkmark-white{background-color:var(--color-success)}#security-warning-state-ok span.icon-error-white,#security-warning-state-warning span.icon-error-white,#security-warning-state-failure span.icon-error-white,#security-warning-state-loading span.icon-error-white{background-color:var(--color-warning)}#security-warning-state-ok span.icon-close-white,#security-warning-state-warning span.icon-close-white,#security-warning-state-failure span.icon-close-white,#security-warning-state-loading span.icon-close-white{background-color:var(--color-error)}#shareAPI.loading>div{display:none}#shareAPI p{padding-bottom:.8em}#shareAPI input#shareapiExpireAfterNDays{width:40px}#shareAPI .indent{padding-left:28px}#shareAPI .double-indent{padding-left:56px}#shareAPI .nocheckbox{padding-left:20px}#shareApiDefaultPermissionsSection label{margin-right:20px}#fileSharingSettings h3{display:inline-block}#publicShareDisclaimerText{width:calc(100% - 23px);max-width:600px;height:150px;margin-left:20px;box-sizing:border-box}.icon-info{padding:11px 20px;vertical-align:text-bottom;opacity:.5}#two-factor-auth h2,#shareAPI h2,#mail_general_settings h2{display:inline-block}.mail_settings p label:first-child{display:inline-block;width:300px;text-align:right}.mail_settings p select:nth-child(2),.mail_settings p input:not([type=button]){width:143px}#mail_smtpport{width:60px}.cronlog{margin-left:10px}.status{display:inline-block;height:16px;width:16px;vertical-align:text-bottom}.status.success{border-radius:50%}#selectGroups select{box-sizing:border-box;display:inline-block;height:36px;padding:7px 10px}#log .log-message{word-break:break-all;min-width:180px}span.success{background-color:var(--color-success);border-radius:var(--border-radius)}span.error{background-color:var(--color-error)}span.indeterminate{background-color:var(--color-warning);border-radius:40% 0}doesnotexist:-o-prefocus,.strengthify-wrapper{left:185px;width:129px}.trusted-domain-warning{color:#fff;padding:5px;background:#ce3702;border-radius:5px;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}#postsetupchecks ul{margin-left:44px;list-style:disc}#postsetupchecks ul li{margin:10px 0}#postsetupchecks ul ul{list-style:circle}#postsetupchecks .loading{height:50px;background-position:left center}#postsetupchecks .errors,#postsetupchecks .errors a{color:var(--color-error)}#postsetupchecks .warnings,#postsetupchecks .warnings a{color:var(--color-warning)}#postsetupchecks .hint{margin:20px 0}#security-warning a{text-decoration:underline}#security-warning .extra-top-margin{margin-top:12px}#admin-tips li{list-style:initial}#admin-tips li a{display:inline-block;padding:3px 0}#warning{color:red}.settings-hint{margin-top:-12px;margin-bottom:12px;opacity:.7}#body-settings #app-content.user-list-grid{display:grid;grid-column-gap:20px;grid-auto-rows:minmax(60px, max-content)}#body-settings #app-content.user-list-grid .row{display:flex;display:grid;min-height:60px;grid-row-start:span 1;grid-gap:3px;align-items:center;grid-template-columns:44px minmax(190px, 1fr) minmax(160px, 1fr) minmax(160px, 1fr) minmax(240px, 1fr) minmax(240px, 1fr) minmax(160px, 1fr) minmax(240px, 1fr) repeat(auto-fit, minmax(160px, 1fr));border-bottom:var(--color-border) 1px solid}#body-settings #app-content.user-list-grid .row.disabled{opacity:.5}#body-settings #app-content.user-list-grid .row .name,#body-settings #app-content.user-list-grid .row .password,#body-settings #app-content.user-list-grid .row .mailAddress,#body-settings #app-content.user-list-grid .row .languages,#body-settings #app-content.user-list-grid .row .storageLocation,#body-settings #app-content.user-list-grid .row .userBackend,#body-settings #app-content.user-list-grid .row .lastLogin{min-width:160px}#body-settings #app-content.user-list-grid .row .name doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .name .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .password doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .password .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .mailAddress doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .mailAddress .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .languages doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .languages .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .storageLocation doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .storageLocation .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .userBackend doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .userBackend .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .lastLogin doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .lastLogin .strengthify-wrapper{color:var(--color-text-dark);vertical-align:baseline;text-overflow:ellipsis}#body-settings #app-content.user-list-grid .row:not(.row--editable).name,#body-settings #app-content.user-list-grid .row:not(.row--editable).password,#body-settings #app-content.user-list-grid .row:not(.row--editable).displayName,#body-settings #app-content.user-list-grid .row:not(.row--editable).mailAddress,#body-settings #app-content.user-list-grid .row:not(.row--editable).userBackend,#body-settings #app-content.user-list-grid .row:not(.row--editable).languages{overflow:hidden}#body-settings #app-content.user-list-grid .row:not(.row--editable) .groups,#body-settings #app-content.user-list-grid .row:not(.row--editable) .subadmins{overflow:auto;max-height:100%}#body-settings #app-content.user-list-grid .row .managers,#body-settings #app-content.user-list-grid .row .groups,#body-settings #app-content.user-list-grid .row .subadmins,#body-settings #app-content.user-list-grid .row .quota{min-width:160px}#body-settings #app-content.user-list-grid .row .managers .multiselect,#body-settings #app-content.user-list-grid .row .groups .multiselect,#body-settings #app-content.user-list-grid .row .subadmins .multiselect,#body-settings #app-content.user-list-grid .row .quota .multiselect{width:100%;color:var(--color-text-dark);vertical-align:baseline}#body-settings #app-content.user-list-grid .row .managers progress,#body-settings #app-content.user-list-grid .row .groups progress,#body-settings #app-content.user-list-grid .row .subadmins progress,#body-settings #app-content.user-list-grid .row .quota progress{max-width:95%}#body-settings #app-content.user-list-grid .row .obfuscated{width:400px;opacity:.7}#body-settings #app-content.user-list-grid .row .userActions{display:flex;justify-content:flex-end;right:0px;min-width:88px}#body-settings #app-content.user-list-grid .row .subtitle{color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row#grid-header{position:sticky;align-self:normal;background-color:var(--color-main-background);z-index:100;top:0}#body-settings #app-content.user-list-grid .row#grid-header.sticky{box-shadow:0 -2px 10px 1px var(--color-box-shadow)}#body-settings #app-content.user-list-grid .row#grid-header{color:var(--color-text-maxcontrast);border-bottom-width:thin}#body-settings #app-content.user-list-grid .row#grid-header #headerDisplayName,#body-settings #app-content.user-list-grid .row#grid-header #headerPassword,#body-settings #app-content.user-list-grid .row#grid-header #headerAddress,#body-settings #app-content.user-list-grid .row#grid-header #headerGroups,#body-settings #app-content.user-list-grid .row#grid-header #headerSubAdmins,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderUserBackend,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderLastLogin,#body-settings #app-content.user-list-grid .row#grid-header #headerQuota,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderStorageLocation,#body-settings #app-content.user-list-grid .row#grid-header #headerLanguages{padding-left:7px;text-transform:none;color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row:hover:not(#grid-header){box-shadow:5px 0 0 var(--color-primary-element) inset}#body-settings #app-content.user-list-grid .row>form{width:100%}#body-settings #app-content.user-list-grid .row>td,#body-settings #app-content.user-list-grid .row>form{grid-row:1;display:inline-flex;color:var(--color-text-lighter);flex-grow:1}#body-settings #app-content.user-list-grid .row>td>input:not(:focus):not(:active),#body-settings #app-content.user-list-grid .row>form>input:not(:focus):not(:active){border-color:rgba(0,0,0,0);cursor:pointer}#body-settings #app-content.user-list-grid .row>td>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>td>input:active+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:active+.icon-confirm{display:block !important}#body-settings #app-content.user-list-grid .row>td:not(.userActions)>input:not([type=submit]),#body-settings #app-content.user-list-grid .row>form:not(.userActions)>input:not([type=submit]){width:100%;min-width:0}#body-settings #app-content.user-list-grid .row>td.name,#body-settings #app-content.user-list-grid .row>form.name{word-break:break-all}#body-settings #app-content.user-list-grid .row>td.displayName>input,#body-settings #app-content.user-list-grid .row>td.mailAddress>input,#body-settings #app-content.user-list-grid .row>form.displayName>input,#body-settings #app-content.user-list-grid .row>form.mailAddress>input{text-overflow:ellipsis;flex-grow:1}#body-settings #app-content.user-list-grid .row>td.name,#body-settings #app-content.user-list-grid .row>td.userBackend,#body-settings #app-content.user-list-grid .row>form.name,#body-settings #app-content.user-list-grid .row>form.userBackend{line-height:1.3em;max-height:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#body-settings #app-content.user-list-grid .row>td.name .subtitle,#body-settings #app-content.user-list-grid .row>form.name .subtitle{color:var(--color-main-text)}#body-settings #app-content.user-list-grid .row>td.quota,#body-settings #app-content.user-list-grid .row>form.quota{display:flex;justify-content:left;white-space:nowrap;position:relative}#body-settings #app-content.user-list-grid .row>td.quota progress,#body-settings #app-content.user-list-grid .row>form.quota progress{width:150px;margin-top:35px;height:3px}#body-settings #app-content.user-list-grid .row>td .icon-confirm,#body-settings #app-content.user-list-grid .row>form .icon-confirm{flex:0 0 auto;cursor:pointer}#body-settings #app-content.user-list-grid .row>td .icon-confirm:not(:active),#body-settings #app-content.user-list-grid .row>form .icon-confirm:not(:active){display:none}#body-settings #app-content.user-list-grid .row>td.avatar,#body-settings #app-content.user-list-grid .row>form.avatar{height:32px;width:32px;margin:6px}#body-settings #app-content.user-list-grid .row>td.avatar img,#body-settings #app-content.user-list-grid .row>form.avatar img{display:block}#body-settings #app-content.user-list-grid .row>td.userActions,#body-settings #app-content.user-list-grid .row>form.userActions{display:flex;justify-content:flex-end}#body-settings #app-content.user-list-grid .row>td.userActions #newsubmit,#body-settings #app-content.user-list-grid .row>form.userActions #newsubmit{width:100%}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions{position:relative;display:flex;align-items:center;background-color:var(--color-main-background)}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more{width:44px;height:44px;opacity:.5;cursor:pointer}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:active,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:active{opacity:.7;background-color:var(--color-background-dark)}#body-settings #app-content.user-list-grid .row>td.userActions .feedback,#body-settings #app-content.user-list-grid .row>form.userActions .feedback{display:flex;align-items:center;white-space:nowrap;transition:opacity 200ms ease-in-out}#body-settings #app-content.user-list-grid .row>td.userActions .feedback .icon-checkmark,#body-settings #app-content.user-list-grid .row>form.userActions .feedback .icon-checkmark{opacity:.5;margin-right:5px}#body-settings #app-content.user-list-grid .row>td .multiselect.multiselect-vue,#body-settings #app-content.user-list-grid .row>form .multiselect.multiselect-vue{min-width:100%;width:100%}#body-settings #app-content.user-list-grid .infinite-loading-container{display:flex;align-items:center;justify-content:center;grid-row-start:span 4}#body-settings #app-content.user-list-grid .users-list-end{opacity:.5;user-select:none}.animated{animation:blink-animation 1s steps(5, start) 4}@keyframes blink-animation{to{opacity:.6}}@-webkit-keyframes blink-animation{to{opacity:1}}/*# sourceMappingURL=settings.css.map */ +input#openid,input#webdav{width:20em}.clear{clear:both}.nav-icon-personal-settings{background-image:var(--icon-personal-dark)}.nav-icon-security{background-image:var(--icon-toggle-filelist-dark)}.nav-icon-clientsbox{background-image:var(--icon-change-dark)}.nav-icon-federated-cloud{background-image:var(--icon-share-dark)}.nav-icon-second-factor-backup-codes,.nav-icon-ssl-root-certificate{background-image:var(--icon-password-dark)}#personal-settings-avatar-container{display:inline-grid;grid-template-columns:1fr;grid-template-rows:2fr 1fr 2fr;vertical-align:top}.profile-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-show-container{width:100%}.personal-settings-setting-box .section{padding:10px 30px}.personal-settings-setting-box .section .headerbar-label{margin-bottom:0}.personal-settings-setting-box .section input[type=text],.personal-settings-setting-box .section input[type=email],.personal-settings-setting-box .section input[type=tel],.personal-settings-setting-box .section input[type=url]{width:100%}.personal-settings-setting-box-profile{grid-row:3/5}.personal-settings-setting-box-detail{grid-row:5}.personal-settings-setting-box-detail--without-profile{grid-row:3}select#timezone{width:100%}#personal-settings{display:grid;padding:20px;max-width:1700px;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-column-gap:10px}#personal-settings .section{padding:10px 10px;border:0}#personal-settings .section h2{margin-bottom:12px}#personal-settings .section h3>label{font-weight:bold}#personal-settings .personal-info{margin-right:10%;margin-bottom:12px;margin-top:12px}#personal-settings .personal-info[class^=icon-],#personal-settings .personal-info[class*=" icon-"]{background-position:0px 2px;padding-left:30px;opacity:.7}.development-notice{text-align:center}.development-notice a:not(.link-button){text-decoration:underline}.development-notice a:not(.link-button):hover{background-color:var(--color-primary-element-hover)}.link-button{display:inline-block;margin:16px;padding:14px 20px;background-color:var(--color-primary-element);color:#fff;border-radius:var(--border-radius-pill);border:1px solid var(--color-primary-element);box-shadow:0 2px 9px var(--color-box-shadow)}.link-button:active,.link-button:hover,.link-button:focus{color:var(--color-primary-element);background-color:var(--color-primary-element-text);border-color:var(--color-primary-element) !important}.link-button.icon-file{padding-left:48px;background-position:24px}.personal-settings-container{display:inline-grid;grid-template-columns:1fr 1fr 1fr}.personal-settings-container:after{clear:both}.personal-settings-container>div h3{position:relative;display:inline-flex;flex-wrap:nowrap;justify-content:flex-start;width:100%;align-items:center;gap:8px}.personal-settings-container>div h3>label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.personal-settings-container>div>form span[class^=icon-checkmark],.personal-settings-container>div>form span[class^=icon-error]{position:relative;right:8px;top:-28px;pointer-events:none;float:right}.personal-settings-container .verify{position:relative;left:100%;top:0;height:0}.personal-settings-container .verify img{padding:12px 7px 6px}.personal-settings-container .verify-action{cursor:pointer}.personal-settings-container input:disabled{background-color:#fff;color:#000;border:none;opacity:100}.verification-dialog{display:none;right:-9px;top:40px;width:275px}.verification-dialog p{padding:10px}.verification-dialog .verificationCode{font-family:monospace;display:block;overflow-wrap:break-word}.federation-menu{position:relative;cursor:pointer;width:44px;height:44px;padding:10px;margin:0;background:none;border:none}.federation-menu:hover,.federation-menu:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.federation-menu:hover .icon-federation-menu,.federation-menu:focus .icon-federation-menu{opacity:.8}.federation-menu .icon-federation-menu{padding-left:16px;background-size:16px;background-position:left center;opacity:.3;cursor:inherit}.federation-menu .icon-federation-menu .icon-triangle-s{display:inline-block;vertical-align:middle;cursor:inherit}.federation-menu .federationScopeMenu{top:44px}.federation-menu .federationScopeMenu.popovermenu .menuitem{font-size:12.8px;line-height:1.6em}.federation-menu .federationScopeMenu.popovermenu .menuitem .menuitem-text-detail{opacity:.75}.federation-menu .federationScopeMenu.popovermenu .menuitem.active{box-shadow:inset 2px 0 var(--color-primary-element)}.federation-menu .federationScopeMenu.popovermenu .menuitem.active .menuitem-text{font-weight:bold}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled{opacity:.5;cursor:default}.federation-menu .federationScopeMenu.popovermenu .menuitem.disabled *{cursor:default}.clientsbox img{height:60px}#sslCertificate tr.expired{background-color:rgba(255,0,0,.5)}#sslCertificate td{padding:5px}#displaynameerror,#displaynamechanged{display:none}input#identity{width:20em}#showWizard{display:inline-block}.msg.success{color:#fff;background-color:#47a447;padding:3px}.msg.error{color:#fff;background-color:#d2322d;padding:3px}table.nostyle label{margin-right:2em}table.nostyle td{padding:.2em 0}#security-password #passwordform{display:flex;flex-wrap:wrap;flex-direction:column;gap:1rem}#security-password #passwordform .input-control{display:flex;flex-wrap:wrap;flex-direction:column}#security-password #passwordform .input-control label{margin-bottom:.5rem}#security-password #passwordform #pass1,#security-password #passwordform .personal-show-container{flex-shrink:1;width:300px;min-width:150px}#security-password #passwordform .personal-show-container #pass2{position:relative;top:.5rem}#security-password #passwordform .personal-show-container .personal-show-label{top:34px !important;margin-right:0;margin-top:0 !important;right:3px}#security-password #passwordform #pass2{width:100%}#security-password #passwordform .password-state{display:inline-block}#security-password #passwordform .strengthify-wrapper{position:absolute;left:0;width:100%;border-radius:0 0 2px 2px;margin-top:5px;overflow:hidden;height:3px}#two-factor-auth h3{margin-top:24px}#two-factor-auth li>div{margin-left:20px}#two-factor-auth .two-factor-provider-settings-icon{width:16px;height:16px;vertical-align:sub;filter:var(--background-invert-if-dark)}.isgroup .groupname{width:85%;display:block;overflow:hidden;text-overflow:ellipsis}.isgroup.active .groupname{width:65%}li.active .delete,li.active .rename{display:block}.app-navigation-entry-utils .delete,.app-navigation-entry-utils .rename{display:none}#usersearchform{position:absolute;top:2px;right:0}#usersearchform input{width:150px}#usersearchform label{font-weight:bold}table.grid{width:100%}table.grid th{height:2em;color:#999;border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}table.grid td{border-bottom:1px solid var(--color-border);padding:0 .5em;padding-left:.8em;text-align:left;font-weight:normal}td.name,th.name{padding-left:.8em;min-width:5em;max-width:12em;text-overflow:ellipsis;overflow:hidden}td.password,th.password{padding-left:.8em}td.password>img,th.password>img{visibility:hidden}td.displayName>img,th.displayName>img{visibility:hidden}td.password,td.mailAddress,th.password,th.mailAddress{min-width:5em;max-width:12em;cursor:pointer}td.password span,td.mailAddress span,th.password span,th.mailAddress span{width:90%;display:inline-block;text-overflow:ellipsis;overflow:hidden}td.mailAddress,th.mailAddress{cursor:pointer}td.password>span,th.password>span{margin-right:1.2em;color:#c7c7c7}span.usersLastLoginTooltip{white-space:nowrap}#app-content>svg.app-filter{float:left;height:0;width:0}#app-category-app-bundles{margin-bottom:20px}.appinfo{margin:1em 40px}#app-navigation img{margin-bottom:-3px;margin-right:6px;width:16px}#app-navigation li span.no-icon{padding-left:32px}#app-navigation ul li.active>span.utils .delete,#app-navigation ul li.active>span.utils .rename{display:block}#app-navigation .appwarning{background:#fcc}#app-navigation.appwarning:hover{background:#fbb}#app-navigation .app-external{color:var(--color-text-maxcontrast)}span.version{margin-left:1em;margin-right:1em;color:var(--color-text-maxcontrast)}.app-version{color:var(--color-text-maxcontrast)}.app-level span{color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0);border:1px solid var(--color-text-maxcontrast);border-radius:var(--border-radius);padding:3px 6px}.app-level a{padding:10px;margin:-6px;white-space:nowrap}.app-level .official{background-position:left center;background-position:5px center;padding-left:25px}.app-level .supported{border-color:var(--color-success);background-position:left center;background-position:5px center;padding-left:25px;color:var(--color-success)}.app-score{position:relative;top:4px;opacity:.5}.app-settings-content #searchresults{display:none}#apps-list.store .section{border:0}#apps-list.store .app-name{display:block;margin:5px 0}#apps-list.store .app-name,#apps-list.store .app-image *{cursor:pointer}#apps-list.store .app-summary{opacity:.7}#apps-list.store .app-image-icon .icon-settings-dark{width:100%;height:150px;background-size:45px;opacity:.5}#apps-list.store .app-score-image{height:14px}#apps-list.store .actions{margin-top:10px}#app-sidebar #app-details-view h2 .icon-settings-dark,#app-sidebar #app-details-view h2 svg{display:inline-block;width:16px;height:16px;margin-right:10px;opacity:.7}#app-sidebar #app-details-view .app-level{clear:right;width:100%}#app-sidebar #app-details-view .app-level .supported,#app-sidebar #app-details-view .app-level .official{vertical-align:top}#app-sidebar #app-details-view .app-level .app-score-image{float:right}#app-sidebar #app-details-view .app-author,#app-sidebar #app-details-view .app-licence{color:var(--color-text-maxcontrast)}#app-sidebar #app-details-view .app-dependencies{margin:10px 0}#app-sidebar #app-details-view .app-description p{margin:10px 0}#app-sidebar #app-details-view .close{position:absolute;top:0;right:0;padding:14px;opacity:.5;z-index:1;width:44px;height:44px}#app-sidebar #app-details-view .actions{display:flex;align-items:center}#app-sidebar #app-details-view .actions .app-groups{padding:5px}#app-sidebar #app-details-view .appslink{text-decoration:underline;margin-right:5px}#app-sidebar #app-details-view .app-level,#app-sidebar #app-details-view .actions,#app-sidebar #app-details-view .documentation,#app-sidebar #app-details-view .app-dependencies,#app-sidebar #app-details-view .app-description{margin:20px 0}@media only screen and (min-width: 1601px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1600px){.store .section{width:25%}.with-app-sidebar .store .section{width:33%}}@media only screen and (max-width: 1400px){.store .section{width:33%}.with-app-sidebar .store .section{width:50%}}@media only screen and (max-width: 900px){.store .section{width:50%}.with-app-sidebar .store .section{width:100%}}@media only screen and (max-width: 1024px){.store .section{width:50%}}@media only screen and (max-width: 480px){.store .section{width:100%}}@media only screen and (max-width: 900px){.apps-list.installed .app-version,.apps-list.installed .app-level{display:none !important}}@media only screen and (max-width: 500px){.apps-list.installed .app-groups{display:none !important}}.section{margin-bottom:0}.section:not(:last-child){border-bottom:1px solid var(--color-border)}.section h2{margin-bottom:22px}.section h2 .icon-info{padding:6px 20px;vertical-align:text-bottom;display:inline-block}.followupsection{display:block;padding:0 30px 30px 30px}.app-image{position:relative;height:150px;opacity:1;overflow:hidden}.app-name,.app-version,.app-score,.app-level{display:inline-block}.app-description-toggle-show,.app-description-toggle-hide{clear:both;padding:7px 0;cursor:pointer;opacity:.5}.app-description-container{clear:both;position:relative;top:7px}.app-description{clear:both}#app-category-1{margin-bottom:18px}#app-category-925{text-transform:capitalize}.app-dependencies{color:#ce3702}.missing-dependencies{list-style:initial;list-style-type:initial;list-style-position:inside}.apps-list{display:flex;flex-wrap:wrap;align-content:flex-start}.apps-list .section{cursor:pointer}.apps-list .app-list-move{transition:transform 1s}.apps-list #app-list-update-all{margin-left:10px}.apps-list .toolbar{height:60px;padding:8px;padding-left:60px;width:100%;background-color:var(--color-main-background);position:sticky;top:0;z-index:1;display:flex;align-items:center}.apps-list.installed{margin-bottom:100px}.apps-list.installed .apps-list-container{display:table;width:100%;height:auto;margin-top:60px}.apps-list.installed .section{display:table-row;padding:0;margin:0}.apps-list.installed .section>*{display:table-cell;height:initial;vertical-align:middle;float:none;border-bottom:1px solid var(--color-border);padding:6px;box-sizing:border-box}.apps-list.installed .section.selected{background-color:var(--color-background-dark)}.apps-list.installed .groups-enable{margin-top:0}.apps-list.installed .groups-enable label{margin-right:3px}.apps-list.installed .app-image{width:44px;height:auto;text-align:right}.apps-list.installed .app-image-icon svg,.apps-list.installed .app-image-icon .icon-settings-dark{margin-top:5px;width:20px;height:20px;opacity:.5;background-size:cover;display:inline-block}.apps-list.installed .actions{text-align:right}.apps-list.installed .actions .icon-loading-small{display:inline-block;top:4px;margin-right:10px}.apps-list:not(.installed) .app-image-icon svg{position:absolute;bottom:43px;width:64px;height:64px;opacity:.1}.apps-list.hidden{display:none}.apps-list .section{position:relative;flex:0 0 auto}.apps-list .section h2.app-name{display:block;margin:8px 0}.apps-list .section:hover{background-color:var(--color-background-dark)}.apps-list .app-description p{margin:10px 0}.apps-list .app-description ul{list-style:disc}.apps-list .app-description ol{list-style:decimal}.apps-list .app-description ol ol,.apps-list .app-description ol ul{padding-left:15px}.apps-list .app-description>ul,.apps-list .app-description>ol{margin-left:19px}.apps-list .app-description ul ol,.apps-list .app-description ul ul{padding-left:15px}.apps-list .apps-header{display:table-row;position:relative}.apps-list .apps-header div{display:table-cell;height:70px}.apps-list .apps-header h2{display:table-cell;position:absolute;padding-left:6px;padding-top:15px}.apps-list .apps-header h2 .enable{position:relative;top:-1px;margin-left:12px}.apps-list .apps-header h2+.section{margin-top:50px}#apps-list-search .section h2{margin-bottom:0}#log{white-space:normal;margin-bottom:14px}#lessLog{display:none}table.grid td.date{white-space:nowrap}#log-section p{margin-top:20px}#security-warning-state-ok span,#security-warning-state-warning span,#security-warning-state-failure span,#security-warning-state-loading span{vertical-align:middle}#security-warning-state-ok span.message,#security-warning-state-warning span.message,#security-warning-state-failure span.message,#security-warning-state-loading span.message{padding:12px}#security-warning-state-ok span.icon,#security-warning-state-warning span.icon,#security-warning-state-failure span.icon,#security-warning-state-loading span.icon{width:32px;height:32px;background-position:center center;display:inline-block;border-radius:50%}#security-warning-state-ok span.icon-checkmark-white,#security-warning-state-warning span.icon-checkmark-white,#security-warning-state-failure span.icon-checkmark-white,#security-warning-state-loading span.icon-checkmark-white{background-color:var(--color-success)}#security-warning-state-ok span.icon-error-white,#security-warning-state-warning span.icon-error-white,#security-warning-state-failure span.icon-error-white,#security-warning-state-loading span.icon-error-white{background-color:var(--color-warning)}#security-warning-state-ok span.icon-close-white,#security-warning-state-warning span.icon-close-white,#security-warning-state-failure span.icon-close-white,#security-warning-state-loading span.icon-close-white{background-color:var(--color-error)}#shareAPI.loading>div{display:none}#shareAPI p{padding-bottom:.8em}#shareAPI input#shareapiExpireAfterNDays{width:40px}#shareAPI .indent{padding-left:28px}#shareAPI .double-indent{padding-left:56px}#shareAPI .nocheckbox{padding-left:20px}#shareApiDefaultPermissionsSection label{margin-right:20px}#fileSharingSettings h3{display:inline-block}#publicShareDisclaimerText{width:calc(100% - 23px);max-width:600px;height:150px;margin-left:20px;box-sizing:border-box}.icon-info{padding:11px 20px;vertical-align:text-bottom;opacity:.5}#two-factor-auth h2,#shareAPI h2,#mail_general_settings h2{display:inline-block}.mail_settings p label:first-child{display:inline-block;width:300px;text-align:right}.mail_settings p select:nth-child(2),.mail_settings p input:not([type=button]){width:143px}#mail_smtpport{width:60px}.cronlog{margin-left:10px}.status{display:inline-block;height:16px;width:16px;vertical-align:text-bottom}.status.success{border-radius:50%}#selectGroups select{box-sizing:border-box;display:inline-block;height:36px;padding:7px 10px}#log .log-message{word-break:break-all;min-width:180px}span.success{background-color:var(--color-success);border-radius:var(--border-radius)}span.error{background-color:var(--color-error)}span.indeterminate{background-color:var(--color-warning);border-radius:40% 0}doesnotexist:-o-prefocus,.strengthify-wrapper{left:185px;width:129px}.trusted-domain-warning{color:#fff;padding:5px;background:#ce3702;border-radius:5px;font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace}#postsetupchecks ul{margin-left:44px;list-style:disc}#postsetupchecks ul li{margin:10px 0}#postsetupchecks ul ul{list-style:circle}#postsetupchecks .loading{height:50px;background-position:left center}#postsetupchecks .errors,#postsetupchecks .errors a{color:var(--color-error)}#postsetupchecks .warnings,#postsetupchecks .warnings a{color:var(--color-warning)}#postsetupchecks .hint{margin:20px 0}#security-warning a{text-decoration:underline}#security-warning .extra-top-margin{margin-top:12px}#admin-tips li{list-style:initial}#admin-tips li a{display:inline-block;padding:3px 0}#warning{color:red}.settings-hint{margin-top:-12px;margin-bottom:12px;opacity:.7}#body-settings #app-content.user-list-grid{display:grid;grid-column-gap:20px;grid-auto-rows:minmax(60px, max-content)}#body-settings #app-content.user-list-grid .row{display:flex;display:grid;min-height:60px;grid-row-start:span 1;grid-gap:3px;align-items:center;grid-template-columns:44px minmax(190px, 1fr) minmax(160px, 1fr) minmax(160px, 1fr) minmax(240px, 1fr) minmax(240px, 1fr) minmax(160px, 1fr) minmax(240px, 1fr) repeat(auto-fit, minmax(160px, 1fr));border-bottom:var(--color-border) 1px solid}#body-settings #app-content.user-list-grid .row.disabled{opacity:.5}#body-settings #app-content.user-list-grid .row .name,#body-settings #app-content.user-list-grid .row .password,#body-settings #app-content.user-list-grid .row .mailAddress,#body-settings #app-content.user-list-grid .row .languages,#body-settings #app-content.user-list-grid .row .storageLocation,#body-settings #app-content.user-list-grid .row .userBackend,#body-settings #app-content.user-list-grid .row .lastLogin{min-width:160px}#body-settings #app-content.user-list-grid .row .name doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .name .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .password doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .password .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .mailAddress doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .mailAddress .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .languages doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .languages .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .storageLocation doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .storageLocation .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .userBackend doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .userBackend .strengthify-wrapper,#body-settings #app-content.user-list-grid .row .lastLogin doesnotexist:-o-prefocus,#body-settings #app-content.user-list-grid .row .lastLogin .strengthify-wrapper{color:var(--color-text-dark);vertical-align:baseline;text-overflow:ellipsis}#body-settings #app-content.user-list-grid .row:not(.row--editable).name,#body-settings #app-content.user-list-grid .row:not(.row--editable).password,#body-settings #app-content.user-list-grid .row:not(.row--editable).displayName,#body-settings #app-content.user-list-grid .row:not(.row--editable).mailAddress,#body-settings #app-content.user-list-grid .row:not(.row--editable).userBackend,#body-settings #app-content.user-list-grid .row:not(.row--editable).languages{overflow:hidden}#body-settings #app-content.user-list-grid .row:not(.row--editable) .groups,#body-settings #app-content.user-list-grid .row:not(.row--editable) .subadmins{overflow:auto;max-height:100%}#body-settings #app-content.user-list-grid .row .managers,#body-settings #app-content.user-list-grid .row .groups,#body-settings #app-content.user-list-grid .row .subadmins,#body-settings #app-content.user-list-grid .row .quota{min-width:160px}#body-settings #app-content.user-list-grid .row .managers .multiselect,#body-settings #app-content.user-list-grid .row .groups .multiselect,#body-settings #app-content.user-list-grid .row .subadmins .multiselect,#body-settings #app-content.user-list-grid .row .quota .multiselect{width:100%;color:var(--color-text-dark);vertical-align:baseline}#body-settings #app-content.user-list-grid .row .managers progress,#body-settings #app-content.user-list-grid .row .groups progress,#body-settings #app-content.user-list-grid .row .subadmins progress,#body-settings #app-content.user-list-grid .row .quota progress{max-width:95%}#body-settings #app-content.user-list-grid .row .obfuscated{width:400px;opacity:.7}#body-settings #app-content.user-list-grid .row .userActions{display:flex;justify-content:flex-end;right:0px;min-width:88px}#body-settings #app-content.user-list-grid .row .subtitle{color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row#grid-header{position:sticky;align-self:normal;background-color:var(--color-main-background);z-index:100;top:0}#body-settings #app-content.user-list-grid .row#grid-header.sticky{box-shadow:0 -2px 10px 1px var(--color-box-shadow)}#body-settings #app-content.user-list-grid .row#grid-header{color:var(--color-text-maxcontrast);border-bottom-width:thin}#body-settings #app-content.user-list-grid .row#grid-header #headerDisplayName,#body-settings #app-content.user-list-grid .row#grid-header #headerPassword,#body-settings #app-content.user-list-grid .row#grid-header #headerAddress,#body-settings #app-content.user-list-grid .row#grid-header #headerGroups,#body-settings #app-content.user-list-grid .row#grid-header #headerSubAdmins,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderUserBackend,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderLastLogin,#body-settings #app-content.user-list-grid .row#grid-header #headerQuota,#body-settings #app-content.user-list-grid .row#grid-header #theHeaderStorageLocation,#body-settings #app-content.user-list-grid .row#grid-header #headerLanguages{padding-left:7px;text-transform:none;color:var(--color-text-maxcontrast);vertical-align:baseline}#body-settings #app-content.user-list-grid .row:hover:not(#grid-header){box-shadow:5px 0 0 var(--color-primary-element) inset}#body-settings #app-content.user-list-grid .row>form{width:100%}#body-settings #app-content.user-list-grid .row>td,#body-settings #app-content.user-list-grid .row>form{grid-row:1;display:inline-flex;color:var(--color-text-lighter);flex-grow:1}#body-settings #app-content.user-list-grid .row>td>input:not(:focus):not(:active),#body-settings #app-content.user-list-grid .row>form>input:not(:focus):not(:active){border-color:rgba(0,0,0,0);cursor:pointer}#body-settings #app-content.user-list-grid .row>td>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>td>input:active+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:focus+.icon-confirm,#body-settings #app-content.user-list-grid .row>form>input:active+.icon-confirm{display:block !important}#body-settings #app-content.user-list-grid .row>td:not(.userActions)>input:not([type=submit]),#body-settings #app-content.user-list-grid .row>form:not(.userActions)>input:not([type=submit]){width:100%;min-width:0}#body-settings #app-content.user-list-grid .row>td.name,#body-settings #app-content.user-list-grid .row>form.name{word-break:break-all}#body-settings #app-content.user-list-grid .row>td.displayName>input,#body-settings #app-content.user-list-grid .row>td.mailAddress>input,#body-settings #app-content.user-list-grid .row>form.displayName>input,#body-settings #app-content.user-list-grid .row>form.mailAddress>input{text-overflow:ellipsis;flex-grow:1}#body-settings #app-content.user-list-grid .row>td.name,#body-settings #app-content.user-list-grid .row>td.userBackend,#body-settings #app-content.user-list-grid .row>form.name,#body-settings #app-content.user-list-grid .row>form.userBackend{line-height:1.3em;max-height:100%;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}#body-settings #app-content.user-list-grid .row>td.name .subtitle,#body-settings #app-content.user-list-grid .row>form.name .subtitle{color:var(--color-main-text)}#body-settings #app-content.user-list-grid .row>td.quota,#body-settings #app-content.user-list-grid .row>form.quota{display:flex;justify-content:left;white-space:nowrap;position:relative}#body-settings #app-content.user-list-grid .row>td.quota progress,#body-settings #app-content.user-list-grid .row>form.quota progress{width:150px;margin-top:35px;height:3px}#body-settings #app-content.user-list-grid .row>td .icon-confirm,#body-settings #app-content.user-list-grid .row>form .icon-confirm{flex:0 0 auto;cursor:pointer}#body-settings #app-content.user-list-grid .row>td .icon-confirm:not(:active),#body-settings #app-content.user-list-grid .row>form .icon-confirm:not(:active){display:none}#body-settings #app-content.user-list-grid .row>td.avatar,#body-settings #app-content.user-list-grid .row>form.avatar{height:32px;width:32px;margin:6px}#body-settings #app-content.user-list-grid .row>td.avatar img,#body-settings #app-content.user-list-grid .row>form.avatar img{display:block}#body-settings #app-content.user-list-grid .row>td.userActions,#body-settings #app-content.user-list-grid .row>form.userActions{display:flex;justify-content:flex-end}#body-settings #app-content.user-list-grid .row>td.userActions #newsubmit,#body-settings #app-content.user-list-grid .row>form.userActions #newsubmit{width:100%}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions{position:relative;display:flex;align-items:center;background-color:var(--color-main-background)}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more{width:44px;height:44px;opacity:.5;cursor:pointer}#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>td.userActions .toggleUserActions .icon-more:active,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:focus,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:hover,#body-settings #app-content.user-list-grid .row>form.userActions .toggleUserActions .icon-more:active{opacity:.7;background-color:var(--color-background-dark)}#body-settings #app-content.user-list-grid .row>td.userActions .feedback,#body-settings #app-content.user-list-grid .row>form.userActions .feedback{display:flex;align-items:center;white-space:nowrap;transition:opacity 200ms ease-in-out}#body-settings #app-content.user-list-grid .row>td.userActions .feedback .icon-checkmark,#body-settings #app-content.user-list-grid .row>form.userActions .feedback .icon-checkmark{opacity:.5;margin-right:5px}#body-settings #app-content.user-list-grid .row>td .multiselect.multiselect-vue,#body-settings #app-content.user-list-grid .row>form .multiselect.multiselect-vue{min-width:100%;width:100%}#body-settings #app-content.user-list-grid .infinite-loading-container{display:flex;align-items:center;justify-content:center;grid-row-start:span 4}#body-settings #app-content.user-list-grid .users-list-end{opacity:.5;user-select:none}.animated{animation:blink-animation 1s steps(5, start) 4}@keyframes blink-animation{to{opacity:.6}}@-webkit-keyframes blink-animation{to{opacity:1}}/*# sourceMappingURL=settings.css.map */ diff --git a/apps/settings/css/settings.css.map b/apps/settings/css/settings.css.map index fa9d3fe3383..054592d26c3 100644 --- a/apps/settings/css/settings.css.map +++ b/apps/settings/css/settings.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAOC,0BACC,WAKF,OACC,WAID,4BC+CC,2CD3CD,mBC2CC,kDDvCD,qBCuCC,yCDnCD,0BCmCC,wCD/BD,oEC+BC,2CD3BD,oCACC,oBACA,0BACA,+BACA,mBAGD,4BACC,oBACA,kCAGD,yBACC,WAIA,wCACC,kBACA,yDACC,gBAIA,mOACC,WAKH,uCACC,aAGD,sCACC,WAED,uDACC,WAKD,gBACC,WAIF,mBACC,aACA,aACA,iBACA,4DACA,qBAEA,4BACC,kBACA,SAEA,+BACC,mBAIA,qCACC,iBAKH,kCACC,iBACA,mBACA,gBAGD,mGACC,4BACA,kBACA,WAMF,oBACC,kBACA,wCACC,0BACA,8CACC,oDAKH,aACC,qBACA,YACA,kBACA,sCACA,WACA,wCACA,sCACA,6CAEA,0DAGC,2BACA,2CACA,6CAGD,uBACC,kBACA,yBAIF,6BACC,oBACA,kCAEA,mCACC,WAIA,oCACC,kBACA,oBACA,iBACA,2BACA,WACA,mBACA,QAEA,0CACC,mBACA,uBACA,gBAKD,gIACC,kBACA,UACA,UACA,oBACA,YAKH,qCACC,kBACA,UACA,MACA,SAEA,yCACC,qBAIF,4CACC,eAGD,4CACC,sBACA,WACA,YACA,YAMF,qBACC,aACA,WACA,SACA,YAEA,uBACC,aAGD,uCACC,sBACA,cACA,yBAIF,iBACC,kBACA,eACA,WACA,YACA,aACA,SACA,gBACA,YAEA,8CAEC,+CACA,wCAEA,0FACC,WAIF,uCACC,kBACA,qBACA,gCACA,WACA,eAEA,wDACC,qBACA,sBACA,eAIF,sCACC,SAGC,4DAEC,iBACA,kBAEA,kFACC,YAGD,mEACC,4CAEA,kFACC,iBAIF,qEACC,WAEA,eAEA,uEACC,eAQN,gBACC,YAIA,2BACC,kCAGD,mBACC,YAIF,sCAEC,aAGD,eACC,WAGD,YACC,qBAIA,aACC,WACA,yBACA,YAGD,WACC,WACA,yBACA,YAMD,oBACC,iBAGD,iBACC,eAKD,iCACC,aACA,eACA,sBACA,SACA,gDACC,aACA,eACA,sBACA,sDACC,oBAIF,kGACC,cACA,YACA,gBAKA,iEACC,kBACA,UAED,+EACC,oBACA,eACA,wBACA,UAIF,wCACC,WAGD,iDACC,qBAGD,sDACC,kBACA,OACA,WACA,0BACA,eACA,gBACA,WAQF,oBACC,gBAGD,wBACC,iBAGD,oDACC,WACA,YACA,mBACA,wCAOD,oBACC,UACA,cACA,gBACA,uBAGD,2BACC,UAKD,oCAEC,cAKD,wEAEC,aAIF,gBACC,kBACA,QACA,QAEA,sBACC,YAGD,sBACC,iBAKF,WACC,WAEA,cACC,WACA,WACA,4CACA,eACA,kBACA,gBACA,mBAGD,cACC,4CACA,eACA,kBACA,gBACA,mBAKD,gBACC,kBACA,cACA,eACA,uBACA,gBAGD,wBACC,kBAEA,gCACC,kBAIF,sCACC,kBAGD,sDAEC,cACA,eACA,eAEA,0EACC,UACA,qBACA,uBACA,gBAIF,8BACC,eAGD,kCACC,mBACA,cAIF,2BACC,mBAID,4BACC,WACA,SACA,QAGD,0BACC,mBAGD,SACC,gBAKA,oBACC,mBACA,iBACA,WAGD,gCACC,kBAIA,gGACC,cAIF,4BACC,gBAGD,iCACC,gBAGD,8BACC,oCAIF,aACC,gBACA,iBACA,oCAGD,aACC,oCAIA,gBACC,oCACA,+BACA,+CACA,mCACA,gBAGD,aACC,aACA,YACA,mBAGD,qBACC,gCACA,+BACA,kBAGD,sBACC,kCACA,gCACA,+BACA,kBACA,2BAIF,WACC,kBACA,QACA,WAIA,qCACC,aAMD,0BACC,SAGD,2BACC,cACA,aAGD,yDACC,eAGD,8BACC,WAGD,qDACC,WACA,aACA,qBACA,WAGD,kCACC,YAGD,0BACC,gBAMA,4FAEC,qBACA,WACA,YACA,kBACA,WAIF,0CACC,YACA,WAEA,yGAEC,mBAGD,2DACC,YAIF,uFACC,oCAGD,iDACC,cAGD,kDACC,cAGD,sCACC,kBACA,MACA,QACA,aACA,WACA,UACA,WACA,YAGD,wCACC,aACA,mBAEA,oDACC,YAIF,yCACC,0BACA,iBAGD,iOAKC,cAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,0CACC,gBACC,UAED,kCACC,YAIF,2CACC,gBACC,WAIF,0CACC,gBACC,YAKF,0CAEE,kEACC,yBAKH,0CACC,iCACC,yBAIF,SACC,gBAEA,0BACC,4CAID,YACC,mBAEA,uBACC,iBACA,2BACA,qBAKH,iBACC,cACA,yBAGD,WACC,kBACA,aACA,UACA,gBAGD,6CACC,qBAGD,0DACC,WACA,cACA,eACA,WAGD,2BACC,WACA,kBACA,QAGD,iBACC,WAGD,gBACC,mBAKD,kBACC,0BAGD,kBACC,cAGD,sBACC,mBACA,wBACA,2BAGD,WAyGC,aACA,eACA,yBAvGA,oBACC,eAGD,0BACC,wBAGD,gCACC,iBAGD,oBACC,OAfgB,KAgBhB,QAjBiB,IAmBjB,aAlBgB,KAmBhB,WACA,8CACA,gBACA,MACA,UACA,aACA,mBAGD,qBAQC,oBAPA,0CACC,cACA,WACA,YACA,WAjCe,KAsChB,8BACC,kBACA,UACA,SAEA,gCACC,mBACA,eACA,sBACA,WACA,4CACA,YACA,sBAGD,uCACC,8CAKF,oCACC,aAEA,0CACC,iBAIF,gCACC,WACA,YACA,iBAGD,kGAEC,eACA,WACA,YACA,WACA,sBACA,qBAGD,8BACC,iBAEA,kDACC,qBACA,QACA,kBAKH,+CACC,kBACA,YAEA,WACA,YACA,WAOD,kBACC,aAGD,oBACC,kBACA,cAEA,gCACC,cACA,aAGD,0BACC,8CAKD,8BACC,cAGD,+BACC,gBAGD,+BACC,mBAEA,oEACC,kBAKD,8DACC,iBAKD,oEACC,kBAMH,wBACC,kBACA,kBAEA,4BACC,mBACA,YAGD,2BACC,mBACA,kBACA,iBACA,iBAEA,mCACC,kBACA,SACA,iBAGD,oCACC,gBAQF,8BACC,gBAMH,KACC,mBACA,mBAGD,SACC,aAGD,mBACC,mBAGD,eACC,gBAOA,+IACC,sBAEA,+KACC,aAGD,mKACC,WACA,YACA,kCACA,qBACA,kBAGD,mOACC,sCAGD,mNACC,sCAGD,mNACC,oCAMF,sBACC,aAGD,YACC,oBAGD,yCACC,WAGD,kBACC,kBAGD,yBACC,kBAGD,sBACC,kBAIF,yCACC,kBAGD,wBACC,qBAGD,2BACC,wBAEA,gBACA,aACA,iBACA,sBAKD,WACC,kBACA,2BACA,WAGD,2DAGC,qBAIA,mCACC,qBACA,YACA,iBAGD,+EAEC,YAIF,eACC,WAGD,SACC,iBAGD,QACC,qBACA,YACA,WACA,2BAEA,gBACC,kBAIF,qBACC,sBACA,qBACA,YACA,iBAGD,kBACC,qBACA,gBAIA,aACC,sCACA,mCAGD,WACC,oCAGD,mBACC,sCACA,oBAMF,8CACC,WACA,YAGD,wBACC,WACA,YACA,mBACA,kBACA,+DAIA,oBACC,iBACA,gBAEA,uBACC,cAGD,uBACC,kBAIF,0BACC,YACA,gCAGD,oDACC,yBAGD,wDACC,2BAGD,uBACC,cAKD,oBACC,0BAGD,oCACC,gBAIF,eACC,mBAEA,iBACC,qBACA,cAIF,SACC,UAGD,eACC,iBACA,mBACA,WASA,2CACC,aACA,qBACA,yCAEA,gDAGC,aACA,aACA,WAbgB,KAchB,sBACA,aACA,mBAGA,sBACE,+KASF,4CAEA,yDACC,WAID,iaAOC,UA1CkB,MA4ClB,ooCACC,6BACA,wBACA,uBAKD,odAMC,gBAMD,2JAEC,cACA,gBAIF,oOAIC,UA3EkB,MA6ElB,wRACC,WACA,6BACA,wBAGD,wQACC,cAIF,4DACC,YACA,WAGD,6DACC,aACA,yBACA,UACA,eAGD,0DACC,oCACA,wBAID,4DACC,gBACA,kBACA,8CACA,YACA,MAEA,mEACC,mDAIF,4DACC,oCACA,yBAEA,2wBAWC,iBACA,oBACA,oCACA,wBAKD,wEACC,sDAIF,qDACC,WAGD,wGAEC,WACA,oBACA,gCACA,YAEA,sKACC,2BACA,eAIA,0TACC,yBAKF,8LACC,WACA,YAGD,kHACC,qBAKA,wRACC,uBACA,YAIF,kPAGC,kBACA,gBACA,gBAIA,uBACA,oBACA,qBACA,4BAGD,sIACC,6BAGD,oHACC,aACA,qBACA,mBACA,kBAEA,sIACC,YACA,gBACA,WAIF,oIACC,cACA,eAEA,8JACC,aAIF,sHACC,YACA,WACA,WAEA,8HACC,cAIF,gIACC,aACA,yBAEA,sJACC,WAGD,sKACC,kBACA,aACA,mBACA,8CAEA,4LACC,WACA,YACA,WACA,eAEA,0lBAGC,WACA,8CAKH,oJACC,aACA,mBACA,mBACA,qCAEA,oLACC,WACA,iBAMH,kKACC,eACA,WAKH,uEACC,aACA,mBACA,uBACA,sBAGD,2DACC,WACA,iBAKH,UACI,+CAGJ,2BACE,GACE,YAGJ,mCACE,GACE","file":"settings.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAOC,0BACC,WAKF,OACC,WAID,4BC+CC,2CD3CD,mBC2CC,kDDvCD,qBCuCC,yCDnCD,0BCmCC,wCD/BD,oEC+BC,2CD3BD,oCACC,oBACA,0BACA,+BACA,mBAGD,4BACC,oBACA,kCAGD,yBACC,WAIA,wCACC,kBACA,yDACC,gBAIA,mOACC,WAKH,uCACC,aAGD,sCACC,WAED,uDACC,WAKD,gBACC,WAIF,mBACC,aACA,aACA,iBACA,4DACA,qBAEA,4BACC,kBACA,SAEA,+BACC,mBAIA,qCACC,iBAKH,kCACC,iBACA,mBACA,gBAGD,mGACC,4BACA,kBACA,WAMF,oBACC,kBACA,wCACC,0BACA,8CACC,oDAKH,aACC,qBACA,YACA,kBACA,8CACA,WACA,wCACA,8CACA,6CAEA,0DAGC,mCACA,mDACA,qDAGD,uBACC,kBACA,yBAIF,6BACC,oBACA,kCAEA,mCACC,WAIA,oCACC,kBACA,oBACA,iBACA,2BACA,WACA,mBACA,QAEA,0CACC,mBACA,uBACA,gBAKD,gIACC,kBACA,UACA,UACA,oBACA,YAKH,qCACC,kBACA,UACA,MACA,SAEA,yCACC,qBAIF,4CACC,eAGD,4CACC,sBACA,WACA,YACA,YAMF,qBACC,aACA,WACA,SACA,YAEA,uBACC,aAGD,uCACC,sBACA,cACA,yBAIF,iBACC,kBACA,eACA,WACA,YACA,aACA,SACA,gBACA,YAEA,8CAEC,+CACA,wCAEA,0FACC,WAIF,uCACC,kBACA,qBACA,gCACA,WACA,eAEA,wDACC,qBACA,sBACA,eAIF,sCACC,SAGC,4DAEC,iBACA,kBAEA,kFACC,YAGD,mEACC,oDAEA,kFACC,iBAIF,qEACC,WAEA,eAEA,uEACC,eAQN,gBACC,YAIA,2BACC,kCAGD,mBACC,YAIF,sCAEC,aAGD,eACC,WAGD,YACC,qBAIA,aACC,WACA,yBACA,YAGD,WACC,WACA,yBACA,YAMD,oBACC,iBAGD,iBACC,eAKD,iCACC,aACA,eACA,sBACA,SACA,gDACC,aACA,eACA,sBACA,sDACC,oBAIF,kGACC,cACA,YACA,gBAKA,iEACC,kBACA,UAED,+EACC,oBACA,eACA,wBACA,UAIF,wCACC,WAGD,iDACC,qBAGD,sDACC,kBACA,OACA,WACA,0BACA,eACA,gBACA,WAQF,oBACC,gBAGD,wBACC,iBAGD,oDACC,WACA,YACA,mBACA,wCAOD,oBACC,UACA,cACA,gBACA,uBAGD,2BACC,UAKD,oCAEC,cAKD,wEAEC,aAIF,gBACC,kBACA,QACA,QAEA,sBACC,YAGD,sBACC,iBAKF,WACC,WAEA,cACC,WACA,WACA,4CACA,eACA,kBACA,gBACA,mBAGD,cACC,4CACA,eACA,kBACA,gBACA,mBAKD,gBACC,kBACA,cACA,eACA,uBACA,gBAGD,wBACC,kBAEA,gCACC,kBAIF,sCACC,kBAGD,sDAEC,cACA,eACA,eAEA,0EACC,UACA,qBACA,uBACA,gBAIF,8BACC,eAGD,kCACC,mBACA,cAIF,2BACC,mBAID,4BACC,WACA,SACA,QAGD,0BACC,mBAGD,SACC,gBAKA,oBACC,mBACA,iBACA,WAGD,gCACC,kBAIA,gGACC,cAIF,4BACC,gBAGD,iCACC,gBAGD,8BACC,oCAIF,aACC,gBACA,iBACA,oCAGD,aACC,oCAIA,gBACC,oCACA,+BACA,+CACA,mCACA,gBAGD,aACC,aACA,YACA,mBAGD,qBACC,gCACA,+BACA,kBAGD,sBACC,kCACA,gCACA,+BACA,kBACA,2BAIF,WACC,kBACA,QACA,WAIA,qCACC,aAMD,0BACC,SAGD,2BACC,cACA,aAGD,yDACC,eAGD,8BACC,WAGD,qDACC,WACA,aACA,qBACA,WAGD,kCACC,YAGD,0BACC,gBAMA,4FAEC,qBACA,WACA,YACA,kBACA,WAIF,0CACC,YACA,WAEA,yGAEC,mBAGD,2DACC,YAIF,uFACC,oCAGD,iDACC,cAGD,kDACC,cAGD,sCACC,kBACA,MACA,QACA,aACA,WACA,UACA,WACA,YAGD,wCACC,aACA,mBAEA,oDACC,YAIF,yCACC,0BACA,iBAGD,iOAKC,cAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,2CACC,gBACC,UAED,kCACC,WAIF,0CACC,gBACC,UAED,kCACC,YAIF,2CACC,gBACC,WAIF,0CACC,gBACC,YAKF,0CAEE,kEACC,yBAKH,0CACC,iCACC,yBAIF,SACC,gBAEA,0BACC,4CAID,YACC,mBAEA,uBACC,iBACA,2BACA,qBAKH,iBACC,cACA,yBAGD,WACC,kBACA,aACA,UACA,gBAGD,6CACC,qBAGD,0DACC,WACA,cACA,eACA,WAGD,2BACC,WACA,kBACA,QAGD,iBACC,WAGD,gBACC,mBAKD,kBACC,0BAGD,kBACC,cAGD,sBACC,mBACA,wBACA,2BAGD,WAyGC,aACA,eACA,yBAvGA,oBACC,eAGD,0BACC,wBAGD,gCACC,iBAGD,oBACC,OAfgB,KAgBhB,QAjBiB,IAmBjB,aAlBgB,KAmBhB,WACA,8CACA,gBACA,MACA,UACA,aACA,mBAGD,qBAQC,oBAPA,0CACC,cACA,WACA,YACA,WAjCe,KAsChB,8BACC,kBACA,UACA,SAEA,gCACC,mBACA,eACA,sBACA,WACA,4CACA,YACA,sBAGD,uCACC,8CAKF,oCACC,aAEA,0CACC,iBAIF,gCACC,WACA,YACA,iBAGD,kGAEC,eACA,WACA,YACA,WACA,sBACA,qBAGD,8BACC,iBAEA,kDACC,qBACA,QACA,kBAKH,+CACC,kBACA,YAEA,WACA,YACA,WAOD,kBACC,aAGD,oBACC,kBACA,cAEA,gCACC,cACA,aAGD,0BACC,8CAKD,8BACC,cAGD,+BACC,gBAGD,+BACC,mBAEA,oEACC,kBAKD,8DACC,iBAKD,oEACC,kBAMH,wBACC,kBACA,kBAEA,4BACC,mBACA,YAGD,2BACC,mBACA,kBACA,iBACA,iBAEA,mCACC,kBACA,SACA,iBAGD,oCACC,gBAQF,8BACC,gBAMH,KACC,mBACA,mBAGD,SACC,aAGD,mBACC,mBAGD,eACC,gBAOA,+IACC,sBAEA,+KACC,aAGD,mKACC,WACA,YACA,kCACA,qBACA,kBAGD,mOACC,sCAGD,mNACC,sCAGD,mNACC,oCAMF,sBACC,aAGD,YACC,oBAGD,yCACC,WAGD,kBACC,kBAGD,yBACC,kBAGD,sBACC,kBAIF,yCACC,kBAGD,wBACC,qBAGD,2BACC,wBAEA,gBACA,aACA,iBACA,sBAKD,WACC,kBACA,2BACA,WAGD,2DAGC,qBAIA,mCACC,qBACA,YACA,iBAGD,+EAEC,YAIF,eACC,WAGD,SACC,iBAGD,QACC,qBACA,YACA,WACA,2BAEA,gBACC,kBAIF,qBACC,sBACA,qBACA,YACA,iBAGD,kBACC,qBACA,gBAIA,aACC,sCACA,mCAGD,WACC,oCAGD,mBACC,sCACA,oBAMF,8CACC,WACA,YAGD,wBACC,WACA,YACA,mBACA,kBACA,+DAIA,oBACC,iBACA,gBAEA,uBACC,cAGD,uBACC,kBAIF,0BACC,YACA,gCAGD,oDACC,yBAGD,wDACC,2BAGD,uBACC,cAKD,oBACC,0BAGD,oCACC,gBAIF,eACC,mBAEA,iBACC,qBACA,cAIF,SACC,UAGD,eACC,iBACA,mBACA,WASA,2CACC,aACA,qBACA,yCAEA,gDAGC,aACA,aACA,WAbgB,KAchB,sBACA,aACA,mBAGA,sBACE,+KASF,4CAEA,yDACC,WAID,iaAOC,UA1CkB,MA4ClB,ooCACC,6BACA,wBACA,uBAKD,odAMC,gBAMD,2JAEC,cACA,gBAIF,oOAIC,UA3EkB,MA6ElB,wRACC,WACA,6BACA,wBAGD,wQACC,cAIF,4DACC,YACA,WAGD,6DACC,aACA,yBACA,UACA,eAGD,0DACC,oCACA,wBAID,4DACC,gBACA,kBACA,8CACA,YACA,MAEA,mEACC,mDAIF,4DACC,oCACA,yBAEA,2wBAWC,iBACA,oBACA,oCACA,wBAKD,wEACC,sDAIF,qDACC,WAGD,wGAEC,WACA,oBACA,gCACA,YAEA,sKACC,2BACA,eAIA,0TACC,yBAKF,8LACC,WACA,YAGD,kHACC,qBAKA,wRACC,uBACA,YAIF,kPAGC,kBACA,gBACA,gBAIA,uBACA,oBACA,qBACA,4BAGD,sIACC,6BAGD,oHACC,aACA,qBACA,mBACA,kBAEA,sIACC,YACA,gBACA,WAIF,oIACC,cACA,eAEA,8JACC,aAIF,sHACC,YACA,WACA,WAEA,8HACC,cAIF,gIACC,aACA,yBAEA,sJACC,WAGD,sKACC,kBACA,aACA,mBACA,8CAEA,4LACC,WACA,YACA,WACA,eAEA,0lBAGC,WACA,8CAKH,oJACC,aACA,mBACA,mBACA,qCAEA,oLACC,WACA,iBAMH,kKACC,eACA,WAKH,uEACC,aACA,mBACA,uBACA,sBAGD,2DACC,WACA,iBAKH,UACI,+CAGJ,2BACE,GACE,YAGJ,mCACE,GACE","file":"settings.css"}
\ No newline at end of file diff --git a/apps/settings/css/settings.scss b/apps/settings/css/settings.scss index 38412164dbc..40e9c1b60f9 100644 --- a/apps/settings/css/settings.scss +++ b/apps/settings/css/settings.scss @@ -135,18 +135,18 @@ select { display: inline-block; margin: 16px; padding: 14px 20px; - background-color: var(--color-primary); + background-color: var(--color-primary-element); color: #fff; border-radius: var(--border-radius-pill); - border: 1px solid var(--color-primary); + border: 1px solid var(--color-primary-element); box-shadow: 0 2px 9px var(--color-box-shadow); &:active, &:hover, &:focus { - color: var(--color-primary); - background-color: var(--color-primary-text); - border-color: var(--color-primary) !important; + color: var(--color-primary-element); + background-color: var(--color-primary-element-text); + border-color: var(--color-primary-element) !important; } &.icon-file { @@ -281,7 +281,7 @@ select { } &.active { - box-shadow: inset 2px 0 var(--color-primary); + box-shadow: inset 2px 0 var(--color-primary-element); .menuitem-text { font-weight: bold; diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js index 632e526a6d7..5463f004f81 100644 --- a/apps/settings/l10n/ar.js +++ b/apps/settings/l10n/ar.js @@ -152,6 +152,7 @@ OC.L10N.register( "Email" : "البريد الإلكترونى", "Default language" : "اللغة الافتراضية", "Add a new user" : "إضافة مستخدِم جديد", + "Avatar" : "الصورة الرمزية", "Group admin for" : "فريق المُدراء لـ", "Quota" : "حصه", "Storage location" : "مسار التخزين", @@ -229,7 +230,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية", "Migration started …" : "بدأت عملية الترحيل …", "Address" : "العنوان", - "Avatar" : "الصورة الرمزية", "Plain" : "سادة", "NT LAN Manager" : "مدير الشبكة المحلية LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json index 40d6a4bfc8d..98d1fe67a53 100644 --- a/apps/settings/l10n/ar.json +++ b/apps/settings/l10n/ar.json @@ -150,6 +150,7 @@ "Email" : "البريد الإلكترونى", "Default language" : "اللغة الافتراضية", "Add a new user" : "إضافة مستخدِم جديد", + "Avatar" : "الصورة الرمزية", "Group admin for" : "فريق المُدراء لـ", "Quota" : "حصه", "Storage location" : "مسار التخزين", @@ -227,7 +228,6 @@ "Migration in progress. Please wait until the migration is finished" : "عملية الترحيل جارية. الرجاء الإنتظار حتى تكتمل العملية", "Migration started …" : "بدأت عملية الترحيل …", "Address" : "العنوان", - "Avatar" : "الصورة الرمزية", "Plain" : "سادة", "NT LAN Manager" : "مدير الشبكة المحلية LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js index 6ed2d7c5bdc..3b9e8adfd44 100644 --- a/apps/settings/l10n/bg.js +++ b/apps/settings/l10n/bg.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "Имейл", "Default language" : "Стандартен език", "Add a new user" : "Добавяне на новия потребител", + "Avatar" : "Аватар", "Group admin for" : "Групов администратор за", "Quota" : "Квота", "User backend" : "Потребителски сървър", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Ограничи потребителите, така че да могат да споделят само с други потребители в своите групи.", "Exclude groups from sharing" : "Забрани групи да споделят", "These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.", - "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне", - "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи", "Allow username autocompletion to users based on phone number integration" : "Разрешаване на автоматично довършване на име на потребител на потребители въз основа на интегриране на телефонен номер", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако автоматичното довършване „същата група“ и „интегриране на телефонен номер“ са активирани, съвпадението в едното е достатъчно, за да се покаже на потребителя.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешаване на автоматично довършване при въвеждане на пълното име или имейл адрес (като игнорирате липсващото съвпадение в телефонния указател и сте в същата група)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "В ход е миграция. Моля, изчакайте, докато миграцията приключи", "Migration started …" : "Миграцията започна …", "Address" : "Адрес", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Възникна грешка по време на заявката. Не може да се продължи.", "Plain" : "Обикновен", "NT LAN Manager" : "NT LAN Manager", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Изберете настройка за фонова работа", "Recommended" : "Препоръчано", "The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".", + "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне", + "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи", "Change privacy level of profile picture" : "Промяна на нивото на поверителност на снимката на потребителския профил", "Upload new" : "Качи нова", "Select from Files" : "Избери от файловете", diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json index f617964ebaf..451b01a8a06 100644 --- a/apps/settings/l10n/bg.json +++ b/apps/settings/l10n/bg.json @@ -359,6 +359,7 @@ "Email" : "Имейл", "Default language" : "Стандартен език", "Add a new user" : "Добавяне на новия потребител", + "Avatar" : "Аватар", "Group admin for" : "Групов администратор за", "Quota" : "Квота", "User backend" : "Потребителски сървър", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Ограничи потребителите, така че да могат да споделят само с други потребители в своите групи.", "Exclude groups from sharing" : "Забрани групи да споделят", "These groups will still be able to receive shares, but not to initiate them." : "Тези групи ще могат да получават споделения, но няма да могат самите те да споделят.", - "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне", - "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи", "Allow username autocompletion to users based on phone number integration" : "Разрешаване на автоматично довършване на име на потребител на потребители въз основа на интегриране на телефонен номер", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако автоматичното довършване „същата група“ и „интегриране на телефонен номер“ са активирани, съвпадението в едното е достатъчно, за да се покаже на потребителя.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешаване на автоматично довършване при въвеждане на пълното име или имейл адрес (като игнорирате липсващото съвпадение в телефонния указател и сте в същата група)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "В ход е миграция. Моля, изчакайте, докато миграцията приключи", "Migration started …" : "Миграцията започна …", "Address" : "Адрес", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Възникна грешка по време на заявката. Не може да се продължи.", "Plain" : "Обикновен", "NT LAN Manager" : "NT LAN Manager", @@ -544,6 +542,8 @@ "Pick background job setting" : "Изберете настройка за фонова работа", "Recommended" : "Препоръчано", "The cron.php needs to be executed by the system user \"%s\"." : "Необходимо е cron.php да се стартира от системния потребител \"%s\".", + "Allow username autocompletion in share dialog" : "Разрешаване на автоматично довършване на име на потребител в диалоговия прозорец за споделяне", + "Allow username autocompletion to users within the same groups" : "Разрешаване на автоматично довършване на име на потребител на потребители в същите групи", "Change privacy level of profile picture" : "Промяна на нивото на поверителност на снимката на потребителския профил", "Upload new" : "Качи нова", "Select from Files" : "Избери от файловете", diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js index 9aa14b4619a..88e9b730b63 100644 --- a/apps/settings/l10n/br.js +++ b/apps/settings/l10n/br.js @@ -242,6 +242,7 @@ OC.L10N.register( "Email" : "Postel", "Default language" : "Yezh dre ziouer", "Add a new user" : "Ouzhpennan un im^lijer", + "Avatar" : "Avatar", "Group admin for" : "Strollad merour evit", "Quota" : "Quota", "User backend" : "Backen implijer", @@ -361,7 +362,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Oc'h ober an divroadenn. Gortozit e vefe echuet mar-plij", "Migration started …" : "Divroadeg kroget...", "Address" : "Chom-lec'h", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ur fazi a zo bet en oberenn. N'eo ket posuple en ober.", "Plain" : "Sklaer", "NT LAN Manager" : "NT LAN Manager", diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json index f18532c2863..b926bb40d68 100644 --- a/apps/settings/l10n/br.json +++ b/apps/settings/l10n/br.json @@ -240,6 +240,7 @@ "Email" : "Postel", "Default language" : "Yezh dre ziouer", "Add a new user" : "Ouzhpennan un im^lijer", + "Avatar" : "Avatar", "Group admin for" : "Strollad merour evit", "Quota" : "Quota", "User backend" : "Backen implijer", @@ -359,7 +360,6 @@ "Migration in progress. Please wait until the migration is finished" : "Oc'h ober an divroadenn. Gortozit e vefe echuet mar-plij", "Migration started …" : "Divroadeg kroget...", "Address" : "Chom-lec'h", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ur fazi a zo bet en oberenn. N'eo ket posuple en ober.", "Plain" : "Sklaer", "NT LAN Manager" : "NT LAN Manager", diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js index 95b5f80dead..b9801bd48f6 100644 --- a/apps/settings/l10n/ca.js +++ b/apps/settings/l10n/ca.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "Correu electrònic", "Default language" : "Llengua per defecte", "Add a new user" : "Afegeix un nou usuari", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grup per", "Quota" : "Quota", "User backend" : "Rerefons d'usuari", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Restringeix als usuaris a compartir només amb usuaris del seu grup", "Exclude groups from sharing" : "Excloure grups de compartició", "These groups will still be able to receive shares, but not to initiate them." : "Aquests grups encara podran rebre comparticions, però no en podran iniciar.", - "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir", - "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups", "Allow username autocompletion to users based on phone number integration" : "Permet la compleció automàtica del nom d'usuari als usuaris en funció de la integració del número de telèfon", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si la compleció automàtica \"mateix grup\" i \"integració de números de telèfon\" estan habilitats, n'hi ha prou amb una coincidència per mostrar a l'usuari.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permet l'emplenament automàtic en introduir el nom complet o l'adreça de correu electrònic (ignorant la coincidència de l'agenda i estar al mateix grup)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració", "Migration started …" : "S'ha iniciat la migració …", "Address" : "Adreça", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "S'ha produït un error durant la sol·licitud. No es pot continuar.", "Plain" : "Net", "NT LAN Manager" : "Gestor NT LAN", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Trieu el paràmetre de la tasca en segon pla", "Recommended" : "Recomanat", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir", + "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups", "Change privacy level of profile picture" : "Canvia el nivell de privadesa de la foto de perfil", "Upload new" : "Puja'n una de nova", "Select from Files" : "Selecciona dels Fitxers", diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json index 5a71eaffebc..1725f6e3f10 100644 --- a/apps/settings/l10n/ca.json +++ b/apps/settings/l10n/ca.json @@ -359,6 +359,7 @@ "Email" : "Correu electrònic", "Default language" : "Llengua per defecte", "Add a new user" : "Afegeix un nou usuari", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grup per", "Quota" : "Quota", "User backend" : "Rerefons d'usuari", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Restringeix als usuaris a compartir només amb usuaris del seu grup", "Exclude groups from sharing" : "Excloure grups de compartició", "These groups will still be able to receive shares, but not to initiate them." : "Aquests grups encara podran rebre comparticions, però no en podran iniciar.", - "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir", - "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups", "Allow username autocompletion to users based on phone number integration" : "Permet la compleció automàtica del nom d'usuari als usuaris en funció de la integració del número de telèfon", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si la compleció automàtica \"mateix grup\" i \"integració de números de telèfon\" estan habilitats, n'hi ha prou amb una coincidència per mostrar a l'usuari.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permet l'emplenament automàtic en introduir el nom complet o l'adreça de correu electrònic (ignorant la coincidència de l'agenda i estar al mateix grup)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migració en procés. Si us plau, espereu fins que finalitzi la migració", "Migration started …" : "S'ha iniciat la migració …", "Address" : "Adreça", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "S'ha produït un error durant la sol·licitud. No es pot continuar.", "Plain" : "Net", "NT LAN Manager" : "Gestor NT LAN", @@ -544,6 +542,8 @@ "Pick background job setting" : "Trieu el paràmetre de la tasca en segon pla", "Recommended" : "Recomanat", "The cron.php needs to be executed by the system user \"%s\"." : "El cron.php ha de ser executat per l'usuari del sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Permet l'emplenament automàtic del nom d'usuari al diàleg de compartir", + "Allow username autocompletion to users within the same groups" : "Permet l'emplenament automàtic del nom d'usuari als usuaris dels mateixos grups", "Change privacy level of profile picture" : "Canvia el nivell de privadesa de la foto de perfil", "Upload new" : "Puja'n una de nova", "Select from Files" : "Selecciona dels Fitxers", diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js index 00f7c68b51f..7de4d245328 100644 --- a/apps/settings/l10n/cs.js +++ b/apps/settings/l10n/cs.js @@ -335,11 +335,14 @@ OC.L10N.register( "Add additional email" : "Přidat další e-mail", "Add" : "Přidat", "You do not have permissions to see the details of this user" : "Nemáte oprávnění zobrazit si podrobností o tomto uživateli", + "Edit display name" : "Upravit zobrazovaný název", "Add new password" : "Přidat nové heslo", "Add new email address" : "Přidat novou e-mailovou adresu", "Add user to group" : "Přidat uživatele do skupiny", "Set user as admin for" : "Nastavit uživatele jako správce pro", "Select user quota" : "Vybrat kvótu uživatele", + "Set the language" : "Nastavit jazyk", + "Select manager" : "Vybrat nástroj pro správu", "Delete user" : "Smazat uživatele", "Wipe all devices" : "Vymazat obsah ze všech zařízení", "Disable user" : "Znepřístupnit uživatelský účet", @@ -355,17 +358,22 @@ OC.L10N.register( "Edit User" : "Upravit uživatele", "Toggle user actions menu" : "Vyp/zap. nabídku akcí uživatele", "{size} used" : "{size} použito", + "User's table" : "Tabulka uživatele", "New user" : "Nový uživatel", "Will be autogenerated" : "Bude automaticky vytvořeno", "Display name" : "Zobrazované jméno", "Email" : "E-mail", "Default language" : "Výchozí jazyk", + "Select user manager" : "Vyberte nástroj pro správu uživatelů", "Add a new user" : "Přidat nového uživatele", + "Avatar" : "Profilový obrázek", "Group admin for" : "Správce skupiny", "Quota" : "Kvóta", "User backend" : "Podpůrná vrstva pro uživatelské účty", "Storage location" : "Úložiště dat", "Last login" : "Poslední přihlášení", + "Manager" : "Nástroj pro správu", + "User actions" : "Akce ohledně uživatele", "No users in here" : "Nejsou zde žádní uživatelé", "Default quota" : "Výchozí kvóta", "Common languages" : "Běžné jazyky", @@ -485,8 +493,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Povolit sdílení pouze mezi uživateli v rámci skupiny", "Exclude groups from sharing" : "Vyjmout skupiny ze sdílení", "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možné sdílet, nemohou ale samy sdílet ostatním.", - "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení", - "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin", "Allow username autocompletion to users based on phone number integration" : "Umožnit doplňování uživatelského jména uživatelům na základě začlenění telefonním číslem", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "V případě, že jsou zapnuté automatická dokončování „stejná skupina“ a „začlenění telefonním číslem“, postačí pro zobrazení uživatele shoda s jedním z toho.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Povolit automatické dokončování při zadávání celého jména nebo e-mailové adresy (při ignorování chybějící shody s telefonním seznamem a toho, že je ve stejné skupině)", @@ -527,7 +533,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Probíhá migrace. Vyčkejte jejího dokončení", "Migration started …" : "Migrace spuštěna…", "Address" : "Adresa", - "Avatar" : "Profilový obrázek", "An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", "Plain" : "V čitelné podobě", "NT LAN Manager" : "Správce NT LAN", @@ -546,6 +551,8 @@ OC.L10N.register( "Pick background job setting" : "Vybrat nastavení úlohy na pozadí", "Recommended" : "Doporučené", "The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.", + "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení", + "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin", "Change privacy level of profile picture" : "Změnit úroveň soukromí profilového obrázku", "Upload new" : "Nahrát nový", "Select from Files" : "Vybrat ze Souborů", diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json index 27ebdd12ad9..d28bd0aafd3 100644 --- a/apps/settings/l10n/cs.json +++ b/apps/settings/l10n/cs.json @@ -333,11 +333,14 @@ "Add additional email" : "Přidat další e-mail", "Add" : "Přidat", "You do not have permissions to see the details of this user" : "Nemáte oprávnění zobrazit si podrobností o tomto uživateli", + "Edit display name" : "Upravit zobrazovaný název", "Add new password" : "Přidat nové heslo", "Add new email address" : "Přidat novou e-mailovou adresu", "Add user to group" : "Přidat uživatele do skupiny", "Set user as admin for" : "Nastavit uživatele jako správce pro", "Select user quota" : "Vybrat kvótu uživatele", + "Set the language" : "Nastavit jazyk", + "Select manager" : "Vybrat nástroj pro správu", "Delete user" : "Smazat uživatele", "Wipe all devices" : "Vymazat obsah ze všech zařízení", "Disable user" : "Znepřístupnit uživatelský účet", @@ -353,17 +356,22 @@ "Edit User" : "Upravit uživatele", "Toggle user actions menu" : "Vyp/zap. nabídku akcí uživatele", "{size} used" : "{size} použito", + "User's table" : "Tabulka uživatele", "New user" : "Nový uživatel", "Will be autogenerated" : "Bude automaticky vytvořeno", "Display name" : "Zobrazované jméno", "Email" : "E-mail", "Default language" : "Výchozí jazyk", + "Select user manager" : "Vyberte nástroj pro správu uživatelů", "Add a new user" : "Přidat nového uživatele", + "Avatar" : "Profilový obrázek", "Group admin for" : "Správce skupiny", "Quota" : "Kvóta", "User backend" : "Podpůrná vrstva pro uživatelské účty", "Storage location" : "Úložiště dat", "Last login" : "Poslední přihlášení", + "Manager" : "Nástroj pro správu", + "User actions" : "Akce ohledně uživatele", "No users in here" : "Nejsou zde žádní uživatelé", "Default quota" : "Výchozí kvóta", "Common languages" : "Běžné jazyky", @@ -483,8 +491,6 @@ "Restrict users to only share with users in their groups" : "Povolit sdílení pouze mezi uživateli v rámci skupiny", "Exclude groups from sharing" : "Vyjmout skupiny ze sdílení", "These groups will still be able to receive shares, but not to initiate them." : "Těmto skupinám bude stále možné sdílet, nemohou ale samy sdílet ostatním.", - "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení", - "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin", "Allow username autocompletion to users based on phone number integration" : "Umožnit doplňování uživatelského jména uživatelům na základě začlenění telefonním číslem", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "V případě, že jsou zapnuté automatická dokončování „stejná skupina“ a „začlenění telefonním číslem“, postačí pro zobrazení uživatele shoda s jedním z toho.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Povolit automatické dokončování při zadávání celého jména nebo e-mailové adresy (při ignorování chybějící shody s telefonním seznamem a toho, že je ve stejné skupině)", @@ -525,7 +531,6 @@ "Migration in progress. Please wait until the migration is finished" : "Probíhá migrace. Vyčkejte jejího dokončení", "Migration started …" : "Migrace spuštěna…", "Address" : "Adresa", - "Avatar" : "Profilový obrázek", "An error occured during the request. Unable to proceed." : "Během požadavku došlo k chybě. Nelze pokračovat.", "Plain" : "V čitelné podobě", "NT LAN Manager" : "Správce NT LAN", @@ -544,6 +549,8 @@ "Pick background job setting" : "Vybrat nastavení úlohy na pozadí", "Recommended" : "Doporučené", "The cron.php needs to be executed by the system user \"%s\"." : "Je třeba, aby cron.php bylo spouštěno s právy systémového uživatele „%s“.", + "Allow username autocompletion in share dialog" : "Povolit automatické dokončování uživatelského jména v dialogu pro sdílení", + "Allow username autocompletion to users within the same groups" : "Umožnit automatické dokončování uživatelského jména uživatelům v rámci stejných skupin", "Change privacy level of profile picture" : "Změnit úroveň soukromí profilového obrázku", "Upload new" : "Nahrát nový", "Select from Files" : "Vybrat ze Souborů", diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js index 26b7834ec89..edd3a57ea3f 100644 --- a/apps/settings/l10n/da.js +++ b/apps/settings/l10n/da.js @@ -308,6 +308,7 @@ OC.L10N.register( "Email" : "E-mail", "Default language" : "Standardsprog", "Add a new user" : "Tilføj en bruger", + "Avatar" : "Avatar", "Group admin for" : "Gruppeadministrator for", "Quota" : "Kvote", "User backend" : "Bruger-backend", @@ -426,8 +427,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Begræns brugere til kun at dele med brugere i deres egen gruppe", "Exclude groups from sharing" : "Ekskluder grupper fra at dele", "These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, men ikke skabe dem.", - "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen", - "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper", "Allow username autocompletion to users based on phone number integration" : "Tillad autofuldførelse af brugernavn til brugere baseret på telefonnummerintegration", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Hvis autofuldførelse \"samme gruppe\" og \"telefonnummerintegration\" er aktiveret, er et match i begge nok til at vise brugeren.", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Vis ansvarsfraskrivelsestekst på den offentlige linkoverførselsside (vises kun, når fillisten er skjult)", @@ -465,7 +464,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet", "Migration started …" : "Migrering er påbegyndt...", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Der opstod en fejl under anmodningen. Kan ikke fortsætte.", "Plain" : "Klartekst", "NT LAN Manager" : "NT LAN Manager", @@ -483,6 +481,8 @@ OC.L10N.register( "Pick background job setting" : "Vælg baggrundsjob indstilling", "Recommended" : "Anbefalet", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php skal udføres af systembrugeren \"%s\".", + "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen", + "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper", "Change privacy level of profile picture" : "Skift privatlivsniveau for profilbillede", "Upload new" : "Upload nyt", "Select from Files" : "Vælg fra filer", diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json index 532ff64ad3b..0eb045a96f6 100644 --- a/apps/settings/l10n/da.json +++ b/apps/settings/l10n/da.json @@ -306,6 +306,7 @@ "Email" : "E-mail", "Default language" : "Standardsprog", "Add a new user" : "Tilføj en bruger", + "Avatar" : "Avatar", "Group admin for" : "Gruppeadministrator for", "Quota" : "Kvote", "User backend" : "Bruger-backend", @@ -424,8 +425,6 @@ "Restrict users to only share with users in their groups" : "Begræns brugere til kun at dele med brugere i deres egen gruppe", "Exclude groups from sharing" : "Ekskluder grupper fra at dele", "These groups will still be able to receive shares, but not to initiate them." : "Disse grupper vil stadig kunne modtage delefiler, men ikke skabe dem.", - "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen", - "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper", "Allow username autocompletion to users based on phone number integration" : "Tillad autofuldførelse af brugernavn til brugere baseret på telefonnummerintegration", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Hvis autofuldførelse \"samme gruppe\" og \"telefonnummerintegration\" er aktiveret, er et match i begge nok til at vise brugeren.", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Vis ansvarsfraskrivelsestekst på den offentlige linkoverførselsside (vises kun, når fillisten er skjult)", @@ -463,7 +462,6 @@ "Migration in progress. Please wait until the migration is finished" : "Immigration er i gang. Vent venligst indtil overflytningen er afsluttet", "Migration started …" : "Migrering er påbegyndt...", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Der opstod en fejl under anmodningen. Kan ikke fortsætte.", "Plain" : "Klartekst", "NT LAN Manager" : "NT LAN Manager", @@ -481,6 +479,8 @@ "Pick background job setting" : "Vælg baggrundsjob indstilling", "Recommended" : "Anbefalet", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php skal udføres af systembrugeren \"%s\".", + "Allow username autocompletion in share dialog" : "Tillad autofuldførelse af brugernavn i delingsdialogen", + "Allow username autocompletion to users within the same groups" : "Tillad autofuldførelse af brugernavn til brugere inden for de samme grupper", "Change privacy level of profile picture" : "Skift privatlivsniveau for profilbillede", "Upload new" : "Upload nyt", "Select from Files" : "Vælg fra filer", diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js index f692daa1b4a..7345b0f6875 100644 --- a/apps/settings/l10n/de.js +++ b/apps/settings/l10n/de.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "E-Mail-Adresse", "Default language" : "Standard-Sprache", "Add a new user" : "Neuen Benutzer hinzufügen", + "Avatar" : "Avatar", "Group admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", "User backend" : "Benutzer-Backend", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", - "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", - "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", "Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen …", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", "Plain" : "Klartext", "NT LAN Manager" : "NT-LAN-Manager", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", "Recommended" : "Empfohlen", "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", + "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", "Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern", "Upload new" : "Neues hochladen", "Select from Files" : "Aus Dateien wählen", diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json index 42a888f941e..83b86a08f7e 100644 --- a/apps/settings/l10n/de.json +++ b/apps/settings/l10n/de.json @@ -359,6 +359,7 @@ "Email" : "E-Mail-Adresse", "Default language" : "Standard-Sprache", "Add a new user" : "Neuen Benutzer hinzufügen", + "Avatar" : "Avatar", "Group admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", "User backend" : "Benutzer-Backend", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", - "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", - "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", "Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der vollständigen Namen oder die E-Mail-Adresse eingeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und bei gleicher Gruppenzugehörigkeit)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen …", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", "Plain" : "Klartext", "NT LAN Manager" : "NT-LAN-Manager", @@ -544,6 +542,8 @@ "Pick background job setting" : "Wähle eine Hintergrund-Aufgabeneinstellung aus", "Recommended" : "Empfohlen", "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", + "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", "Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern", "Upload new" : "Neues hochladen", "Select from Files" : "Aus Dateien wählen", diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js index c075cfef652..a08fa544455 100644 --- a/apps/settings/l10n/de_DE.js +++ b/apps/settings/l10n/de_DE.js @@ -342,6 +342,7 @@ OC.L10N.register( "Set user as admin for" : "Benutzer als Administrator setzen für", "Select user quota" : "Benutzerkontingent auswählen", "Set the language" : "Sprache einstellen", + "Select manager" : "Manager auswählen", "Delete user" : "Benutzer löschen", "Wipe all devices" : "Alle Geräte löschen", "Disable user" : "Benutzer deaktivieren", @@ -357,17 +358,22 @@ OC.L10N.register( "Edit User" : "Benutzer bearbeiten", "Toggle user actions menu" : "Menü für Benutzeraktionen umschalten", "{size} used" : "{size} verwendet", + "User's table" : "Benutzertabelle", "New user" : "Neuer Benutzer", "Will be autogenerated" : "Wird automatisch erzeugt", "Display name" : "Anzeigename", "Email" : "E-Mail", "Default language" : "Standard-Sprache", + "Select user manager" : "Benutzermanager wählen", "Add a new user" : "Neuen Benutzer hinzufügen", + "Avatar" : "Avatar", "Group admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", "User backend" : "Benutzer-Backend", "Storage location" : "Speicherort", "Last login" : "Letzte Anmeldung", + "Manager" : "Manager", + "User actions" : "Benutzeraktionen", "No users in here" : "Keine Benutzer vorhanden", "Default quota" : "Standard Speicherkontingent ", "Common languages" : "Gebräuchliche Sprachen", @@ -487,8 +493,8 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", - "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", - "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", + "Allow username autocompletion in share dialog and allow access to the system address book" : "Die automatische Vervollständigung des Benutzernamens im Freigabedialog und den Zugriff auf das Systemadressbuch erlauben", + "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Benutzern innerhalb derselben Gruppen die automatische Vervollständigung von Benutzernamen erlauben und Systemadressbücher auf Benutzer derselben Gruppen beschränken", "Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der volle Namen oder E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", @@ -529,7 +535,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen…", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", "Plain" : "Klartext", "NT LAN Manager" : "NT-LAN-Manager", @@ -548,6 +553,8 @@ OC.L10N.register( "Pick background job setting" : "Einstellung für Hintergrund-Aufgaben auswählen", "Recommended" : "Empfohlen", "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", + "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", "Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern", "Upload new" : "Neues hochladen", "Select from Files" : "Aus Dateien wählen", diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json index 6e56ae7d23a..9b3990b6385 100644 --- a/apps/settings/l10n/de_DE.json +++ b/apps/settings/l10n/de_DE.json @@ -340,6 +340,7 @@ "Set user as admin for" : "Benutzer als Administrator setzen für", "Select user quota" : "Benutzerkontingent auswählen", "Set the language" : "Sprache einstellen", + "Select manager" : "Manager auswählen", "Delete user" : "Benutzer löschen", "Wipe all devices" : "Alle Geräte löschen", "Disable user" : "Benutzer deaktivieren", @@ -355,17 +356,22 @@ "Edit User" : "Benutzer bearbeiten", "Toggle user actions menu" : "Menü für Benutzeraktionen umschalten", "{size} used" : "{size} verwendet", + "User's table" : "Benutzertabelle", "New user" : "Neuer Benutzer", "Will be autogenerated" : "Wird automatisch erzeugt", "Display name" : "Anzeigename", "Email" : "E-Mail", "Default language" : "Standard-Sprache", + "Select user manager" : "Benutzermanager wählen", "Add a new user" : "Neuen Benutzer hinzufügen", + "Avatar" : "Avatar", "Group admin for" : "Gruppenadministrator für", "Quota" : "Kontingent", "User backend" : "Benutzer-Backend", "Storage location" : "Speicherort", "Last login" : "Letzte Anmeldung", + "Manager" : "Manager", + "User actions" : "Benutzeraktionen", "No users in here" : "Keine Benutzer vorhanden", "Default quota" : "Standard Speicherkontingent ", "Common languages" : "Gebräuchliche Sprachen", @@ -485,8 +491,8 @@ "Restrict users to only share with users in their groups" : "Benutzer auf das Teilen innerhalb ihrer Gruppen beschränken", "Exclude groups from sharing" : "Gruppen von Freigaben ausschließen", "These groups will still be able to receive shares, but not to initiate them." : "Diese Gruppen können weiterhin Freigaben empfangen, aber selbst keine mehr initiieren.", - "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", - "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", + "Allow username autocompletion in share dialog and allow access to the system address book" : "Die automatische Vervollständigung des Benutzernamens im Freigabedialog und den Zugriff auf das Systemadressbuch erlauben", + "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Benutzern innerhalb derselben Gruppen die automatische Vervollständigung von Benutzernamen erlauben und Systemadressbücher auf Benutzer derselben Gruppen beschränken", "Allow username autocompletion to users based on phone number integration" : "Automatische Vervollständigung des Benutzernamens für Benutzer basierend auf der Rufnummernintegration zulassen", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Wenn die Autovervollständigung \"gleiche Gruppe\" und \"Rufnummernintegration\" aktiviert ist, reicht eine Übereinstimmung in einem der beiden Bereiche aus, um den Benutzer anzuzeigen.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Ermöglicht die automatische Vervollständigung, wenn der volle Namen oder E-Mail-Adresse eingegeben wird (ignoriert fehlende Telefonbuchübereinstimmungen und gleiche Gruppenzugehörigkeit)", @@ -527,7 +533,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen…", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Es ist ein Fehler bei der Anfrage aufgetreten. Es kann nicht fortgefahren werden.", "Plain" : "Klartext", "NT LAN Manager" : "NT-LAN-Manager", @@ -546,6 +551,8 @@ "Pick background job setting" : "Einstellung für Hintergrund-Aufgaben auswählen", "Recommended" : "Empfohlen", "The cron.php needs to be executed by the system user \"%s\"." : "Die cron.php muss durch den Systemnutzer \"%s\" ausgeführt werden.", + "Allow username autocompletion in share dialog" : "Automatische Vervollständigung der Benutzernamen im Teilen-Dialog erlauben", + "Allow username autocompletion to users within the same groups" : "Automatische Vervollständigung der Benutzernamen auf Benutzer innerhalb der gleichen Gruppen erlauben", "Change privacy level of profile picture" : "Datenschutzstufe des Profilbildes ändern", "Upload new" : "Neues hochladen", "Select from Files" : "Aus Dateien wählen", diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js index fbd87f067e4..ea87f3489c9 100644 --- a/apps/settings/l10n/el.js +++ b/apps/settings/l10n/el.js @@ -325,6 +325,7 @@ OC.L10N.register( "Email" : "Email", "Default language" : "Προεπιλεγμένη γλώσσα", "Add a new user" : "Προσθήκη νέου χρήστη", + "Avatar" : "Εικόνα προφίλ", "Group admin for" : "Ομαδα διαχειριστή για", "Quota" : "Σύνολο Χώρου", "User backend" : "Σύστημα υποστήριξης χρήστη", @@ -445,8 +446,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μόνο με χρήστες που ανήκουν στις ομάδες τους", "Exclude groups from sharing" : "Εξαίρεση ομάδων από τον διαμοιρασμό", "These groups will still be able to receive shares, but not to initiate them." : "Αυτές οι ομάδες θα συνεχίσουν να λαμβάνουν διαμοιρασμούς, αλλά δεν θα είναι δυνατό να τους δημιουργήσουν.", - "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης", - "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες", "Allow username autocompletion to users based on phone number integration" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στους χρήστες με βάση τον αριθμό τηλεφώνου", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Εμφάνιση κειμένου αποποίησης στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου (εμφανίζεται μόνο όταν η λίστα αρχείων είναι κρυφή).", "This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα εμφανιστεί στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου όταν η λίστα αρχείων είναι κρυφή.", @@ -482,7 +481,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση", "Migration started …" : "Η μετάβαση ξεκίνησε ...", "Address" : "Διεύθυνση", - "Avatar" : "Εικόνα προφίλ", "An error occured during the request. Unable to proceed." : "Παρουσιάστηκε σφάλμα κατά την εκτέλεση του αιτήματος. Δεν είναι δυνατή η συνέχιση.", "Plain" : "Απλό", "NT LAN Manager" : "Διαχειριστης NT LAN", @@ -501,6 +499,8 @@ OC.L10N.register( "Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας παρασκηνίου", "Recommended" : "Προτείνεται", "The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".", + "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης", + "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες", "Change privacy level of profile picture" : "Αλλαγή επιπέδου απορρήτου της εικόνας προφίλ", "Upload new" : "Μεταφόρτωση νέας", "Select from Files" : "Επιλογή από τα Αρχεία", diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json index 4312f3c7500..db250f1e54c 100644 --- a/apps/settings/l10n/el.json +++ b/apps/settings/l10n/el.json @@ -323,6 +323,7 @@ "Email" : "Email", "Default language" : "Προεπιλεγμένη γλώσσα", "Add a new user" : "Προσθήκη νέου χρήστη", + "Avatar" : "Εικόνα προφίλ", "Group admin for" : "Ομαδα διαχειριστή για", "Quota" : "Σύνολο Χώρου", "User backend" : "Σύστημα υποστήριξης χρήστη", @@ -443,8 +444,6 @@ "Restrict users to only share with users in their groups" : "Να επιτρέπεται σε χρήστες ο διαμοιρασμός μόνο με χρήστες που ανήκουν στις ομάδες τους", "Exclude groups from sharing" : "Εξαίρεση ομάδων από τον διαμοιρασμό", "These groups will still be able to receive shares, but not to initiate them." : "Αυτές οι ομάδες θα συνεχίσουν να λαμβάνουν διαμοιρασμούς, αλλά δεν θα είναι δυνατό να τους δημιουργήσουν.", - "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης", - "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες", "Allow username autocompletion to users based on phone number integration" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στους χρήστες με βάση τον αριθμό τηλεφώνου", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Εμφάνιση κειμένου αποποίησης στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου (εμφανίζεται μόνο όταν η λίστα αρχείων είναι κρυφή).", "This text will be shown on the public link upload page when the file list is hidden." : "Αυτό το κείμενο θα εμφανιστεί στη σελίδα μεταφόρτωσης δημόσιου συνδέσμου όταν η λίστα αρχείων είναι κρυφή.", @@ -480,7 +479,6 @@ "Migration in progress. Please wait until the migration is finished" : "Μετάβαση σε εξέλιξη. Παρακαλούμε περιμένετε μέχρι να ολοκληρωθεί η μετάβαση", "Migration started …" : "Η μετάβαση ξεκίνησε ...", "Address" : "Διεύθυνση", - "Avatar" : "Εικόνα προφίλ", "An error occured during the request. Unable to proceed." : "Παρουσιάστηκε σφάλμα κατά την εκτέλεση του αιτήματος. Δεν είναι δυνατή η συνέχιση.", "Plain" : "Απλό", "NT LAN Manager" : "Διαχειριστης NT LAN", @@ -499,6 +497,8 @@ "Pick background job setting" : "Επιλέξτε τη ρύθμιση εργασίας παρασκηνίου", "Recommended" : "Προτείνεται", "The cron.php needs to be executed by the system user \"%s\"." : "Το cron.php πρέπει να εκτελεστεί από τον χρήστη του συστήματος \"%s\".", + "Allow username autocompletion in share dialog" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη στο πλαίσιο διαλόγου κοινής χρήσης", + "Allow username autocompletion to users within the same groups" : "Να επιτρέπεται η αυτόματη συμπλήρωση ονόματος χρήστη σε χρήστες στις ίδιες ομάδες", "Change privacy level of profile picture" : "Αλλαγή επιπέδου απορρήτου της εικόνας προφίλ", "Upload new" : "Μεταφόρτωση νέας", "Select from Files" : "Επιλογή από τα Αρχεία", diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index 69d32acdcbb..974129a714b 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -363,6 +363,7 @@ OC.L10N.register( "Email" : "Email", "Default language" : "Default language", "Add a new user" : "Add a new user", + "Avatar" : "Avatar", "Group admin for" : "Group admin for", "Quota" : "Quota", "User backend" : "User backend", @@ -487,8 +488,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Restrict users to only share with users in their groups", "Exclude groups from sharing" : "Exclude groups from sharing", "These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.", - "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue", - "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups", "Allow username autocompletion to users based on phone number integration" : "Allow username autocompletion to users based on phone number integration", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)", @@ -529,7 +528,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished", "Migration started …" : "Migration started …", "Address" : "Address", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "An error occured during the request. Unable to proceed.", "Plain" : "Plain", "NT LAN Manager" : "NT LAN Manager", @@ -548,6 +546,8 @@ OC.L10N.register( "Pick background job setting" : "Pick background job setting", "Recommended" : "Recommended", "The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".", + "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue", + "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups", "Change privacy level of profile picture" : "Change privacy level of profile picture", "Upload new" : "Upload new", "Select from Files" : "Select from Files", diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index 62b922f8a74..b045b48b77b 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -361,6 +361,7 @@ "Email" : "Email", "Default language" : "Default language", "Add a new user" : "Add a new user", + "Avatar" : "Avatar", "Group admin for" : "Group admin for", "Quota" : "Quota", "User backend" : "User backend", @@ -485,8 +486,6 @@ "Restrict users to only share with users in their groups" : "Restrict users to only share with users in their groups", "Exclude groups from sharing" : "Exclude groups from sharing", "These groups will still be able to receive shares, but not to initiate them." : "These groups will still be able to receive shares, but not to initiate them.", - "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue", - "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups", "Allow username autocompletion to users based on phone number integration" : "Allow username autocompletion to users based on phone number integration", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)", @@ -527,7 +526,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migration in progress. Please wait until the migration is finished", "Migration started …" : "Migration started …", "Address" : "Address", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "An error occured during the request. Unable to proceed.", "Plain" : "Plain", "NT LAN Manager" : "NT LAN Manager", @@ -546,6 +544,8 @@ "Pick background job setting" : "Pick background job setting", "Recommended" : "Recommended", "The cron.php needs to be executed by the system user \"%s\"." : "The cron.php needs to be executed by the system user \"%s\".", + "Allow username autocompletion in share dialog" : "Allow username autocompletion in share dialogue", + "Allow username autocompletion to users within the same groups" : "Allow username autocompletion to users within the same groups", "Change privacy level of profile picture" : "Change privacy level of profile picture", "Upload new" : "Upload new", "Select from Files" : "Select from Files", diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js index 9a7a1633857..f98e7e2d9ed 100644 --- a/apps/settings/l10n/eo.js +++ b/apps/settings/l10n/eo.js @@ -229,6 +229,7 @@ OC.L10N.register( "Email" : "Retpoŝtadreso", "Default language" : "Defaŭlta lingvo", "Add a new user" : "Aldoni novan uzanton", + "Avatar" : "Avataro", "Group admin for" : "Grupadministranto por", "Quota" : "Kvoto", "User backend" : "Uzanto-loko", @@ -332,7 +333,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.", "Migration started …" : "Ektransmetado...", "Address" : "Adreso", - "Avatar" : "Avataro", "An error occured during the request. Unable to proceed." : "Eraro okazis dum peto. Ne eblas plui.", "Plain" : "Plena", "NT LAN Manager" : "NT LAN Manager", diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json index ad82089f8f5..c23e8c5c4f5 100644 --- a/apps/settings/l10n/eo.json +++ b/apps/settings/l10n/eo.json @@ -227,6 +227,7 @@ "Email" : "Retpoŝtadreso", "Default language" : "Defaŭlta lingvo", "Add a new user" : "Aldoni novan uzanton", + "Avatar" : "Avataro", "Group admin for" : "Grupadministranto por", "Quota" : "Kvoto", "User backend" : "Uzanto-loko", @@ -330,7 +331,6 @@ "Migration in progress. Please wait until the migration is finished" : "Transmeto faranta. Bv. atendi ĝis la fino de la transmeto.", "Migration started …" : "Ektransmetado...", "Address" : "Adreso", - "Avatar" : "Avataro", "An error occured during the request. Unable to proceed." : "Eraro okazis dum peto. Ne eblas plui.", "Plain" : "Plena", "NT LAN Manager" : "NT LAN Manager", diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js index 3d21268dbd7..b86358d5b45 100644 --- a/apps/settings/l10n/es.js +++ b/apps/settings/l10n/es.js @@ -363,6 +363,7 @@ OC.L10N.register( "Email" : "Correo electrónico", "Default language" : "Idioma predeterminado", "Add a new user" : "Añadir nuevo usuario", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grupo para", "Quota" : "Espacio asignado", "User backend" : "Motor de usuario", @@ -487,8 +488,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Limitar a los usuarios a compartir solo con los usuarios de sus grupos", "Exclude groups from sharing" : "Excluye grupos de compartir", "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán iniciarlos.", - "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir", - "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo", "Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar nombre de usuario a usuarios basado en la integración del número de teléfono", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si el autocompletado \"en mismo grupo\" e \"integración del número de telefono\" están activados, una coincidencia en cualquiera de ellos es suficiente para mostrar un usuario.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)", @@ -529,7 +528,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", "Migration started …" : "Migración iniciada...", "Address" : "Dirección", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ha ocurrido un error durante la petición. No se puede continuar.", "Plain" : "Plano", "NT LAN Manager" : "Gestor de NT LAN", @@ -548,6 +546,8 @@ OC.L10N.register( "Pick background job setting" : "Escoge la configuración de las tareas en segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir", + "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo", "Change privacy level of profile picture" : "Cambiar nivel de privacidad de la imagen de perfil", "Upload new" : "Subir nueva", "Select from Files" : "Seleccionar desde Archivos", diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json index 626b4c3b11f..359bc7a9457 100644 --- a/apps/settings/l10n/es.json +++ b/apps/settings/l10n/es.json @@ -361,6 +361,7 @@ "Email" : "Correo electrónico", "Default language" : "Idioma predeterminado", "Add a new user" : "Añadir nuevo usuario", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grupo para", "Quota" : "Espacio asignado", "User backend" : "Motor de usuario", @@ -485,8 +486,6 @@ "Restrict users to only share with users in their groups" : "Limitar a los usuarios a compartir solo con los usuarios de sus grupos", "Exclude groups from sharing" : "Excluye grupos de compartir", "These groups will still be able to receive shares, but not to initiate them." : "Estos grupos aún podrán recibir contenidos compartidos, pero no podrán iniciarlos.", - "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir", - "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo", "Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar nombre de usuario a usuarios basado en la integración del número de teléfono", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si el autocompletado \"en mismo grupo\" e \"integración del número de telefono\" están activados, una coincidencia en cualquiera de ellos es suficiente para mostrar un usuario.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletado del nombre de usuario cuando se introduzca el nombre completo o la dirección del email (ignorando la falta de coincidencia en la agenda de teléfonos y ser del mismo grupo)", @@ -527,7 +526,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", "Migration started …" : "Migración iniciada...", "Address" : "Dirección", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ha ocurrido un error durante la petición. No se puede continuar.", "Plain" : "Plano", "NT LAN Manager" : "Gestor de NT LAN", @@ -546,6 +544,8 @@ "Pick background job setting" : "Escoge la configuración de las tareas en segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "El archivo cron.php debe ser ejecutado por el usuario de sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Permitir autocompletar nombre de usuario en la casilla de compartir", + "Allow username autocompletion to users within the same groups" : "Permitir autocompletar nombre de usuario a los usuarios del mismo grupo", "Change privacy level of profile picture" : "Cambiar nivel de privacidad de la imagen de perfil", "Upload new" : "Subir nueva", "Select from Files" : "Seleccionar desde Archivos", diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js index bbbf5771733..9ccbc0c1cd1 100644 --- a/apps/settings/l10n/es_419.js +++ b/apps/settings/l10n/es_419.js @@ -161,6 +161,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -240,7 +241,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json index e091d991a11..59fa0dc6e6e 100644 --- a/apps/settings/l10n/es_419.json +++ b/apps/settings/l10n/es_419.json @@ -159,6 +159,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -238,7 +239,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js index ce74f288e7a..f9174e6915a 100644 --- a/apps/settings/l10n/es_AR.js +++ b/apps/settings/l10n/es_AR.js @@ -152,6 +152,7 @@ OC.L10N.register( "Add" : "Añadir", "Display name" : "Nombre para mostrar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -228,7 +229,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json index 47f8c413919..e9186e2f53f 100644 --- a/apps/settings/l10n/es_AR.json +++ b/apps/settings/l10n/es_AR.json @@ -150,6 +150,7 @@ "Add" : "Añadir", "Display name" : "Nombre para mostrar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -226,7 +227,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Favor de aguardar hasta que termine", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js index 0f508292217..86f9fbf4f8c 100644 --- a/apps/settings/l10n/es_CL.js +++ b/apps/settings/l10n/es_CL.js @@ -160,6 +160,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -237,7 +238,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json index 9438ae2ba91..032126573ed 100644 --- a/apps/settings/l10n/es_CL.json +++ b/apps/settings/l10n/es_CL.json @@ -158,6 +158,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -235,7 +236,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js index 0356183a5b7..807a253e274 100644 --- a/apps/settings/l10n/es_CO.js +++ b/apps/settings/l10n/es_CO.js @@ -160,6 +160,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -237,7 +238,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json index 01c2f3ad0fd..d021adf7cbb 100644 --- a/apps/settings/l10n/es_CO.json +++ b/apps/settings/l10n/es_CO.json @@ -158,6 +158,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -235,7 +236,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js index 0356183a5b7..807a253e274 100644 --- a/apps/settings/l10n/es_CR.js +++ b/apps/settings/l10n/es_CR.js @@ -160,6 +160,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -237,7 +238,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json index 01c2f3ad0fd..d021adf7cbb 100644 --- a/apps/settings/l10n/es_CR.json +++ b/apps/settings/l10n/es_CR.json @@ -158,6 +158,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -235,7 +236,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js index 0356183a5b7..807a253e274 100644 --- a/apps/settings/l10n/es_DO.js +++ b/apps/settings/l10n/es_DO.js @@ -160,6 +160,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -237,7 +238,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json index 01c2f3ad0fd..d021adf7cbb 100644 --- a/apps/settings/l10n/es_DO.json +++ b/apps/settings/l10n/es_DO.json @@ -158,6 +158,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -235,7 +236,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js index 0356183a5b7..807a253e274 100644 --- a/apps/settings/l10n/es_EC.js +++ b/apps/settings/l10n/es_EC.js @@ -160,6 +160,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -237,7 +238,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json index 01c2f3ad0fd..d021adf7cbb 100644 --- a/apps/settings/l10n/es_EC.json +++ b/apps/settings/l10n/es_EC.json @@ -158,6 +158,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -235,7 +236,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js index 0356183a5b7..807a253e274 100644 --- a/apps/settings/l10n/es_GT.js +++ b/apps/settings/l10n/es_GT.js @@ -160,6 +160,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -237,7 +238,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json index 01c2f3ad0fd..d021adf7cbb 100644 --- a/apps/settings/l10n/es_GT.json +++ b/apps/settings/l10n/es_GT.json @@ -158,6 +158,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -235,7 +236,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js index eaac93f45be..c7908c4eaa1 100644 --- a/apps/settings/l10n/es_HN.js +++ b/apps/settings/l10n/es_HN.js @@ -155,6 +155,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -231,7 +232,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json index 74b8faeaf7c..080d98cd10f 100644 --- a/apps/settings/l10n/es_HN.json +++ b/apps/settings/l10n/es_HN.json @@ -153,6 +153,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -229,7 +230,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js index 4747b488706..b41e53a4cce 100644 --- a/apps/settings/l10n/es_MX.js +++ b/apps/settings/l10n/es_MX.js @@ -180,6 +180,7 @@ OC.L10N.register( "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", "Default language" : "Idioma predeterminado", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -261,7 +262,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Se presentó un error durante la solicitud. No es posible proceder.", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json index 20a86a47a15..f5bd525bce6 100644 --- a/apps/settings/l10n/es_MX.json +++ b/apps/settings/l10n/es_MX.json @@ -178,6 +178,7 @@ "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", "Default language" : "Idioma predeterminado", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -259,7 +260,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Se presentó un error durante la solicitud. No es posible proceder.", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js index eaac93f45be..c7908c4eaa1 100644 --- a/apps/settings/l10n/es_NI.js +++ b/apps/settings/l10n/es_NI.js @@ -155,6 +155,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -231,7 +232,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json index 74b8faeaf7c..080d98cd10f 100644 --- a/apps/settings/l10n/es_NI.json +++ b/apps/settings/l10n/es_NI.json @@ -153,6 +153,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -229,7 +230,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js index eaac93f45be..c7908c4eaa1 100644 --- a/apps/settings/l10n/es_PA.js +++ b/apps/settings/l10n/es_PA.js @@ -155,6 +155,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -231,7 +232,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json index 74b8faeaf7c..080d98cd10f 100644 --- a/apps/settings/l10n/es_PA.json +++ b/apps/settings/l10n/es_PA.json @@ -153,6 +153,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -229,7 +230,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js index eaac93f45be..c7908c4eaa1 100644 --- a/apps/settings/l10n/es_PE.js +++ b/apps/settings/l10n/es_PE.js @@ -155,6 +155,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -231,7 +232,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json index 74b8faeaf7c..080d98cd10f 100644 --- a/apps/settings/l10n/es_PE.json +++ b/apps/settings/l10n/es_PE.json @@ -153,6 +153,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -229,7 +230,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js index eaac93f45be..c7908c4eaa1 100644 --- a/apps/settings/l10n/es_PR.js +++ b/apps/settings/l10n/es_PR.js @@ -155,6 +155,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -231,7 +232,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json index 74b8faeaf7c..080d98cd10f 100644 --- a/apps/settings/l10n/es_PR.json +++ b/apps/settings/l10n/es_PR.json @@ -153,6 +153,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -229,7 +230,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js index eaac93f45be..c7908c4eaa1 100644 --- a/apps/settings/l10n/es_PY.js +++ b/apps/settings/l10n/es_PY.js @@ -155,6 +155,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -231,7 +232,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json index 74b8faeaf7c..080d98cd10f 100644 --- a/apps/settings/l10n/es_PY.json +++ b/apps/settings/l10n/es_PY.json @@ -153,6 +153,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -229,7 +230,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js index 0356183a5b7..807a253e274 100644 --- a/apps/settings/l10n/es_SV.js +++ b/apps/settings/l10n/es_SV.js @@ -160,6 +160,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -237,7 +238,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json index 01c2f3ad0fd..d021adf7cbb 100644 --- a/apps/settings/l10n/es_SV.json +++ b/apps/settings/l10n/es_SV.json @@ -158,6 +158,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -235,7 +236,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor aguarda hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js index eaac93f45be..c7908c4eaa1 100644 --- a/apps/settings/l10n/es_UY.js +++ b/apps/settings/l10n/es_UY.js @@ -155,6 +155,7 @@ OC.L10N.register( "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -231,7 +232,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json index 74b8faeaf7c..080d98cd10f 100644 --- a/apps/settings/l10n/es_UY.json +++ b/apps/settings/l10n/es_UY.json @@ -153,6 +153,7 @@ "{size} used" : "{size} usado", "Display name" : "Nombre a desplegar", "Email" : "Correo electrónico", + "Avatar" : "Avatar", "Group admin for" : "Administrador del grupo para", "Quota" : "Cuota", "User backend" : "Backend del usuario", @@ -229,7 +230,6 @@ "Migration in progress. Please wait until the migration is finished" : "La migración está en curso. Por favor espera hasta que termine la migración", "Migration started …" : "La migración ha comenzado ...", "Address" : "Dirección", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Administrador de LAN NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js index 42b8ce253d7..0971096f7a9 100644 --- a/apps/settings/l10n/et_EE.js +++ b/apps/settings/l10n/et_EE.js @@ -158,6 +158,7 @@ OC.L10N.register( "Email" : "E-post", "Default language" : "Vaikekeel", "Add a new user" : "Lisa uus kasutaja", + "Avatar" : "Avatar", "Group admin for" : "Grupi admin", "Quota" : "Mahupiir", "User backend" : "Kasutaja taustarakendus", @@ -234,7 +235,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", "Migration started …" : "Kolimist on alustatud ...", "Address" : "Aadress", - "Avatar" : "Avatar", "Plain" : "Tavatekst", "NT LAN Manager" : "NT LAN Manager", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json index 99e70484d66..db769036f97 100644 --- a/apps/settings/l10n/et_EE.json +++ b/apps/settings/l10n/et_EE.json @@ -156,6 +156,7 @@ "Email" : "E-post", "Default language" : "Vaikekeel", "Add a new user" : "Lisa uus kasutaja", + "Avatar" : "Avatar", "Group admin for" : "Grupi admin", "Quota" : "Mahupiir", "User backend" : "Kasutaja taustarakendus", @@ -232,7 +233,6 @@ "Migration in progress. Please wait until the migration is finished" : "Kolimine on käimas. Palun oota, kuni see on lõpetatud", "Migration started …" : "Kolimist on alustatud ...", "Address" : "Aadress", - "Avatar" : "Avatar", "Plain" : "Tavatekst", "NT LAN Manager" : "NT LAN Manager", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js index 8fbb15e4aba..5e9ae8c56d3 100644 --- a/apps/settings/l10n/eu.js +++ b/apps/settings/l10n/eu.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "E-posta", "Default language" : "Hizkuntza lehenetsia", "Add a new user" : "Gehitu erabiltze berria", + "Avatar" : "Avatarra", "Group admin for" : "Talde honen administratzailea", "Quota" : "Kuota", "User backend" : "Erabiltzaile jatorria", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara", "Exclude groups from sharing" : "Baztertu taldeak partekatzean", "These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu", - "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan", - "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei", "Allow username autocompletion to users based on phone number integration" : "Baimendu erabiltzaile-izenen osatze automatikoa telefono zenbakien integrazioan oinarritutako erabiltzaileei", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Osatze automatikoa \"talde bera\" eta \"telefono zenbakiaren integrazioa\" gaituta badaude, bat-etortzea nahikoa da erabiltzaileari erakusteko.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu automatikoki osatzea izen osoa edo helbide elektronikoa sartzerakoan (alde batera utziz falta den telefono-liburuarekin bat etortzea eta talde berean egotea)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.", "Migration started …" : "Migrazioa hasi da...", "Address" : "Helbidea", - "Avatar" : "Avatarra", "An error occured during the request. Unable to proceed." : "Errorea gertatu da eskaera egitean. Ezin da jarraitu.", "Plain" : "Arrunta", "NT LAN Manager" : "NT LAN Manager", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Aukeratu atzeko planoko atazen ezarpena", "Recommended" : "Aholkatuta", "The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.", + "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan", + "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei", "Change privacy level of profile picture" : "Aldatu profileko irudiaren pribatutasun maila", "Upload new" : "Kargatu berria", "Select from Files" : "Aukeratu fitxategien artean", diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json index fddd93fa8e2..97c2f6c877c 100644 --- a/apps/settings/l10n/eu.json +++ b/apps/settings/l10n/eu.json @@ -359,6 +359,7 @@ "Email" : "E-posta", "Default language" : "Hizkuntza lehenetsia", "Add a new user" : "Gehitu erabiltze berria", + "Avatar" : "Avatarra", "Group admin for" : "Talde honen administratzailea", "Quota" : "Kuota", "User backend" : "Erabiltzaile jatorria", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara", "Exclude groups from sharing" : "Baztertu taldeak partekatzean", "These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu", - "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan", - "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei", "Allow username autocompletion to users based on phone number integration" : "Baimendu erabiltzaile-izenen osatze automatikoa telefono zenbakien integrazioan oinarritutako erabiltzaileei", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Osatze automatikoa \"talde bera\" eta \"telefono zenbakiaren integrazioa\" gaituta badaude, bat-etortzea nahikoa da erabiltzaileari erakusteko.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Baimendu automatikoki osatzea izen osoa edo helbide elektronikoa sartzerakoan (alde batera utziz falta den telefono-liburuarekin bat etortzea eta talde berean egotea)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migratzen ari da. Itxaron migrazioa osatu arte.", "Migration started …" : "Migrazioa hasi da...", "Address" : "Helbidea", - "Avatar" : "Avatarra", "An error occured during the request. Unable to proceed." : "Errorea gertatu da eskaera egitean. Ezin da jarraitu.", "Plain" : "Arrunta", "NT LAN Manager" : "NT LAN Manager", @@ -544,6 +542,8 @@ "Pick background job setting" : "Aukeratu atzeko planoko atazen ezarpena", "Recommended" : "Aholkatuta", "The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.", + "Allow username autocompletion in share dialog" : "Baimendu erabiltzaile-izenaren osatze automatikoa partekatze elkarrizketan", + "Allow username autocompletion to users within the same groups" : "Baimendu erabiltzaile-izenen osatze automatikoa talde bereko erabiltzaileei", "Change privacy level of profile picture" : "Aldatu profileko irudiaren pribatutasun maila", "Upload new" : "Kargatu berria", "Select from Files" : "Aukeratu fitxategien artean", diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js index 1da143b0a45..bdd940ea710 100644 --- a/apps/settings/l10n/fa.js +++ b/apps/settings/l10n/fa.js @@ -270,6 +270,7 @@ OC.L10N.register( "Email" : "ایمیل", "Default language" : "زبان پیش فرض", "Add a new user" : "افزودن کاربر جدید", + "Avatar" : "آواتار", "Group admin for" : "مدیر گروه برای", "Quota" : "سهم", "User backend" : "پشتیبان کاربر", @@ -378,7 +379,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "مهاجرت در حال اجراست. لطفا تا اتمام مهاجرت صبر کنید", "Migration started …" : "مهاجرت شروع شد...", "Address" : "آدرس", - "Avatar" : "آواتار", "An error occured during the request. Unable to proceed." : "هنگام درخواست خطایی روی داد. امکان ادامه وجود ندارد", "Plain" : "ساده", "NT LAN Manager" : "مدیر NT LAN", diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json index 1ea9e25f8c3..fa15dbf694e 100644 --- a/apps/settings/l10n/fa.json +++ b/apps/settings/l10n/fa.json @@ -268,6 +268,7 @@ "Email" : "ایمیل", "Default language" : "زبان پیش فرض", "Add a new user" : "افزودن کاربر جدید", + "Avatar" : "آواتار", "Group admin for" : "مدیر گروه برای", "Quota" : "سهم", "User backend" : "پشتیبان کاربر", @@ -376,7 +377,6 @@ "Migration in progress. Please wait until the migration is finished" : "مهاجرت در حال اجراست. لطفا تا اتمام مهاجرت صبر کنید", "Migration started …" : "مهاجرت شروع شد...", "Address" : "آدرس", - "Avatar" : "آواتار", "An error occured during the request. Unable to proceed." : "هنگام درخواست خطایی روی داد. امکان ادامه وجود ندارد", "Plain" : "ساده", "NT LAN Manager" : "مدیر NT LAN", diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js index b252cdff030..9cba67624b6 100644 --- a/apps/settings/l10n/fi.js +++ b/apps/settings/l10n/fi.js @@ -287,11 +287,13 @@ OC.L10N.register( "Add additional email" : "Lisää toissijainen sähköpostiosoite", "Add" : "Lisää", "You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen", + "Edit display name" : "Muokkaa näyttönimeä", "Add new password" : "Lisää uusi salasana", "Add new email address" : "Lisää uusi sähköpostiosoite", "Add user to group" : "Lisää käyttäjä ryhmään", "Set user as admin for" : "Aseta käyttäjä järjestelmänvalvojaksi kohteelle", "Select user quota" : "Valitse käyttäjäkiintiö", + "Set the language" : "Aseta kieli", "Delete user" : "Poista käyttäjä", "Wipe all devices" : "Tyhjennä kaikki laitteet", "Disable user" : "Poista käyttäjä käytöstä", @@ -313,6 +315,7 @@ OC.L10N.register( "Email" : "Sähköpostiosoite", "Default language" : "Oletuskieli", "Add a new user" : "Lisää uusi käyttäjä", + "Avatar" : "Profiilikuva", "Group admin for" : "Ryhmäylläpitäjä ryhmille", "Quota" : "Kiintiö", "User backend" : "Käyttäjätaustaosa", @@ -429,8 +432,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Salli käyttäjien jakaa vain omassa ryhmässä olevien henkilöiden kesken", "Exclude groups from sharing" : "Kiellä ryhmiä jakamasta", "These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.", - "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa", - "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille", "This text will be shown on the public link upload page when the file list is hidden." : "Tämä teksti näytetään julkisen linkin lähetyssivulla, kun tiedostolista on piilotettu.", "Default share permissions" : "Oletusjako-oikeudet", "Reasons to use Nextcloud in your organization" : "Nextcloudin käytön edut organisaatiossasi", @@ -460,7 +461,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu", "Migration started …" : "Migraatio käynnistyi…", "Address" : "Osoite", - "Avatar" : "Profiilikuva", "An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.", "Plain" : "Plain", "NT LAN Manager" : "NT LAN Manager", @@ -478,6 +478,8 @@ OC.L10N.register( "Pick background job setting" : "Valitse taustatyöasetus", "Recommended" : "Suositeltu", "The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".", + "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa", + "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille", "Change privacy level of profile picture" : "Muuta profiilikuvan yksityisyystasoa", "Upload new" : "Lähetä uusi", "Select from Files" : "Valitse tiedostosovelluksesta", diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json index 49150fde99f..fe6ac77b41d 100644 --- a/apps/settings/l10n/fi.json +++ b/apps/settings/l10n/fi.json @@ -285,11 +285,13 @@ "Add additional email" : "Lisää toissijainen sähköpostiosoite", "Add" : "Lisää", "You do not have permissions to see the details of this user" : "Käyttöoikeutesi eivät riitä tämän käyttäjän tietojen näkemiseen", + "Edit display name" : "Muokkaa näyttönimeä", "Add new password" : "Lisää uusi salasana", "Add new email address" : "Lisää uusi sähköpostiosoite", "Add user to group" : "Lisää käyttäjä ryhmään", "Set user as admin for" : "Aseta käyttäjä järjestelmänvalvojaksi kohteelle", "Select user quota" : "Valitse käyttäjäkiintiö", + "Set the language" : "Aseta kieli", "Delete user" : "Poista käyttäjä", "Wipe all devices" : "Tyhjennä kaikki laitteet", "Disable user" : "Poista käyttäjä käytöstä", @@ -311,6 +313,7 @@ "Email" : "Sähköpostiosoite", "Default language" : "Oletuskieli", "Add a new user" : "Lisää uusi käyttäjä", + "Avatar" : "Profiilikuva", "Group admin for" : "Ryhmäylläpitäjä ryhmille", "Quota" : "Kiintiö", "User backend" : "Käyttäjätaustaosa", @@ -427,8 +430,6 @@ "Restrict users to only share with users in their groups" : "Salli käyttäjien jakaa vain omassa ryhmässä olevien henkilöiden kesken", "Exclude groups from sharing" : "Kiellä ryhmiä jakamasta", "These groups will still be able to receive shares, but not to initiate them." : "Nämä ryhmät kykenevät vastaanottamaan jakoja, mutta eivät kuitenkaan itse pysty luoda jakoja.", - "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa", - "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille", "This text will be shown on the public link upload page when the file list is hidden." : "Tämä teksti näytetään julkisen linkin lähetyssivulla, kun tiedostolista on piilotettu.", "Default share permissions" : "Oletusjako-oikeudet", "Reasons to use Nextcloud in your organization" : "Nextcloudin käytön edut organisaatiossasi", @@ -458,7 +459,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migraatio on kesken. Odota kunnes migraatio valmistuu", "Migration started …" : "Migraatio käynnistyi…", "Address" : "Osoite", - "Avatar" : "Profiilikuva", "An error occured during the request. Unable to proceed." : "Pyynnön aikana tapahtui virhe. Jatkaminen ei onnistu.", "Plain" : "Plain", "NT LAN Manager" : "NT LAN Manager", @@ -476,6 +476,8 @@ "Pick background job setting" : "Valitse taustatyöasetus", "Recommended" : "Suositeltu", "The cron.php needs to be executed by the system user \"%s\"." : "Tiedosto cron.php tulee suorittaa järjestelmän käyttäjänä \"%s\".", + "Allow username autocompletion in share dialog" : "Ota käyttöön käyttäjänimen automaattitäyttö jakolomakkeessa", + "Allow username autocompletion to users within the same groups" : "Ota käyttöön käyttäjänimen automaattitäyttö saman ryhmän käyttäjille", "Change privacy level of profile picture" : "Muuta profiilikuvan yksityisyystasoa", "Upload new" : "Lähetä uusi", "Select from Files" : "Valitse tiedostosovelluksesta", diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js index 9dbd28a8109..d3cea716c72 100644 --- a/apps/settings/l10n/fr.js +++ b/apps/settings/l10n/fr.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "E-mail", "Default language" : "Langue par défaut", "Add a new user" : "Ajouter un nouvel utilisateur", + "Avatar" : "Avatar", "Group admin for" : "Administrateur de groupe pour", "Quota" : "Quota", "User backend" : "Origine du compte", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "N'autoriser les partages qu'entre membres de mêmes groupes", "Exclude groups from sharing" : "Empêcher certains groupes de partager", "These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ", - "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage", - "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe", "Allow username autocompletion to users based on phone number integration" : "Autoriser l'autocomplétion du nom d'utilisateur aux utilisateurs selon l'intégration du numéro de téléphone", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si les autocomplétions \"même groupe\" et \"intégration du numéro de téléphone\" sont activées, une correspondance avec l'une ou l'autre de ces conditions est suffisante pour afficher l'utilisateur.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion lorsque le nom d'utilisateur ou l'adresse e-mail est totalement saisi⋅e (en ignorant les correspondances manquantes dans le répertoire téléphonique et le fait d'appartenir au même groupe)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", "Migration started …" : "Migration démarrée...", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.", "Plain" : "En clair", "NT LAN Manager" : "Gestionnaire du réseau NT", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan", "Recommended" : "Recommandé", "The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".", + "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage", + "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe", "Change privacy level of profile picture" : "Changer le niveau de confidentialité de la photo de profil", "Upload new" : "Téléverser une nouvelle image", "Select from Files" : "Sélectionner depuis Fichiers", diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json index f762a760de0..792e54d162d 100644 --- a/apps/settings/l10n/fr.json +++ b/apps/settings/l10n/fr.json @@ -359,6 +359,7 @@ "Email" : "E-mail", "Default language" : "Langue par défaut", "Add a new user" : "Ajouter un nouvel utilisateur", + "Avatar" : "Avatar", "Group admin for" : "Administrateur de groupe pour", "Quota" : "Quota", "User backend" : "Origine du compte", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "N'autoriser les partages qu'entre membres de mêmes groupes", "Exclude groups from sharing" : "Empêcher certains groupes de partager", "These groups will still be able to receive shares, but not to initiate them." : "Ces groupes ne pourront plus initier de partage, mais ils pourront toujours rejoindre les partages faits par d'autres. ", - "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage", - "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe", "Allow username autocompletion to users based on phone number integration" : "Autoriser l'autocomplétion du nom d'utilisateur aux utilisateurs selon l'intégration du numéro de téléphone", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si les autocomplétions \"même groupe\" et \"intégration du numéro de téléphone\" sont activées, une correspondance avec l'une ou l'autre de ces conditions est suffisante pour afficher l'utilisateur.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion lorsque le nom d'utilisateur ou l'adresse e-mail est totalement saisi⋅e (en ignorant les correspondances manquantes dans le répertoire téléphonique et le fait d'appartenir au même groupe)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", "Migration started …" : "Migration démarrée...", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Une erreur est survenue durant la requête. Impossible de traiter la demande.", "Plain" : "En clair", "NT LAN Manager" : "Gestionnaire du réseau NT", @@ -544,6 +542,8 @@ "Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan", "Recommended" : "Recommandé", "The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".", + "Allow username autocompletion in share dialog" : "Autoriser l'autocomplétion du nom d'utilisateur dans la boite de dialogue de partage", + "Allow username autocompletion to users within the same groups" : "Autoriser l'autocomplétion du nom d'utilisateur pour les utilisateurs du même groupe", "Change privacy level of profile picture" : "Changer le niveau de confidentialité de la photo de profil", "Upload new" : "Téléverser une nouvelle image", "Select from Files" : "Sélectionner depuis Fichiers", diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js index 8e7e707487f..67a193803e5 100644 --- a/apps/settings/l10n/gl.js +++ b/apps/settings/l10n/gl.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "Correo", "Default language" : "Idioma predeterminado", "Add a new user" : "Engadir un novo usuario", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grupo para", "Quota" : "Cota", "User backend" : "Infraestrutura do usuario", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Restrinxir os usuarios a compartir só cos usuarios dos seus grupos", "Exclude groups from sharing" : "Excluír grupos da compartición", "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.", - "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir", - "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos", "Allow username autocompletion to users based on phone number integration" : "Permitir o autocompletado do nome de usuario aos usuarios en función da integración do número de teléfono", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se está activado o autocompletado \"mesmo grupo\" e a \"integración do número de teléfono\", unha coincidencia en calquera é suficiente para mostrar ao usuario.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir o autocompletado ao introducir o nome completo ou o enderezo de correo electrónico (ignorando a coincidencia que falta na axenda telefónica e estar no mesmo grupo)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", "Migration started …" : "Iniciada a migración ...", "Address" : "Enderezo", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.", "Plain" : "Simple", "NT LAN Manager" : "Xestor NT LAN", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Escolla os axustes do traballo en segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", + "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir", + "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos", "Change privacy level of profile picture" : "Cambia o nivel de privacidade da imaxe de perfil", "Upload new" : "Novo envío", "Select from Files" : "Seleccionar dende Ficheiros", diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json index d052f3b9f4b..2c509282828 100644 --- a/apps/settings/l10n/gl.json +++ b/apps/settings/l10n/gl.json @@ -359,6 +359,7 @@ "Email" : "Correo", "Default language" : "Idioma predeterminado", "Add a new user" : "Engadir un novo usuario", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grupo para", "Quota" : "Cota", "User backend" : "Infraestrutura do usuario", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Restrinxir os usuarios a compartir só cos usuarios dos seus grupos", "Exclude groups from sharing" : "Excluír grupos da compartición", "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.", - "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir", - "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos", "Allow username autocompletion to users based on phone number integration" : "Permitir o autocompletado do nome de usuario aos usuarios en función da integración do número de teléfono", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se está activado o autocompletado \"mesmo grupo\" e a \"integración do número de teléfono\", unha coincidencia en calquera é suficiente para mostrar ao usuario.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir o autocompletado ao introducir o nome completo ou o enderezo de correo electrónico (ignorando a coincidencia que falta na axenda telefónica e estar no mesmo grupo)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", "Migration started …" : "Iniciada a migración ...", "Address" : "Enderezo", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.", "Plain" : "Simple", "NT LAN Manager" : "Xestor NT LAN", @@ -544,6 +542,8 @@ "Pick background job setting" : "Escolla os axustes do traballo en segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", + "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir", + "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos", "Change privacy level of profile picture" : "Cambia o nivel de privacidade da imaxe de perfil", "Upload new" : "Novo envío", "Select from Files" : "Seleccionar dende Ficheiros", diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js index cd18bf23647..73ea98781a9 100644 --- a/apps/settings/l10n/he.js +++ b/apps/settings/l10n/he.js @@ -248,6 +248,7 @@ OC.L10N.register( "Email" : "דוא״ל", "Default language" : "שפת בררת מחדל", "Add a new user" : "הוספת משתמש חדש", + "Avatar" : "תמונה מייצגת", "Group admin for" : "הנהלת הקבוצה", "Quota" : "מכיסה", "User backend" : "מנגנון משתמש", @@ -349,8 +350,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "הגבלת משתמשים לשתף רק עם משתמשים בקבוצה שלהם", "Exclude groups from sharing" : "מניעת קבוצות משיתוף", "These groups will still be able to receive shares, but not to initiate them." : "קבוצות אלו עדיין יוכלו לקבל שיתופים, אך לא לשתף בעצמם.", - "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף", - "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "הצגת טקסט הבהרה בעמוד ההעלאה בקישור הציבורי (מופיע רק כאשר רשימת הקבצים מוסתרת)", "This text will be shown on the public link upload page when the file list is hidden." : "טקסט זה יופיע בקישור עמוד ההעלאה של הקישור הציבורי כאשר רשימת הקבצים מוסתרת.", "Default share permissions" : "הרשאות שיתוף כבררת מחדל", @@ -375,7 +374,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה", "Migration started …" : "המרה החלה...", "Address" : "כתובת", - "Avatar" : "תמונה מייצגת", "An error occured during the request. Unable to proceed." : "אירעה שגיאה במהלך הבקשה. לא ניתן להמשיך.", "Plain" : "רגיל", "NT LAN Manager" : "מנהל רשת NT", @@ -393,6 +391,8 @@ OC.L10N.register( "Pick background job setting" : "בחירת הגדרות למשימת רקע", "Recommended" : "מומלץ", "The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.", + "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף", + "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות", "Upload new" : "העלאת חדש", "Select from Files" : "בחירה מתוך קבצים", "Remove image" : "הסרת תמונה", diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json index cb3a1b97fcf..0a4552f3f58 100644 --- a/apps/settings/l10n/he.json +++ b/apps/settings/l10n/he.json @@ -246,6 +246,7 @@ "Email" : "דוא״ל", "Default language" : "שפת בררת מחדל", "Add a new user" : "הוספת משתמש חדש", + "Avatar" : "תמונה מייצגת", "Group admin for" : "הנהלת הקבוצה", "Quota" : "מכיסה", "User backend" : "מנגנון משתמש", @@ -347,8 +348,6 @@ "Restrict users to only share with users in their groups" : "הגבלת משתמשים לשתף רק עם משתמשים בקבוצה שלהם", "Exclude groups from sharing" : "מניעת קבוצות משיתוף", "These groups will still be able to receive shares, but not to initiate them." : "קבוצות אלו עדיין יוכלו לקבל שיתופים, אך לא לשתף בעצמם.", - "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף", - "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "הצגת טקסט הבהרה בעמוד ההעלאה בקישור הציבורי (מופיע רק כאשר רשימת הקבצים מוסתרת)", "This text will be shown on the public link upload page when the file list is hidden." : "טקסט זה יופיע בקישור עמוד ההעלאה של הקישור הציבורי כאשר רשימת הקבצים מוסתרת.", "Default share permissions" : "הרשאות שיתוף כבררת מחדל", @@ -373,7 +372,6 @@ "Migration in progress. Please wait until the migration is finished" : "המרה בביצוע. יש להמתין עד סיום ההמרה", "Migration started …" : "המרה החלה...", "Address" : "כתובת", - "Avatar" : "תמונה מייצגת", "An error occured during the request. Unable to proceed." : "אירעה שגיאה במהלך הבקשה. לא ניתן להמשיך.", "Plain" : "רגיל", "NT LAN Manager" : "מנהל רשת NT", @@ -391,6 +389,8 @@ "Pick background job setting" : "בחירת הגדרות למשימת רקע", "Recommended" : "מומלץ", "The cron.php needs to be executed by the system user \"%s\"." : "יש להפעיל את cron.php בתור משתמש המערכת „%s”.", + "Allow username autocompletion in share dialog" : "לאפשר השלמה אוטומטית של שם משתמש בחלונית השיתוף", + "Allow username autocompletion to users within the same groups" : "לאפשר השלמה אוטומטית של שם משתמש למשתמשים בתוך אותן הקבוצות", "Upload new" : "העלאת חדש", "Select from Files" : "בחירה מתוך קבצים", "Remove image" : "הסרת תמונה", diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js index f4c1983405a..ad7e90333c7 100644 --- a/apps/settings/l10n/hr.js +++ b/apps/settings/l10n/hr.js @@ -287,6 +287,7 @@ OC.L10N.register( "Email" : "E-pošta", "Default language" : "Zadani jezik", "Add a new user" : "Dodaj novog korisnika", + "Avatar" : "Avatar", "Group admin for" : "Administrator grupe za", "Quota" : "Kvota", "User backend" : "Korisnički pozadinski sustav", @@ -405,8 +406,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Ograniči korisnike na dijeljenje samo s korisnicima unutar svoje grupe", "Exclude groups from sharing" : "Izuzmi grupe iz dijeljenja", "These groups will still be able to receive shares, but not to initiate them." : "Ove će grupe još uvijek moći primati dijeljene sadržaje, ali ih neće moći pokrenuti.", - "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje", - "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa", "Allow username autocompletion to users based on phone number integration" : "Omogući korisnicima automatsko dovršavanje korisničkog imena na temelju integracije telefonskog broja", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ako je omogućeno automatsko dovršavanje „ista grupa” i „integracija telefonskog broja”, bilo koje od tih podudaranja dovoljno je za prikaz korisnika.", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Prikaži tekst izjave o odricanju od odgovornosti na stranici za otpremanje javnih poveznica (prikazuje se samo kad je popis datoteka skriven)", @@ -444,7 +443,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi", "Migration started …" : "Migracija je pokrenuta…", "Address" : "Adresa", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Došlo je do pogreške tijekom rješavanja zahtjeva. Nije moguće nastaviti.", "Plain" : "Čisti tekst", "NT LAN Manager" : "NT LAN Manager", @@ -462,6 +460,8 @@ OC.L10N.register( "Pick background job setting" : "Odaberite postavku pozadinskog zadatka", "Recommended" : "Preporuceno", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.", + "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje", + "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa", "Change privacy level of profile picture" : "Promijeni razinu privatnosti profilne slike", "Upload new" : "Otpremi novu", "Select from Files" : "Odaberi iz datoteka", diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json index 44be1bd7d5d..304743d7fa1 100644 --- a/apps/settings/l10n/hr.json +++ b/apps/settings/l10n/hr.json @@ -285,6 +285,7 @@ "Email" : "E-pošta", "Default language" : "Zadani jezik", "Add a new user" : "Dodaj novog korisnika", + "Avatar" : "Avatar", "Group admin for" : "Administrator grupe za", "Quota" : "Kvota", "User backend" : "Korisnički pozadinski sustav", @@ -403,8 +404,6 @@ "Restrict users to only share with users in their groups" : "Ograniči korisnike na dijeljenje samo s korisnicima unutar svoje grupe", "Exclude groups from sharing" : "Izuzmi grupe iz dijeljenja", "These groups will still be able to receive shares, but not to initiate them." : "Ove će grupe još uvijek moći primati dijeljene sadržaje, ali ih neće moći pokrenuti.", - "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje", - "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa", "Allow username autocompletion to users based on phone number integration" : "Omogući korisnicima automatsko dovršavanje korisničkog imena na temelju integracije telefonskog broja", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ako je omogućeno automatsko dovršavanje „ista grupa” i „integracija telefonskog broja”, bilo koje od tih podudaranja dovoljno je za prikaz korisnika.", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Prikaži tekst izjave o odricanju od odgovornosti na stranici za otpremanje javnih poveznica (prikazuje se samo kad je popis datoteka skriven)", @@ -442,7 +441,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migracije u tijeku. Pričekajte da migracija završi", "Migration started …" : "Migracija je pokrenuta…", "Address" : "Adresa", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Došlo je do pogreške tijekom rješavanja zahtjeva. Nije moguće nastaviti.", "Plain" : "Čisti tekst", "NT LAN Manager" : "NT LAN Manager", @@ -460,6 +458,8 @@ "Pick background job setting" : "Odaberite postavku pozadinskog zadatka", "Recommended" : "Preporuceno", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php treba izvršiti korisnik „%s”.", + "Allow username autocompletion in share dialog" : "Dopusti automatsko dovršavanje korisničkog imena u dijaloškom okviru za dijeljenje", + "Allow username autocompletion to users within the same groups" : "Dopusti automatsko dovršavanje korisničkog imena na korisnike iz istih grupa", "Change privacy level of profile picture" : "Promijeni razinu privatnosti profilne slike", "Upload new" : "Otpremi novu", "Select from Files" : "Odaberi iz datoteka", diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js index 0c2249a1ab3..8e15808744e 100644 --- a/apps/settings/l10n/hu.js +++ b/apps/settings/l10n/hu.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "E-mail", "Default language" : "Alapértelmezett nyelv", "Add a new user" : "Új felhasználó felvétele", + "Avatar" : "Profilkép", "Group admin for" : "Csoport rendszergazda itt:", "Quota" : "Kvóta", "User backend" : "Felhasználói háttérszolgáltatás", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "A felhasználók korlátozása, hogy csak a csoportjaikban lévő felhasználókkal oszthassanak meg dolgokat", "Exclude groups from sharing" : "Csoportok megosztási jogának tiltása", "These groups will still be able to receive shares, but not to initiate them." : "E csoportok tagjaival meg lehet osztani anyagokat, de ők nem hozhatnak létre megosztást.", - "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ", - "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ", "Allow username autocompletion to users based on phone number integration" : "A felhasználónév automatikus kiegészítésének engedélyezése a felhasználók számára a telefonszám integráció alapján ", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ha az „ugyanazon csoport” és a „telefonszám integráció” engedélyezett, akkor bármelyik egyezés elegendő a felhasználó megjelenítéséhez. ", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Az automatikus kiegészítés engedélyezése a teljes név vagy e-mail-cím megadásakor (figyelmen kívül hagyva a hiányzó telefonkönyves egyezést és az ugyanabba a csoportba tartozást)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Áttelepítés folyamatban. Kis türelmet, míg az áttelepítés befejeződik.", "Migration started …" : "Áttelepítés elindítva…", "Address" : "Cím", - "Avatar" : "Profilkép", "An error occured during the request. Unable to proceed." : "Hiba lépett fel a kérés közben. Nem lehet végrehajtani.", "Plain" : "Egyszerű", "NT LAN Manager" : "NT LAN Manager", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Háttérfolyamat beállítás kiválasztása", "Recommended" : "Ajánlott", "The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t „%s” rendszerfelhasználónak kell végrehajtania.", + "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ", + "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ", "Change privacy level of profile picture" : "A profilkép adatvédelmi szintjének módosítása", "Upload new" : "Új feltöltése", "Select from Files" : "Kiválasztás a Fájlokból", diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json index d47b6478521..25063673c90 100644 --- a/apps/settings/l10n/hu.json +++ b/apps/settings/l10n/hu.json @@ -359,6 +359,7 @@ "Email" : "E-mail", "Default language" : "Alapértelmezett nyelv", "Add a new user" : "Új felhasználó felvétele", + "Avatar" : "Profilkép", "Group admin for" : "Csoport rendszergazda itt:", "Quota" : "Kvóta", "User backend" : "Felhasználói háttérszolgáltatás", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "A felhasználók korlátozása, hogy csak a csoportjaikban lévő felhasználókkal oszthassanak meg dolgokat", "Exclude groups from sharing" : "Csoportok megosztási jogának tiltása", "These groups will still be able to receive shares, but not to initiate them." : "E csoportok tagjaival meg lehet osztani anyagokat, de ők nem hozhatnak létre megosztást.", - "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ", - "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ", "Allow username autocompletion to users based on phone number integration" : "A felhasználónév automatikus kiegészítésének engedélyezése a felhasználók számára a telefonszám integráció alapján ", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ha az „ugyanazon csoport” és a „telefonszám integráció” engedélyezett, akkor bármelyik egyezés elegendő a felhasználó megjelenítéséhez. ", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Az automatikus kiegészítés engedélyezése a teljes név vagy e-mail-cím megadásakor (figyelmen kívül hagyva a hiányzó telefonkönyves egyezést és az ugyanabba a csoportba tartozást)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Áttelepítés folyamatban. Kis türelmet, míg az áttelepítés befejeződik.", "Migration started …" : "Áttelepítés elindítva…", "Address" : "Cím", - "Avatar" : "Profilkép", "An error occured during the request. Unable to proceed." : "Hiba lépett fel a kérés közben. Nem lehet végrehajtani.", "Plain" : "Egyszerű", "NT LAN Manager" : "NT LAN Manager", @@ -544,6 +542,8 @@ "Pick background job setting" : "Háttérfolyamat beállítás kiválasztása", "Recommended" : "Ajánlott", "The cron.php needs to be executed by the system user \"%s\"." : "A cron.php-t „%s” rendszerfelhasználónak kell végrehajtania.", + "Allow username autocompletion in share dialog" : "A felhasználónév automatikus kiegészítésének engedélyezése a megosztás párbeszédpanelen ", + "Allow username autocompletion to users within the same groups" : "A felhasználónév automatikus kiegészítésének engedélyezése az azonos csoportokba tartozó felhasználók számára ", "Change privacy level of profile picture" : "A profilkép adatvédelmi szintjének módosítása", "Upload new" : "Új feltöltése", "Select from Files" : "Kiválasztás a Fájlokból", diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js index f527b09b838..48f9f60de3f 100644 --- a/apps/settings/l10n/id.js +++ b/apps/settings/l10n/id.js @@ -254,6 +254,7 @@ OC.L10N.register( "Email" : "Surel", "Default language" : "Bahasa bawaan", "Add a new user" : "Tambah pengguna baru", + "Avatar" : "Avatar", "Group admin for" : "Grup admin untuk", "Quota" : "Kuota", "User backend" : "Backend pengguna", @@ -363,7 +364,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai", "Migration started …" : "Migrasi dimulai …", "Address" : "Alamat", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Galat terjadi saat proses permintaan. Tidak dapat memproses.", "Plain" : "Biasa", "NT LAN Manager" : "Manajer NT LAN", diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json index 457e9a13ae8..7fb617c63de 100644 --- a/apps/settings/l10n/id.json +++ b/apps/settings/l10n/id.json @@ -252,6 +252,7 @@ "Email" : "Surel", "Default language" : "Bahasa bawaan", "Add a new user" : "Tambah pengguna baru", + "Avatar" : "Avatar", "Group admin for" : "Grup admin untuk", "Quota" : "Kuota", "User backend" : "Backend pengguna", @@ -361,7 +362,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migrasi sedang dalam proses. Mohon tunggu sampai migrasi selesai", "Migration started …" : "Migrasi dimulai …", "Address" : "Alamat", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Galat terjadi saat proses permintaan. Tidak dapat memproses.", "Plain" : "Biasa", "NT LAN Manager" : "Manajer NT LAN", diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js index bef520cec97..7494ed82ed8 100644 --- a/apps/settings/l10n/is.js +++ b/apps/settings/l10n/is.js @@ -229,6 +229,7 @@ OC.L10N.register( "Email" : "Netfang", "Default language" : "Sjálfgefið tungumál", "Add a new user" : "Bæta við nýjum notanda", + "Avatar" : "Auðkennismynd", "Group admin for" : "Hópstjóri fyrir", "Quota" : "Kvóti", "User backend" : "Bakendi notanda", @@ -346,7 +347,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið", "Migration started …" : "Yfirfærsla hafin...", "Address" : "Heimilisfang", - "Avatar" : "Auðkennismynd", "An error occured during the request. Unable to proceed." : "Villa kom upp við beiðnina. Get ekki haldið áfram.", "Plain" : "Einfalt", "NT LAN Manager" : "NT LAN stjórnun", diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json index 336b6761480..dad24186d40 100644 --- a/apps/settings/l10n/is.json +++ b/apps/settings/l10n/is.json @@ -227,6 +227,7 @@ "Email" : "Netfang", "Default language" : "Sjálfgefið tungumál", "Add a new user" : "Bæta við nýjum notanda", + "Avatar" : "Auðkennismynd", "Group admin for" : "Hópstjóri fyrir", "Quota" : "Kvóti", "User backend" : "Bakendi notanda", @@ -344,7 +345,6 @@ "Migration in progress. Please wait until the migration is finished" : "Yfirfærsla er í gangi. Dokaðu við þar til henni er lokið", "Migration started …" : "Yfirfærsla hafin...", "Address" : "Heimilisfang", - "Avatar" : "Auðkennismynd", "An error occured during the request. Unable to proceed." : "Villa kom upp við beiðnina. Get ekki haldið áfram.", "Plain" : "Einfalt", "NT LAN Manager" : "NT LAN stjórnun", diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js index 209a0100ce3..537966b5ff2 100644 --- a/apps/settings/l10n/it.js +++ b/apps/settings/l10n/it.js @@ -320,6 +320,7 @@ OC.L10N.register( "Email" : "Posta elettronica", "Default language" : "Lingua predefinita", "Add a new user" : "Aggiungi un nuovo utente", + "Avatar" : "Avatar", "Group admin for" : "Amministratore per il gruppo", "Quota" : "Quote", "User backend" : "Motore utente", @@ -440,8 +441,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Limita gli utenti a condividere solo con gli utenti nei loro gruppi", "Exclude groups from sharing" : "Escludi gruppi dalla condivisione", "These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.", - "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione", - "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi", "Allow username autocompletion to users based on phone number integration" : "Consenti il completamento del nome utente agli utenti basati sull'integrazione del numero di telefono", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se completamento di \"stesso gruppo\" e \"integrazione numero di telefono\" sono attivi, una corrispondenza in uno dei due è sufficiente per mostrare l'utente.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento automatico quando inserisci il nome completo o l'indirizzo e-mail (ignorando la corrispondenza della rubrica mancante e l'appartenenza allo stesso gruppo)", @@ -481,7 +480,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione", "Migration started …" : "Migrazione avviata...", "Address" : "Indirizzo", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Si è verificato un errore durante la richiesta. Impossibile continuare..", "Plain" : "Semplice", "NT LAN Manager" : "Gestore NT LAN", @@ -499,6 +497,8 @@ OC.L10N.register( "Pick background job setting" : "Scegli le impostazioni delle operazioni in background", "Recommended" : "Consigliata", "The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione", + "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi", "Change privacy level of profile picture" : "Cambia livello di privacy dell'immagine del profilo", "Upload new" : "Carica nuova", "Select from Files" : "Seleziona da file", diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json index 7083ecfe96c..e1653f34cdb 100644 --- a/apps/settings/l10n/it.json +++ b/apps/settings/l10n/it.json @@ -318,6 +318,7 @@ "Email" : "Posta elettronica", "Default language" : "Lingua predefinita", "Add a new user" : "Aggiungi un nuovo utente", + "Avatar" : "Avatar", "Group admin for" : "Amministratore per il gruppo", "Quota" : "Quote", "User backend" : "Motore utente", @@ -438,8 +439,6 @@ "Restrict users to only share with users in their groups" : "Limita gli utenti a condividere solo con gli utenti nei loro gruppi", "Exclude groups from sharing" : "Escludi gruppi dalla condivisione", "These groups will still be able to receive shares, but not to initiate them." : "Questi gruppi saranno in grado di ricevere condivisioni, ma non iniziarle.", - "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione", - "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi", "Allow username autocompletion to users based on phone number integration" : "Consenti il completamento del nome utente agli utenti basati sull'integrazione del numero di telefono", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se completamento di \"stesso gruppo\" e \"integrazione numero di telefono\" sono attivi, una corrispondenza in uno dei due è sufficiente per mostrare l'utente.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Consenti il completamento automatico quando inserisci il nome completo o l'indirizzo e-mail (ignorando la corrispondenza della rubrica mancante e l'appartenenza allo stesso gruppo)", @@ -479,7 +478,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migrazione in corso. Attendi fino al completamento della migrazione", "Migration started …" : "Migrazione avviata...", "Address" : "Indirizzo", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Si è verificato un errore durante la richiesta. Impossibile continuare..", "Plain" : "Semplice", "NT LAN Manager" : "Gestore NT LAN", @@ -497,6 +495,8 @@ "Pick background job setting" : "Scegli le impostazioni delle operazioni in background", "Recommended" : "Consigliata", "The cron.php needs to be executed by the system user \"%s\"." : "Il cron.php deve essere eseguito dall'utente di sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Consenti il completamento del nome utente nella finestra di condivisione", + "Allow username autocompletion to users within the same groups" : "Consenti il completamento del nome utente agli utenti degli stessi gruppi", "Change privacy level of profile picture" : "Cambia livello di privacy dell'immagine del profilo", "Upload new" : "Carica nuova", "Select from Files" : "Seleziona da file", diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js index d5a941b7684..7a7fd69d1de 100644 --- a/apps/settings/l10n/ja.js +++ b/apps/settings/l10n/ja.js @@ -354,6 +354,7 @@ OC.L10N.register( "Email" : "メール", "Default language" : "デフォルトの言語", "Add a new user" : "新しいユーザーを追加", + "Avatar" : "アバター", "Group admin for" : "グループの管理者", "Quota" : "クオータ", "User backend" : "ユーザーバックエンド", @@ -477,8 +478,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "グループ内のユーザーでのみ共有するように制限する", "Exclude groups from sharing" : "共有可能なグループから除外する", "These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。", - "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する", - "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する", "Allow username autocompletion to users based on phone number integration" : "電話番号を連携しているユーザーのユーザー名を自動補完する", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "自動補完で「同じグループ」と「電話番号の連携」が有効になっている場合は、どちらかに一致するだけでユーザーに表示されます。", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "氏名または電子メールアドレスを入力するときにユーザー名を自動補完する(連絡先での不一致、同じグループへの所属かどうかを無視)", @@ -519,7 +518,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。", "Migration started …" : "移行を開始しました…", "Address" : "住所", - "Avatar" : "アバター", "An error occured during the request. Unable to proceed." : "要求中にエラーが発生しました。 続行できません。", "Plain" : "平文", "NT LAN Manager" : "NT LAN マネージャー", @@ -538,6 +536,8 @@ OC.L10N.register( "Pick background job setting" : "バックグラウンドジョブ設定を選択", "Recommended" : "おすすめ", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。", + "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する", + "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する", "Change privacy level of profile picture" : "プロフィール写真のプライバシーレベルを変更", "Upload new" : "新たにアップロード", "Select from Files" : "ファイルから選択", diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json index 221ef55ee45..671095c406c 100644 --- a/apps/settings/l10n/ja.json +++ b/apps/settings/l10n/ja.json @@ -352,6 +352,7 @@ "Email" : "メール", "Default language" : "デフォルトの言語", "Add a new user" : "新しいユーザーを追加", + "Avatar" : "アバター", "Group admin for" : "グループの管理者", "Quota" : "クオータ", "User backend" : "ユーザーバックエンド", @@ -475,8 +476,6 @@ "Restrict users to only share with users in their groups" : "グループ内のユーザーでのみ共有するように制限する", "Exclude groups from sharing" : "共有可能なグループから除外する", "These groups will still be able to receive shares, but not to initiate them." : "このグループでは、フォルダー共有を開始することはできませんが、共有されたフォルダーを参照することはできます。", - "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する", - "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する", "Allow username autocompletion to users based on phone number integration" : "電話番号を連携しているユーザーのユーザー名を自動補完する", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "自動補完で「同じグループ」と「電話番号の連携」が有効になっている場合は、どちらかに一致するだけでユーザーに表示されます。", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "氏名または電子メールアドレスを入力するときにユーザー名を自動補完する(連絡先での不一致、同じグループへの所属かどうかを無視)", @@ -517,7 +516,6 @@ "Migration in progress. Please wait until the migration is finished" : "移行の処理中です。移行が完了するまでお待ちください。", "Migration started …" : "移行を開始しました…", "Address" : "住所", - "Avatar" : "アバター", "An error occured during the request. Unable to proceed." : "要求中にエラーが発生しました。 続行できません。", "Plain" : "平文", "NT LAN Manager" : "NT LAN マネージャー", @@ -536,6 +534,8 @@ "Pick background job setting" : "バックグラウンドジョブ設定を選択", "Recommended" : "おすすめ", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php はシステムユーザー \"%s\" で実行する必要があります。", + "Allow username autocompletion in share dialog" : "共有ダイアログでユーザー名を自動補完する", + "Allow username autocompletion to users within the same groups" : "同じグループ内のユーザーのみユーザー名を自動補完する", "Change privacy level of profile picture" : "プロフィール写真のプライバシーレベルを変更", "Upload new" : "新たにアップロード", "Select from Files" : "ファイルから選択", diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js index 91f0b62eb68..e60646a6a8d 100644 --- a/apps/settings/l10n/ka_GE.js +++ b/apps/settings/l10n/ka_GE.js @@ -159,6 +159,7 @@ OC.L10N.register( "{size} used" : "მოხმარებულია {size}", "Display name" : "დისპლეი სახელი", "Email" : "ელ-ფოსტა", + "Avatar" : "ავატარი", "Group admin for" : "ადმინისტრატორის შეჯგუფება", "Quota" : "ქვოტა", "User backend" : "მომხმარებელის ბექენდი", @@ -236,7 +237,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას", "Migration started …" : "მიგრაცია დაიწყო …", "Address" : "მისამართი", - "Avatar" : "ავატარი", "Plain" : "ჩვეულებრივი", "NT LAN Manager" : "NT LAN მენეჯერი", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json index 5ad107bb4f3..f93105d6d44 100644 --- a/apps/settings/l10n/ka_GE.json +++ b/apps/settings/l10n/ka_GE.json @@ -157,6 +157,7 @@ "{size} used" : "მოხმარებულია {size}", "Display name" : "დისპლეი სახელი", "Email" : "ელ-ფოსტა", + "Avatar" : "ავატარი", "Group admin for" : "ადმინისტრატორის შეჯგუფება", "Quota" : "ქვოტა", "User backend" : "მომხმარებელის ბექენდი", @@ -234,7 +235,6 @@ "Migration in progress. Please wait until the migration is finished" : "მიმდინარეობს მიგრაცია. გთხოვთ დაელოდოთ მიგრაციის დასრულებას", "Migration started …" : "მიგრაცია დაიწყო …", "Address" : "მისამართი", - "Avatar" : "ავატარი", "Plain" : "ჩვეულებრივი", "NT LAN Manager" : "NT LAN მენეჯერი", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js index b5bb43a1972..1d060a40d7e 100644 --- a/apps/settings/l10n/ko.js +++ b/apps/settings/l10n/ko.js @@ -321,6 +321,7 @@ OC.L10N.register( "Email" : "이메일", "Default language" : "기본 언어", "Add a new user" : "새 사용자 추가", + "Avatar" : "아바타", "Group admin for" : "다음 그룹의 관리자:", "Quota" : "할당량", "User backend" : "사용자 백엔드", @@ -469,7 +470,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오", "Migration started …" : "이전 시작됨...", "Address" : "주소", - "Avatar" : "아바타", "An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", "Plain" : "일반", "NT LAN Manager" : "NT LAN 관리자", diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json index bf99efe6365..00b9bc53361 100644 --- a/apps/settings/l10n/ko.json +++ b/apps/settings/l10n/ko.json @@ -319,6 +319,7 @@ "Email" : "이메일", "Default language" : "기본 언어", "Add a new user" : "새 사용자 추가", + "Avatar" : "아바타", "Group admin for" : "다음 그룹의 관리자:", "Quota" : "할당량", "User backend" : "사용자 백엔드", @@ -467,7 +468,6 @@ "Migration in progress. Please wait until the migration is finished" : "이전 작업 중입니다. 작업이 완료될 때까지 기다려 주십시오", "Migration started …" : "이전 시작됨...", "Address" : "주소", - "Avatar" : "아바타", "An error occured during the request. Unable to proceed." : "요청을 보내는 도중 에러가 발생하였습니다. 더 이상 진행할 수 없습니다.", "Plain" : "일반", "NT LAN Manager" : "NT LAN 관리자", diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js index 5b5d99af552..4ebccb3982c 100644 --- a/apps/settings/l10n/lt_LT.js +++ b/apps/settings/l10n/lt_LT.js @@ -318,6 +318,7 @@ OC.L10N.register( "Email" : "El. paštas", "Default language" : "Numatytoji kalba", "Add a new user" : "Pridėti naują naudotoją", + "Avatar" : "Avataras", "Group admin for" : "Grupės administratorius", "Quota" : "Limitas", "User backend" : "Naudotojo vidinė pusė", @@ -459,7 +460,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", "Migration started …" : "Perkėlimas pradėtas …", "Address" : "Adresas", - "Avatar" : "Avataras", "An error occured during the request. Unable to proceed." : "Užklausos metu, įvyko klaida. Nepavyksta tęsti.", "Plain" : "Paprastas", "NT LAN Manager" : "NT LAN tvarkytuvė", diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json index 6315827c13d..612877da52e 100644 --- a/apps/settings/l10n/lt_LT.json +++ b/apps/settings/l10n/lt_LT.json @@ -316,6 +316,7 @@ "Email" : "El. paštas", "Default language" : "Numatytoji kalba", "Add a new user" : "Pridėti naują naudotoją", + "Avatar" : "Avataras", "Group admin for" : "Grupės administratorius", "Quota" : "Limitas", "User backend" : "Naudotojo vidinė pusė", @@ -457,7 +458,6 @@ "Migration in progress. Please wait until the migration is finished" : "Vyksta perkėlimas. Palaukite, kol perkėlimas bus užbaigtas", "Migration started …" : "Perkėlimas pradėtas …", "Address" : "Adresas", - "Avatar" : "Avataras", "An error occured during the request. Unable to proceed." : "Užklausos metu, įvyko klaida. Nepavyksta tęsti.", "Plain" : "Paprastas", "NT LAN Manager" : "NT LAN tvarkytuvė", diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js index f03925fd801..66abc324450 100644 --- a/apps/settings/l10n/lv.js +++ b/apps/settings/l10n/lv.js @@ -109,6 +109,7 @@ OC.L10N.register( "Add" : "Pievienot", "Display name" : "Ekrāna vārds", "Email" : "E-pasts", + "Avatar" : "Profila attēls", "Group admin for" : "Admin grupa", "Quota" : "Apjoms", "Storage location" : "Krātuves atrašanās vieta", @@ -168,7 +169,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Notiek migrācija. Lūdzu, pagaidiet, līdz migrēšana ir pabeigta", "Migration started …" : "Uzsākta migrācija...", "Address" : "Adrese", - "Avatar" : "Profila attēls", "Plain" : "vienkāršs teksts", "NT LAN Manager" : "NT LAN Pārvaldnieks", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json index d5d7b56e1e9..303e8c74660 100644 --- a/apps/settings/l10n/lv.json +++ b/apps/settings/l10n/lv.json @@ -107,6 +107,7 @@ "Add" : "Pievienot", "Display name" : "Ekrāna vārds", "Email" : "E-pasts", + "Avatar" : "Profila attēls", "Group admin for" : "Admin grupa", "Quota" : "Apjoms", "Storage location" : "Krātuves atrašanās vieta", @@ -166,7 +167,6 @@ "Migration in progress. Please wait until the migration is finished" : "Notiek migrācija. Lūdzu, pagaidiet, līdz migrēšana ir pabeigta", "Migration started …" : "Uzsākta migrācija...", "Address" : "Adrese", - "Avatar" : "Profila attēls", "Plain" : "vienkāršs teksts", "NT LAN Manager" : "NT LAN Pārvaldnieks", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js index cb8ef036520..3c2d4c8398e 100644 --- a/apps/settings/l10n/mk.js +++ b/apps/settings/l10n/mk.js @@ -342,6 +342,7 @@ OC.L10N.register( "Email" : "Е-пошта", "Default language" : "Стајдарден јазик", "Add a new user" : "Додади нов корисник", + "Avatar" : "Аватар", "Group admin for" : "Администратор на група", "Quota" : "Квота", "User backend" : "Задна страна на корисник", @@ -463,8 +464,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", "Exclude groups from sharing" : "Исклучи групи од споделување", "These groups will still be able to receive shares, but not to initiate them." : "Овие групи сеуште ќе можат да добиваат споделувања, но не и да ги иницираат.", - "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување", - "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ", "Allow username autocompletion to users based on phone number integration" : "Овозможи автоматско комплетирање на корисниците од интеграцијата со телефонски број", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако се овозможени автоматско пополнување \"иста група\" и \"интеграција на телефонски број\", доволно е да се совпадне или да се прикаже на корисникот.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "озволете автоматско пополнување кога го внесувате целосното име или адресата на е-пошта (игнорирање што недостасува совпаѓање со именикот и сте во иста група)", @@ -500,7 +499,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши", "Migration started …" : "Миграцијата е започнаа ...", "Address" : "Адреса", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.", "Plain" : "Чиста", "NT LAN Manager" : "NT LAN Менаџер", @@ -519,6 +517,8 @@ OC.L10N.register( "Pick background job setting" : "Избери го начинот на извршување на задачите во позадина", "Recommended" : "Препорачано", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".", + "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување", + "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ", "Change privacy level of profile picture" : "Променете го нивото на приватност за сликата на профилот", "Upload new" : "Прикачи нова", "Select from Files" : "Избри од датотеките", diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json index 639f9db5c1e..c91f25ecc35 100644 --- a/apps/settings/l10n/mk.json +++ b/apps/settings/l10n/mk.json @@ -340,6 +340,7 @@ "Email" : "Е-пошта", "Default language" : "Стајдарден јазик", "Add a new user" : "Додади нов корисник", + "Avatar" : "Аватар", "Group admin for" : "Администратор на група", "Quota" : "Квота", "User backend" : "Задна страна на корисник", @@ -461,8 +462,6 @@ "Restrict users to only share with users in their groups" : "Ограничи корисниците да споделуваат со корисници во своите групи", "Exclude groups from sharing" : "Исклучи групи од споделување", "These groups will still be able to receive shares, but not to initiate them." : "Овие групи сеуште ќе можат да добиваат споделувања, но не и да ги иницираат.", - "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување", - "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ", "Allow username autocompletion to users based on phone number integration" : "Овозможи автоматско комплетирање на корисниците од интеграцијата со телефонски број", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако се овозможени автоматско пополнување \"иста група\" и \"интеграција на телефонски број\", доволно е да се совпадне или да се прикаже на корисникот.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "озволете автоматско пополнување кога го внесувате целосното име или адресата на е-пошта (игнорирање што недостасува совпаѓање со именикот и сте во иста група)", @@ -498,7 +497,6 @@ "Migration in progress. Please wait until the migration is finished" : "Миграцијата е во тек. Ве молиме почекајте додека миграцијата заврши", "Migration started …" : "Миграцијата е започнаа ...", "Address" : "Адреса", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Настана грешка во процесот. Не може да продолжи.", "Plain" : "Чиста", "NT LAN Manager" : "NT LAN Менаџер", @@ -517,6 +515,8 @@ "Pick background job setting" : "Избери го начинот на извршување на задачите во позадина", "Recommended" : "Препорачано", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php е потребно да биде извршен од системски корисник\" %s\".", + "Allow username autocompletion in share dialog" : "Дозволи автоматско комплетирање на корисници за споделување", + "Allow username autocompletion to users within the same groups" : "Овозможи автоматско комплетирање за корисници од исти групи ", "Change privacy level of profile picture" : "Променете го нивото на приватност за сликата на профилот", "Upload new" : "Прикачи нова", "Select from Files" : "Избри од датотеките", diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js index 1fb9f3fd118..edf36a820fa 100644 --- a/apps/settings/l10n/nb.js +++ b/apps/settings/l10n/nb.js @@ -324,6 +324,7 @@ OC.L10N.register( "Email" : "E-post", "Default language" : "Standard språk", "Add a new user" : "Legg til en ny bruker", + "Avatar" : "Avatar", "Group admin for" : "Gruppeadministrator for", "Quota" : "Kvote", "User backend" : "Bruker-server", @@ -460,7 +461,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", "Migration started …" : "Migrering startet…", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "En feil oppsto under forespørselen. Kan ikke fortsette.", "Plain" : "Enkel", "NT LAN Manager" : "NT LAN-behandler", diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json index 45eddd03750..7637a7f9dc9 100644 --- a/apps/settings/l10n/nb.json +++ b/apps/settings/l10n/nb.json @@ -322,6 +322,7 @@ "Email" : "E-post", "Default language" : "Standard språk", "Add a new user" : "Legg til en ny bruker", + "Avatar" : "Avatar", "Group admin for" : "Gruppeadministrator for", "Quota" : "Kvote", "User backend" : "Bruker-server", @@ -458,7 +459,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", "Migration started …" : "Migrering startet…", "Address" : "Adresse", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "En feil oppsto under forespørselen. Kan ikke fortsette.", "Plain" : "Enkel", "NT LAN Manager" : "NT LAN-behandler", diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js index a2967a16f87..f3ca048d090 100644 --- a/apps/settings/l10n/nl.js +++ b/apps/settings/l10n/nl.js @@ -312,6 +312,7 @@ OC.L10N.register( "Email" : "E-mailadres", "Default language" : "Standaardtaal", "Add a new user" : "Nieuwe gebruiker toevoegen", + "Avatar" : "Avatar", "Group admin for" : "Groepsbeheerder voor", "Quota" : "Limieten", "User backend" : "Backend gebruiker", @@ -432,8 +433,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen", "Exclude groups from sharing" : "Sta bepaalde groepen niet toe om te delen", "These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen en bestanden ontvangen, maar kunnen zelf niks delen.", - "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan", - "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan", "Allow username autocompletion to users based on phone number integration" : "Toestaan automatisch aanvullen van gebruikersnamen gebaseerd op telefoonnummer integratie", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Als automatisch aanvullen \"dezelfde groep\" en \"telefoonnummer integratie\" zijn ingeschakeld, is een overeenkomst in een van beide voldoende om de gebruiker te tonen.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Automatisch aanvullen toestaan bij het invoeren van de volledige naam of het e-mailadres (ontbrekende overeenkomst in het telefoonboek negeren en deel uitmaken van dezelfde groep)", @@ -473,7 +472,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.", "Migration started …" : "Migratie gestart...", "Address" : "Adres", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Er trad een fout op bij de aanvraag. Kan niet doorgaan.", "Plain" : "Gewoon", "NT LAN Manager" : "NT LAN Manager", @@ -491,6 +489,8 @@ OC.L10N.register( "Pick background job setting" : "Kies de achtergrondtaak instelling", "Recommended" : "Aanbevolen", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".", + "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan", + "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan", "Change privacy level of profile picture" : "Wijzigen privacyniveau van profielafbeelding", "Upload new" : "Upload een nieuwe", "Select from Files" : "Kies uit bestanden", diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json index e19b07162aa..7aac00c4d5d 100644 --- a/apps/settings/l10n/nl.json +++ b/apps/settings/l10n/nl.json @@ -310,6 +310,7 @@ "Email" : "E-mailadres", "Default language" : "Standaardtaal", "Add a new user" : "Nieuwe gebruiker toevoegen", + "Avatar" : "Avatar", "Group admin for" : "Groepsbeheerder voor", "Quota" : "Limieten", "User backend" : "Backend gebruiker", @@ -430,8 +431,6 @@ "Restrict users to only share with users in their groups" : "Laat gebruikers alleen delen met andere gebruikers in hun groepen", "Exclude groups from sharing" : "Sta bepaalde groepen niet toe om te delen", "These groups will still be able to receive shares, but not to initiate them." : "Deze groepen kunnen gedeelde mappen en bestanden ontvangen, maar kunnen zelf niks delen.", - "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan", - "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan", "Allow username autocompletion to users based on phone number integration" : "Toestaan automatisch aanvullen van gebruikersnamen gebaseerd op telefoonnummer integratie", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Als automatisch aanvullen \"dezelfde groep\" en \"telefoonnummer integratie\" zijn ingeschakeld, is een overeenkomst in een van beide voldoende om de gebruiker te tonen.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Automatisch aanvullen toestaan bij het invoeren van de volledige naam of het e-mailadres (ontbrekende overeenkomst in het telefoonboek negeren en deel uitmaken van dezelfde groep)", @@ -471,7 +470,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migratie bezig. Wacht tot het proces klaar is.", "Migration started …" : "Migratie gestart...", "Address" : "Adres", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Er trad een fout op bij de aanvraag. Kan niet doorgaan.", "Plain" : "Gewoon", "NT LAN Manager" : "NT LAN Manager", @@ -489,6 +487,8 @@ "Pick background job setting" : "Kies de achtergrondtaak instelling", "Recommended" : "Aanbevolen", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php moet worden uitgevoerd door systeemgebruiker \"%s\".", + "Allow username autocompletion in share dialog" : "Automatisch aanvullen gebruikersnamen binnen deeldialoog toegestaan", + "Allow username autocompletion to users within the same groups" : "Automatisch aanvullen van gebruikersnamen voor de gebruikers binnen dezelfde groepen toegestaan", "Change privacy level of profile picture" : "Wijzigen privacyniveau van profielafbeelding", "Upload new" : "Upload een nieuwe", "Select from Files" : "Kies uit bestanden", diff --git a/apps/settings/l10n/nn_NO.js b/apps/settings/l10n/nn_NO.js index 19c83032323..cbac9f99b77 100644 --- a/apps/settings/l10n/nn_NO.js +++ b/apps/settings/l10n/nn_NO.js @@ -80,6 +80,7 @@ OC.L10N.register( "Help translate" : "Hjelp oss å omsetja", "Add" : "Legg til", "Email" : "E-post", + "Avatar" : "Avatar", "Quota" : "Kvote", "Last login" : "Siste innlogging", "Add group" : "Legg til gruppe", @@ -117,7 +118,6 @@ OC.L10N.register( "Couldn't update app." : "Klarte ikkje oppdatera programmet.", "Migration started …" : "Overføring har starta…", "Address" : "Adresse", - "Avatar" : "Avatar", "Enable encryption" : "Aktiver kryptering", "Start migration" : "Start migrasjon", "Upload new" : "Last opp ny", diff --git a/apps/settings/l10n/nn_NO.json b/apps/settings/l10n/nn_NO.json index b605488e346..f68edadb040 100644 --- a/apps/settings/l10n/nn_NO.json +++ b/apps/settings/l10n/nn_NO.json @@ -78,6 +78,7 @@ "Help translate" : "Hjelp oss å omsetja", "Add" : "Legg til", "Email" : "E-post", + "Avatar" : "Avatar", "Quota" : "Kvote", "Last login" : "Siste innlogging", "Add group" : "Legg til gruppe", @@ -115,7 +116,6 @@ "Couldn't update app." : "Klarte ikkje oppdatera programmet.", "Migration started …" : "Overføring har starta…", "Address" : "Adresse", - "Avatar" : "Avatar", "Enable encryption" : "Aktiver kryptering", "Start migration" : "Start migrasjon", "Upload new" : "Last opp ny", diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js index bd70d1660e1..c3fa6e5bb26 100644 --- a/apps/settings/l10n/oc.js +++ b/apps/settings/l10n/oc.js @@ -172,6 +172,7 @@ OC.L10N.register( "Email" : "Adreça corrièl", "Default language" : "Lenga per defaut", "Add a new user" : "Apondre un utilizaire novè", + "Avatar" : "Avatar", "Quota" : "Quota", "Last login" : "Darrièra connexion", "No users in here" : "Cap d’utilizaire aquí", @@ -253,7 +254,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migracion en cors. Mercés d’esperar fins que la migracion aja acabat", "Migration started …" : "Migracion començada…", "Address" : "Adreça", - "Avatar" : "Avatar", "STARTTLS" : "STARTTLS", "Enable encryption" : "Activar lo chiframent", "Start migration" : "Començar la migracion", diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json index 9230831f4eb..23709bf2957 100644 --- a/apps/settings/l10n/oc.json +++ b/apps/settings/l10n/oc.json @@ -170,6 +170,7 @@ "Email" : "Adreça corrièl", "Default language" : "Lenga per defaut", "Add a new user" : "Apondre un utilizaire novè", + "Avatar" : "Avatar", "Quota" : "Quota", "Last login" : "Darrièra connexion", "No users in here" : "Cap d’utilizaire aquí", @@ -251,7 +252,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migracion en cors. Mercés d’esperar fins que la migracion aja acabat", "Migration started …" : "Migracion començada…", "Address" : "Adreça", - "Avatar" : "Avatar", "STARTTLS" : "STARTTLS", "Enable encryption" : "Activar lo chiframent", "Start migration" : "Començar la migracion", diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js index 9c3df5b5331..87639013523 100644 --- a/apps/settings/l10n/pl.js +++ b/apps/settings/l10n/pl.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "E-mail", "Default language" : "Domyślny język", "Add a new user" : "Dodaj użytkownika", + "Avatar" : "Awatar", "Group admin for" : "Administrator grupy", "Quota" : "Limit", "User backend" : "Moduł użytkownika", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Ogranicz użytkownikom możliwość udostępniania, pozwól tylko w swoich grupach", "Exclude groups from sharing" : "Wyklucz grupy z udostępniania", "These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogły otrzymywać udostępnienia, ale nie będą mogły ich tworzyć.", - "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia", - "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach", "Allow username autocompletion to users based on phone number integration" : "Zezwalaj na automatyczne uzupełnianie nazw użytkowników na podstawie integracji numeru telefonu", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Jeśli automatyczne uzupełnianie \"ta sama grupa\" i \"integracja numeru telefonu\" są włączone, wystarczy dopasowanie w jednej z nich, aby pokazać użytkownikowi.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na autouzupełnianie podczas wpisywania pełnej nazwy lub adresu e-mail (ignorując brak dopasowania książki telefonicznej i bycie w tej samej grupie)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migracja w toku. Poczekaj na zakończenie migracji.", "Migration started …" : "Migracja rozpoczęta…", "Address" : "Adres", - "Avatar" : "Awatar", "An error occured during the request. Unable to proceed." : "Wystąpił błąd zapytania. Nie można kontynuować.", "Plain" : "Czysty tekst", "NT LAN Manager" : "NT LAN Manager", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Wybierz ustawienie zadania w tle", "Recommended" : "Zalecane", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".", + "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia", + "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach", "Change privacy level of profile picture" : "Zmień poziom prywatności zdjęcia profilowego", "Upload new" : "Wczytaj nowe", "Select from Files" : "Wybierz z Plików", diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json index 905cb37e23d..6fb51fa4949 100644 --- a/apps/settings/l10n/pl.json +++ b/apps/settings/l10n/pl.json @@ -359,6 +359,7 @@ "Email" : "E-mail", "Default language" : "Domyślny język", "Add a new user" : "Dodaj użytkownika", + "Avatar" : "Awatar", "Group admin for" : "Administrator grupy", "Quota" : "Limit", "User backend" : "Moduł użytkownika", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Ogranicz użytkownikom możliwość udostępniania, pozwól tylko w swoich grupach", "Exclude groups from sharing" : "Wyklucz grupy z udostępniania", "These groups will still be able to receive shares, but not to initiate them." : "Grupy te nadal będą mogły otrzymywać udostępnienia, ale nie będą mogły ich tworzyć.", - "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia", - "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach", "Allow username autocompletion to users based on phone number integration" : "Zezwalaj na automatyczne uzupełnianie nazw użytkowników na podstawie integracji numeru telefonu", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Jeśli automatyczne uzupełnianie \"ta sama grupa\" i \"integracja numeru telefonu\" są włączone, wystarczy dopasowanie w jednej z nich, aby pokazać użytkownikowi.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Zezwalaj na autouzupełnianie podczas wpisywania pełnej nazwy lub adresu e-mail (ignorując brak dopasowania książki telefonicznej i bycie w tej samej grupie)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migracja w toku. Poczekaj na zakończenie migracji.", "Migration started …" : "Migracja rozpoczęta…", "Address" : "Adres", - "Avatar" : "Awatar", "An error occured during the request. Unable to proceed." : "Wystąpił błąd zapytania. Nie można kontynuować.", "Plain" : "Czysty tekst", "NT LAN Manager" : "NT LAN Manager", @@ -544,6 +542,8 @@ "Pick background job setting" : "Wybierz ustawienie zadania w tle", "Recommended" : "Zalecane", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php musi zostać wykonywany przez użytkownika systemu \"%s\".", + "Allow username autocompletion in share dialog" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika w oknie udostępnienia", + "Allow username autocompletion to users within the same groups" : "Zezwalaj na automatyczne uzupełnianie nazwy użytkownika dla użytkowników w tych samych grupach", "Change privacy level of profile picture" : "Zmień poziom prywatności zdjęcia profilowego", "Upload new" : "Wczytaj nowe", "Select from Files" : "Wybierz z Plików", diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js index de47a77c807..cd9304c9420 100644 --- a/apps/settings/l10n/pt_BR.js +++ b/apps/settings/l10n/pt_BR.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "E-mail", "Default language" : "Idioma padrão", "Add a new user" : "Adicione um novo usuário", + "Avatar" : "Avatar", "Group admin for" : "Admin. de grupo", "Quota" : "Cota", "User backend" : "Plataforma de serviço de usuário", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Restringir os usuários para compartilhar apenas com usuários em seus grupos", "Exclude groups from sharing" : "Impedir que alguns grupos compartilhem", "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos ainda serão capazes de receber compartilhamentos, mas não iniciá-los.", - "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento", - "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos", "Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar o nome do usuário com base na integração do número de telefone", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se autocompletar \"mesmo grupo\" e \"integração do número de telefone\" estiverem habilitadas, uma correspondência em qualquer um dos dois é suficiente para mostrar o usuário.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir preenchimento automático ao inserir o nome completo ou o endereço de e-mail (ignorando a correspondência ausente da agenda telefônica e estando no mesmo grupo)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que esteja finalizada", "Migration started …" : "Migração iniciada...", "Address" : "Endereço", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ocorreu um erro durante a requisição. Impossível continuar.", "Plain" : "Plano", "NT LAN Manager" : "Gerenciador NT LAN", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Configuração de trabalhos em segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"", + "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento", + "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos", "Change privacy level of profile picture" : "Alterar o nível de privacidade da foto do perfil ", "Upload new" : "Enviar novo", "Select from Files" : "Selecionar de Arquivos", diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json index de8b1623427..f650c3112b5 100644 --- a/apps/settings/l10n/pt_BR.json +++ b/apps/settings/l10n/pt_BR.json @@ -359,6 +359,7 @@ "Email" : "E-mail", "Default language" : "Idioma padrão", "Add a new user" : "Adicione um novo usuário", + "Avatar" : "Avatar", "Group admin for" : "Admin. de grupo", "Quota" : "Cota", "User backend" : "Plataforma de serviço de usuário", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Restringir os usuários para compartilhar apenas com usuários em seus grupos", "Exclude groups from sharing" : "Impedir que alguns grupos compartilhem", "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos ainda serão capazes de receber compartilhamentos, mas não iniciá-los.", - "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento", - "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos", "Allow username autocompletion to users based on phone number integration" : "Permitir autocompletar o nome do usuário com base na integração do número de telefone", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se autocompletar \"mesmo grupo\" e \"integração do número de telefone\" estiverem habilitadas, uma correspondência em qualquer um dos dois é suficiente para mostrar o usuário.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir preenchimento automático ao inserir o nome completo ou o endereço de e-mail (ignorando a correspondência ausente da agenda telefônica e estando no mesmo grupo)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que esteja finalizada", "Migration started …" : "Migração iniciada...", "Address" : "Endereço", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ocorreu um erro durante a requisição. Impossível continuar.", "Plain" : "Plano", "NT LAN Manager" : "Gerenciador NT LAN", @@ -544,6 +542,8 @@ "Pick background job setting" : "Configuração de trabalhos em segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php precisa ser executado pelo usuário de sistema \"%s\"", + "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuário na caixa de compartilhamento", + "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuário para usuários dentro dos mesmos grupos", "Change privacy level of profile picture" : "Alterar o nível de privacidade da foto do perfil ", "Upload new" : "Enviar novo", "Select from Files" : "Selecionar de Arquivos", diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js index 378923fc540..954f7b5ebe5 100644 --- a/apps/settings/l10n/pt_PT.js +++ b/apps/settings/l10n/pt_PT.js @@ -206,6 +206,7 @@ OC.L10N.register( "{size} used" : "{size} utilizado", "Display name" : "Nome de apresentação", "Email" : "Email", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grupo para", "Quota" : "Quota", "User backend" : "Backend do utilizador", @@ -289,7 +290,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..", "Migration started …" : "Migração iniciada...", "Address" : "Morada", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Gestor de REDE NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json index 49817f5fd6b..8ac73024311 100644 --- a/apps/settings/l10n/pt_PT.json +++ b/apps/settings/l10n/pt_PT.json @@ -204,6 +204,7 @@ "{size} used" : "{size} utilizado", "Display name" : "Nome de apresentação", "Email" : "Email", + "Avatar" : "Avatar", "Group admin for" : "Administrador de grupo para", "Quota" : "Quota", "User backend" : "Backend do utilizador", @@ -287,7 +288,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até que a mesma esteja concluída..", "Migration started …" : "Migração iniciada...", "Address" : "Morada", - "Avatar" : "Avatar", "Plain" : "Plano", "NT LAN Manager" : "Gestor de REDE NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js index 84f5ff4e475..d49150fb7e5 100644 --- a/apps/settings/l10n/ro.js +++ b/apps/settings/l10n/ro.js @@ -201,6 +201,7 @@ OC.L10N.register( "Display name" : "Nume afișat", "Email" : "Email", "Default language" : "Limba implicită", + "Avatar" : "Avatar", "Quota" : "Cotă", "Add WebAuthn device" : "Adăugați dispozitivul WebAuthn", "Name your device" : "Numiți dispozitivul dvs.", @@ -271,7 +272,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată", "Migration started …" : "Migrarea a început...", "Address" : "Adresă", - "Avatar" : "Avatar", "Plain" : "Plain", "NT LAN Manager" : "NT LAN Manager", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json index 0131d7bcd80..c9e59310a84 100644 --- a/apps/settings/l10n/ro.json +++ b/apps/settings/l10n/ro.json @@ -199,6 +199,7 @@ "Display name" : "Nume afișat", "Email" : "Email", "Default language" : "Limba implicită", + "Avatar" : "Avatar", "Quota" : "Cotă", "Add WebAuthn device" : "Adăugați dispozitivul WebAuthn", "Name your device" : "Numiți dispozitivul dvs.", @@ -269,7 +270,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migrare în progres. Așteaptă până când migrarea este finalizată", "Migration started …" : "Migrarea a început...", "Address" : "Adresă", - "Avatar" : "Avatar", "Plain" : "Plain", "NT LAN Manager" : "NT LAN Manager", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js index 022a30b3572..5c2e57e6022 100644 --- a/apps/settings/l10n/ru.js +++ b/apps/settings/l10n/ru.js @@ -363,6 +363,7 @@ OC.L10N.register( "Email" : "Адрес эл. почты", "Default language" : "Язык по умолчанию", "Add a new user" : "Создать пользователя", + "Avatar" : "Аватар", "Group admin for" : "Администратор групп", "Quota" : "Квота", "User backend" : "Механизм учёта", @@ -487,8 +488,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Запретить делиться с пользователями из других групп", "Exclude groups from sharing" : "Запретить публикацию указанным группам:", "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не смогут их создавать.", - "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа", - "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах", "Allow username autocompletion to users based on phone number integration" : "Разрешить пользователям автозаполнение имени пользователя на основе интеграции номера телефона", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Если автозаполнение «одна группа» и «интеграция телефонного номера» включены, совпадения в любом из них достаточно, чтобы отобразить пользователя.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешить автозаполнение при вводе полного имени или адреса электронной почты (игнорируя отсутствие совпадений в телефонной книге и нахождение в одной группе)", @@ -529,7 +528,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения", "Migration started …" : "Перенос начат…", "Address" : "Адрес", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Во время запроса произошла ошибка. Продолжение невозможно", "Plain" : "Простой", "NT LAN Manager" : "Менеджер NT LAN", @@ -548,6 +546,8 @@ OC.L10N.register( "Pick background job setting" : "Выбрать параметр выполнения фоновых задач", "Recommended" : "Рекомендовано", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".", + "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа", + "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах", "Change privacy level of profile picture" : "Изменить уровень конфиденциальности изображения профиля", "Upload new" : "Загрузить", "Select from Files" : "Выбрать в приложении Файлы", diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json index d41e4e4a375..727823d799f 100644 --- a/apps/settings/l10n/ru.json +++ b/apps/settings/l10n/ru.json @@ -361,6 +361,7 @@ "Email" : "Адрес эл. почты", "Default language" : "Язык по умолчанию", "Add a new user" : "Создать пользователя", + "Avatar" : "Аватар", "Group admin for" : "Администратор групп", "Quota" : "Квота", "User backend" : "Механизм учёта", @@ -485,8 +486,6 @@ "Restrict users to only share with users in their groups" : "Запретить делиться с пользователями из других групп", "Exclude groups from sharing" : "Запретить публикацию указанным группам:", "These groups will still be able to receive shares, but not to initiate them." : "Эти группы смогут получать общие ресурсы, но не смогут их создавать.", - "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа", - "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах", "Allow username autocompletion to users based on phone number integration" : "Разрешить пользователям автозаполнение имени пользователя на основе интеграции номера телефона", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Если автозаполнение «одна группа» и «интеграция телефонного номера» включены, совпадения в любом из них достаточно, чтобы отобразить пользователя.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Разрешить автозаполнение при вводе полного имени или адреса электронной почты (игнорируя отсутствие совпадений в телефонной книге и нахождение в одной группе)", @@ -527,7 +526,6 @@ "Migration in progress. Please wait until the migration is finished" : "Перенос выполняется, дождитесь завершения", "Migration started …" : "Перенос начат…", "Address" : "Адрес", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Во время запроса произошла ошибка. Продолжение невозможно", "Plain" : "Простой", "NT LAN Manager" : "Менеджер NT LAN", @@ -546,6 +544,8 @@ "Pick background job setting" : "Выбрать параметр выполнения фоновых задач", "Recommended" : "Рекомендовано", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php должен исполняться из под пользователя \"%s\".", + "Allow username autocompletion in share dialog" : "Разрешить автозаполнение имени пользователя в диалоговом окне общего доступа", + "Allow username autocompletion to users within the same groups" : "Разрешить автозаполнение имени пользователя для пользователей в тех же группах", "Change privacy level of profile picture" : "Изменить уровень конфиденциальности изображения профиля", "Upload new" : "Загрузить", "Select from Files" : "Выбрать в приложении Файлы", diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js index 059a50cc526..3f8bd5948b7 100644 --- a/apps/settings/l10n/sc.js +++ b/apps/settings/l10n/sc.js @@ -263,6 +263,7 @@ OC.L10N.register( "Email" : "Posta eletrònica", "Default language" : "Limba predefinida", "Add a new user" : "Agiunghe un'utèntzia noa", + "Avatar" : "Avatar", "Group admin for" : "In amministratzione pro su grupu", "Quota" : "Cuota", "User backend" : "Motore utente", @@ -372,8 +373,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Lìmita is utentes a sa cumpartzidura isceti cun utentes in is grupos issoro", "Exclude groups from sharing" : "Esclude grupos dae sa cumpartzidura", "These groups will still be able to receive shares, but not to initiate them." : "Custos grupos ant a pòdere retzire cumpartziduras, ma no ddas ant a pòdere cumintzare.", - "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura", - "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu", "Allow username autocompletion to users based on phone number integration" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes segundu s'integratzione de su nùmeru de telèfonu", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si sa cumponidura automàtica \"matessi grupu\" e \"integratzione de nùmeru de telèfonu\" sunt ativadas, una currispondèntzia in unu de is duas bastat a mustrare s'utente.", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mustra sa liberatòria in sa pàgina de carrigamentu de su ligòngiu pùblicu (mustradu isceti cando s'archìviu de sa lista est cuadu)", @@ -400,7 +399,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Tràmuda in cursu. Abeta finas a cando at a acabbare", "Migration started …" : "Tràmuda aviada …", "Address" : "Indiritzu", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ddoe at àpidu un'errore in sa dimanda. Impossìbile a sighire.", "Plain" : "Simpre", "NT LAN Manager" : "NT LAN Manager", @@ -417,6 +415,8 @@ OC.L10N.register( "Background job didn’t run yet!" : "S'atividade in segundu pianu no est ancora istada esecutada!", "Pick background job setting" : "Sèbera s'impostatzione de s'atividade in segundu pianu", "The cron.php needs to be executed by the system user \"%s\"." : "Su cron.php depet èssere esecutadu dae s'utente de sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura", + "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu", "Change privacy level of profile picture" : "Càmbia su livellu de riservadesa de s'imàgine de profilu", "Upload new" : "Càrriga noa", "Select from Files" : "Seletziona dae Archìvios", diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json index 10f6395df4f..e87fb83be9f 100644 --- a/apps/settings/l10n/sc.json +++ b/apps/settings/l10n/sc.json @@ -261,6 +261,7 @@ "Email" : "Posta eletrònica", "Default language" : "Limba predefinida", "Add a new user" : "Agiunghe un'utèntzia noa", + "Avatar" : "Avatar", "Group admin for" : "In amministratzione pro su grupu", "Quota" : "Cuota", "User backend" : "Motore utente", @@ -370,8 +371,6 @@ "Restrict users to only share with users in their groups" : "Lìmita is utentes a sa cumpartzidura isceti cun utentes in is grupos issoro", "Exclude groups from sharing" : "Esclude grupos dae sa cumpartzidura", "These groups will still be able to receive shares, but not to initiate them." : "Custos grupos ant a pòdere retzire cumpartziduras, ma no ddas ant a pòdere cumintzare.", - "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura", - "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu", "Allow username autocompletion to users based on phone number integration" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes segundu s'integratzione de su nùmeru de telèfonu", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Si sa cumponidura automàtica \"matessi grupu\" e \"integratzione de nùmeru de telèfonu\" sunt ativadas, una currispondèntzia in unu de is duas bastat a mustrare s'utente.", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Mustra sa liberatòria in sa pàgina de carrigamentu de su ligòngiu pùblicu (mustradu isceti cando s'archìviu de sa lista est cuadu)", @@ -398,7 +397,6 @@ "Migration in progress. Please wait until the migration is finished" : "Tràmuda in cursu. Abeta finas a cando at a acabbare", "Migration started …" : "Tràmuda aviada …", "Address" : "Indiritzu", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ddoe at àpidu un'errore in sa dimanda. Impossìbile a sighire.", "Plain" : "Simpre", "NT LAN Manager" : "NT LAN Manager", @@ -415,6 +413,8 @@ "Background job didn’t run yet!" : "S'atividade in segundu pianu no est ancora istada esecutada!", "Pick background job setting" : "Sèbera s'impostatzione de s'atividade in segundu pianu", "The cron.php needs to be executed by the system user \"%s\"." : "Su cron.php depet èssere esecutadu dae s'utente de sistema \"%s\".", + "Allow username autocompletion in share dialog" : "Permite sa cumponidura automàtica de su nùmene de utente in sa ventana de cumpartzidura", + "Allow username autocompletion to users within the same groups" : "Permite sa cumponidura automàtica de su nùmene de utente a is utentes de su matessi grupu", "Change privacy level of profile picture" : "Càmbia su livellu de riservadesa de s'imàgine de profilu", "Upload new" : "Càrriga noa", "Select from Files" : "Seletziona dae Archìvios", diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js index 0caaf112916..f11de53a6a5 100644 --- a/apps/settings/l10n/sk.js +++ b/apps/settings/l10n/sk.js @@ -354,6 +354,7 @@ OC.L10N.register( "Email" : "Email", "Default language" : "Predvolený jazyk", "Add a new user" : "Pridať nového používateľa", + "Avatar" : "Avatar", "Group admin for" : "Administrátor skupiny pre", "Quota" : "Kvóta", "User backend" : "Backend používateľa", @@ -476,8 +477,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Povoliť používateľom sprístupňovanie obsahu len v rámci ich skupiny", "Exclude groups from sharing" : "Nesprístupniť obsah skupinám", "These groups will still be able to receive shares, but not to initiate them." : "Tieto skupiny nebudú mocť sprístupňovať obsah, môžu však stále čítať sprístupnené súbory.", - "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania", - "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách", "Allow username autocompletion to users based on phone number integration" : "Povoliť automatické dopĺňanie mien užívateľom založené na integrácii s telefónnym číslom", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ak je povolené automatické dopĺňanie „pre rovnakú skupinu“ a „integrácia telefónneho čísla“, na zobrazenie používateľa stačí zhoda v ktorejkoľvek z nich.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)", @@ -518,7 +517,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí", "Migration started …" : "Migrácia spustená ...", "Address" : "Adresa", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.", "Plain" : "Neformátovaný", "NT LAN Manager" : "NT LAN Manager", @@ -537,6 +535,8 @@ OC.L10N.register( "Pick background job setting" : "Vybrať nastavenie úlohy na pozadí", "Recommended" : "Odporúčané", "The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".", + "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania", + "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách", "Change privacy level of profile picture" : "Zmeniť úroveň súkromia pre profilový obrázok", "Upload new" : "Nahrať nový", "Select from Files" : "Vybrať zo súborov", diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json index 8a8c812370a..5772c5a8f4d 100644 --- a/apps/settings/l10n/sk.json +++ b/apps/settings/l10n/sk.json @@ -352,6 +352,7 @@ "Email" : "Email", "Default language" : "Predvolený jazyk", "Add a new user" : "Pridať nového používateľa", + "Avatar" : "Avatar", "Group admin for" : "Administrátor skupiny pre", "Quota" : "Kvóta", "User backend" : "Backend používateľa", @@ -474,8 +475,6 @@ "Restrict users to only share with users in their groups" : "Povoliť používateľom sprístupňovanie obsahu len v rámci ich skupiny", "Exclude groups from sharing" : "Nesprístupniť obsah skupinám", "These groups will still be able to receive shares, but not to initiate them." : "Tieto skupiny nebudú mocť sprístupňovať obsah, môžu však stále čítať sprístupnené súbory.", - "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania", - "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách", "Allow username autocompletion to users based on phone number integration" : "Povoliť automatické dopĺňanie mien užívateľom založené na integrácii s telefónnym číslom", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ak je povolené automatické dopĺňanie „pre rovnakú skupinu“ a „integrácia telefónneho čísla“, na zobrazenie používateľa stačí zhoda v ktorejkoľvek z nich.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)", @@ -516,7 +515,6 @@ "Migration in progress. Please wait until the migration is finished" : "Prebieha migrácia. Počkajte prosím, kým sa skončí", "Migration started …" : "Migrácia spustená ...", "Address" : "Adresa", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.", "Plain" : "Neformátovaný", "NT LAN Manager" : "NT LAN Manager", @@ -535,6 +533,8 @@ "Pick background job setting" : "Vybrať nastavenie úlohy na pozadí", "Recommended" : "Odporúčané", "The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".", + "Allow username autocompletion in share dialog" : "Povoliť automatické dopĺňanie používateľského mena v dialógovom okne zdieľania", + "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách", "Change privacy level of profile picture" : "Zmeniť úroveň súkromia pre profilový obrázok", "Upload new" : "Nahrať nový", "Select from Files" : "Vybrať zo súborov", diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js index 4e9b2cafb8e..25e04076312 100644 --- a/apps/settings/l10n/sl.js +++ b/apps/settings/l10n/sl.js @@ -328,6 +328,7 @@ OC.L10N.register( "Email" : "Elektronski naslov", "Default language" : "Privzeti jezik", "Add a new user" : "Dodaj uporabnika", + "Avatar" : "Podoba", "Group admin for" : "Skrbnik skupine za", "Quota" : "Količinska omejitev", "User backend" : "Uporabniški ozadnji program", @@ -440,8 +441,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine", "Exclude groups from sharing" : "Izbranim skupinam onemogoči omogočanje souporabe", "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, nimajo pa dovoljenja za omogočanje souporabe.", - "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe", - "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine", "Allow username autocompletion to users based on phone number integration" : "Dovoli samodejno dopolnjevanje uporabniških imen po telefonskih številkah", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Če je omogočeno samodejno dopolnjevanje »v isti skupini«, ali pa »po telefonskem imeniku«, se zadetek pokaže, če je uporabnik v katerikoli od teh zbirk.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dovoli samodejno dokončanje uporabniškega imena pri vpisu polnega imena ali elektronskega naslova (prezrta je zahteva telefonskega imenika in iste skupine).", @@ -477,7 +476,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "V teku je preselitev. Počakajte, da se zaključi.", "Migration started …" : "Preselitev je začeta ...", "Address" : "Naslov", - "Avatar" : "Podoba", "An error occured during the request. Unable to proceed." : "Med izvajanjem zahteve je prišlo do napake, zato ni mogoče nadaljevati.", "Plain" : "Besedilno", "NT LAN Manager" : "Upravljalnik NT LAN", @@ -495,6 +493,8 @@ OC.L10N.register( "Pick background job setting" : "Izbor nastavitve ozadnjih opravil", "Recommended" : "Priporočeno", "The cron.php needs to be executed by the system user \"%s\"." : "Datoteka cron.php mora biti izvedena za uporabnika »%s«.", + "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe", + "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine", "Change privacy level of profile picture" : "Spremeni pravila zasebnosti profilne slike", "Upload new" : "Pošlji novo", "Select from Files" : "Izbor iz datotek", diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json index 710d29cdf6c..6cad0dea2f2 100644 --- a/apps/settings/l10n/sl.json +++ b/apps/settings/l10n/sl.json @@ -326,6 +326,7 @@ "Email" : "Elektronski naslov", "Default language" : "Privzeti jezik", "Add a new user" : "Dodaj uporabnika", + "Avatar" : "Podoba", "Group admin for" : "Skrbnik skupine za", "Quota" : "Količinska omejitev", "User backend" : "Uporabniški ozadnji program", @@ -438,8 +439,6 @@ "Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine", "Exclude groups from sharing" : "Izbranim skupinam onemogoči omogočanje souporabe", "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, nimajo pa dovoljenja za omogočanje souporabe.", - "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe", - "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine", "Allow username autocompletion to users based on phone number integration" : "Dovoli samodejno dopolnjevanje uporabniških imen po telefonskih številkah", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Če je omogočeno samodejno dopolnjevanje »v isti skupini«, ali pa »po telefonskem imeniku«, se zadetek pokaže, če je uporabnik v katerikoli od teh zbirk.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Dovoli samodejno dokončanje uporabniškega imena pri vpisu polnega imena ali elektronskega naslova (prezrta je zahteva telefonskega imenika in iste skupine).", @@ -475,7 +474,6 @@ "Migration in progress. Please wait until the migration is finished" : "V teku je preselitev. Počakajte, da se zaključi.", "Migration started …" : "Preselitev je začeta ...", "Address" : "Naslov", - "Avatar" : "Podoba", "An error occured during the request. Unable to proceed." : "Med izvajanjem zahteve je prišlo do napake, zato ni mogoče nadaljevati.", "Plain" : "Besedilno", "NT LAN Manager" : "Upravljalnik NT LAN", @@ -493,6 +491,8 @@ "Pick background job setting" : "Izbor nastavitve ozadnjih opravil", "Recommended" : "Priporočeno", "The cron.php needs to be executed by the system user \"%s\"." : "Datoteka cron.php mora biti izvedena za uporabnika »%s«.", + "Allow username autocompletion in share dialog" : "Dovoli samodejno dopolnjevanje uporabniških imen v oknu omogočanja souporabe", + "Allow username autocompletion to users within the same groups" : "Dovoli samodejno dopolnjevanje uporabniških imen znotraj iste skupine", "Change privacy level of profile picture" : "Spremeni pravila zasebnosti profilne slike", "Upload new" : "Pošlji novo", "Select from Files" : "Izbor iz datotek", diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js index 4cac0b98056..f7eb69633df 100644 --- a/apps/settings/l10n/sq.js +++ b/apps/settings/l10n/sq.js @@ -156,6 +156,7 @@ OC.L10N.register( "New user" : "Përdorues i ri", "Display name" : "Shfaq emrin", "Email" : "Email", + "Avatar" : "Avatari", "Group admin for" : "Administratori i grupit për", "Quota" : "Kuota", "User backend" : "Program klient i përdoruesit", @@ -236,7 +237,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon", "Migration started …" : "Migrimi filloi …", "Address" : "Adresa", - "Avatar" : "Avatari", "Plain" : "E thjeshtë", "NT LAN Manager" : "Përgjegjës Rrjeti NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json index 58246ec093a..03806933e2f 100644 --- a/apps/settings/l10n/sq.json +++ b/apps/settings/l10n/sq.json @@ -154,6 +154,7 @@ "New user" : "Përdorues i ri", "Display name" : "Shfaq emrin", "Email" : "Email", + "Avatar" : "Avatari", "Group admin for" : "Administratori i grupit për", "Quota" : "Kuota", "User backend" : "Program klient i përdoruesit", @@ -234,7 +235,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon", "Migration started …" : "Migrimi filloi …", "Address" : "Adresa", - "Avatar" : "Avatari", "Plain" : "E thjeshtë", "NT LAN Manager" : "Përgjegjës Rrjeti NT", "STARTTLS" : "STARTTLS", diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js index c05ad52a8fc..7d568c280f4 100644 --- a/apps/settings/l10n/sr.js +++ b/apps/settings/l10n/sr.js @@ -363,6 +363,7 @@ OC.L10N.register( "Email" : "Е-пошта", "Default language" : "Подразумевани језик", "Add a new user" : "Додај новог корисника", + "Avatar" : "Аватар", "Group admin for" : "Администратор групе за", "Quota" : "Квота", "User backend" : "Позадина за кориснике", @@ -487,8 +488,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Ограничи кориснике да могу да деле само унутар групе", "Exclude groups from sharing" : "Изузми групе из дељења", "These groups will still be able to receive shares, but not to initiate them." : "Ове групе ће моћи да примају дељења, али не и да их праве.", - "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење", - "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе", "Allow username autocompletion to users based on phone number integration" : "Дозволи аутоматско довршавање корисничког имена корисницима на основу интеграције броја телефона", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако су укључени „иста група” и „интеграција броја телефона”. подударање у било којој од њих ће приказати корисника.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволи аутоматско довршавање када се уноси пуно име или и-мејл адреса (уз игнорисање подударања у телефонском именику и припадања истој групи)", @@ -529,7 +528,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши", "Migration started …" : "Пресељење покренуто...", "Address" : "Адреса", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Догодила се грешка за време захтева. Не може се наставити.", "Plain" : "Обичан", "NT LAN Manager" : "НТ ЛАН менаџер", @@ -548,6 +546,8 @@ OC.L10N.register( "Pick background job setting" : "Одаберите поставке позадинског посла", "Recommended" : "Препоручено", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.", + "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење", + "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе", "Change privacy level of profile picture" : "Измени ниво приватности слике профила", "Upload new" : "Отпреми нову", "Select from Files" : "Изабери из фајлова", diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json index 5556d25bd83..e14695dc6da 100644 --- a/apps/settings/l10n/sr.json +++ b/apps/settings/l10n/sr.json @@ -361,6 +361,7 @@ "Email" : "Е-пошта", "Default language" : "Подразумевани језик", "Add a new user" : "Додај новог корисника", + "Avatar" : "Аватар", "Group admin for" : "Администратор групе за", "Quota" : "Квота", "User backend" : "Позадина за кориснике", @@ -485,8 +486,6 @@ "Restrict users to only share with users in their groups" : "Ограничи кориснике да могу да деле само унутар групе", "Exclude groups from sharing" : "Изузми групе из дељења", "These groups will still be able to receive shares, but not to initiate them." : "Ове групе ће моћи да примају дељења, али не и да их праве.", - "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење", - "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе", "Allow username autocompletion to users based on phone number integration" : "Дозволи аутоматско довршавање корисничког имена корисницима на основу интеграције броја телефона", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ако су укључени „иста група” и „интеграција броја телефона”. подударање у било којој од њих ће приказати корисника.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволи аутоматско довршавање када се уноси пуно име или и-мејл адреса (уз игнорисање подударања у телефонском именику и припадања истој групи)", @@ -527,7 +526,6 @@ "Migration in progress. Please wait until the migration is finished" : "Пресељење је у току. Сачекајте док се не заврши", "Migration started …" : "Пресељење покренуто...", "Address" : "Адреса", - "Avatar" : "Аватар", "An error occured during the request. Unable to proceed." : "Догодила се грешка за време захтева. Не може се наставити.", "Plain" : "Обичан", "NT LAN Manager" : "НТ ЛАН менаџер", @@ -546,6 +544,8 @@ "Pick background job setting" : "Одаберите поставке позадинског посла", "Recommended" : "Препоручено", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php треба да се извршава као системски корисник „%s“.", + "Allow username autocompletion in share dialog" : "Дозволи аутоматско довршавање корисничког имена у дијалогу за дељење", + "Allow username autocompletion to users within the same groups" : "Дозволи аутоматско довршавање корисничког корисницима из исте групе", "Change privacy level of profile picture" : "Измени ниво приватности слике профила", "Upload new" : "Отпреми нову", "Select from Files" : "Изабери из фајлова", diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js index d6ae97f2d9e..c2236592032 100644 --- a/apps/settings/l10n/sv.js +++ b/apps/settings/l10n/sv.js @@ -335,11 +335,13 @@ OC.L10N.register( "Add additional email" : "Lägg till ytterligare e-post", "Add" : "Lägg till", "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren", + "Edit display name" : "Ändra visningsnamn", "Add new password" : "Lägg till nytt lösenord", "Add new email address" : "Lägg till ny e-postadress", "Add user to group" : "Lägg till användare i grupp", "Set user as admin for" : "Gör användare till admin för", "Select user quota" : "Välj användarens quota", + "Set the language" : "Ställ in språk", "Delete user" : "Ta bort användare", "Wipe all devices" : "Rensa alla enheter", "Disable user" : "Stäng av användare", @@ -361,6 +363,7 @@ OC.L10N.register( "Email" : "E-post", "Default language" : "Standardspråk", "Add a new user" : "Lägg till ny användare", + "Avatar" : "Avatar", "Group admin for" : "Gruppadministratör för", "Quota" : "Lagringsutrymme", "User backend" : "Användarbackend", @@ -485,8 +488,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper", "Exclude groups from sharing" : "Exkludera grupp från att dela", "These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.", - "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen", - "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper", "Allow username autocompletion to users based on phone number integration" : "Tillåt autokomplettering av användarnamn till användare baserad på telefonnummerintegration", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Om komplettering för \"samma grupp\" och \"telefonnummerintegration\" är aktiverade räcker det med en matchning i en av dem för att visa användaren.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillåt autokomplettering när du anger hela namnet eller e-postadressen (ignorera saknad telefonboksmatchning och att vara i samma grupp)", @@ -527,7 +528,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration pågår. Vänta tills migrationen är klar", "Migration started …" : "Migrering påbörjad ...", "Address" : "Ort/Stad", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ett fel uppstod under förfrågan. Kan inte fortsätta.", "Plain" : "Enkel", "NT LAN Manager" : "NT LAN Manager", @@ -546,6 +546,8 @@ OC.L10N.register( "Pick background job setting" : "Välj inställning för bakgrundsjobb", "Recommended" : "Rekomenderad", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".", + "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen", + "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper", "Change privacy level of profile picture" : "Ändra hemlighetsnivå för profilbild", "Upload new" : "Ladda upp ny", "Select from Files" : "Välj från Filer", diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json index b6b1719dacc..61a0478a1ae 100644 --- a/apps/settings/l10n/sv.json +++ b/apps/settings/l10n/sv.json @@ -333,11 +333,13 @@ "Add additional email" : "Lägg till ytterligare e-post", "Add" : "Lägg till", "You do not have permissions to see the details of this user" : "Du har inte behörighet att se detaljerna för den här användaren", + "Edit display name" : "Ändra visningsnamn", "Add new password" : "Lägg till nytt lösenord", "Add new email address" : "Lägg till ny e-postadress", "Add user to group" : "Lägg till användare i grupp", "Set user as admin for" : "Gör användare till admin för", "Select user quota" : "Välj användarens quota", + "Set the language" : "Ställ in språk", "Delete user" : "Ta bort användare", "Wipe all devices" : "Rensa alla enheter", "Disable user" : "Stäng av användare", @@ -359,6 +361,7 @@ "Email" : "E-post", "Default language" : "Standardspråk", "Add a new user" : "Lägg till ny användare", + "Avatar" : "Avatar", "Group admin for" : "Gruppadministratör för", "Quota" : "Lagringsutrymme", "User backend" : "Användarbackend", @@ -483,8 +486,6 @@ "Restrict users to only share with users in their groups" : "Begränsa användare till att enbart kunna dela med användare i deras grupper", "Exclude groups from sharing" : "Exkludera grupp från att dela", "These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.", - "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen", - "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper", "Allow username autocompletion to users based on phone number integration" : "Tillåt autokomplettering av användarnamn till användare baserad på telefonnummerintegration", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Om komplettering för \"samma grupp\" och \"telefonnummerintegration\" är aktiverade räcker det med en matchning i en av dem för att visa användaren.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tillåt autokomplettering när du anger hela namnet eller e-postadressen (ignorera saknad telefonboksmatchning och att vara i samma grupp)", @@ -525,7 +526,6 @@ "Migration in progress. Please wait until the migration is finished" : "Migration pågår. Vänta tills migrationen är klar", "Migration started …" : "Migrering påbörjad ...", "Address" : "Ort/Stad", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Ett fel uppstod under förfrågan. Kan inte fortsätta.", "Plain" : "Enkel", "NT LAN Manager" : "NT LAN Manager", @@ -544,6 +544,8 @@ "Pick background job setting" : "Välj inställning för bakgrundsjobb", "Recommended" : "Rekomenderad", "The cron.php needs to be executed by the system user \"%s\"." : "Cron.php behöver exekveras av systemanvändaren \"%s\".", + "Allow username autocompletion in share dialog" : "Tillåt autokomplettering av användarnamn i delningsdialogen", + "Allow username autocompletion to users within the same groups" : "Tillåt autokomplettering av användarnamn till användare inom samma grupper", "Change privacy level of profile picture" : "Ändra hemlighetsnivå för profilbild", "Upload new" : "Ladda upp ny", "Select from Files" : "Välj från Filer", diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js index 6c087df5e21..41b54f9ada9 100644 --- a/apps/settings/l10n/th.js +++ b/apps/settings/l10n/th.js @@ -204,6 +204,7 @@ OC.L10N.register( "Email" : "อีเมล", "Default language" : "ภาษาค่าเริ่มต้น", "Add a new user" : "เพิ่มผู้ใช้ใหม่", + "Avatar" : "ภาพแทนตัว", "Group admin for" : "ผู้ดูแลกลุ่มสำหรับ", "Quota" : "โควต้า", "User backend" : "แบ็กเอนด์ของผู้ใช้", @@ -322,7 +323,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "การโยกย้ายกำลังทำงาน กรุณารอสักครู่จนกว่าการโยกย้ายจะเสร็จสิ้น", "Migration started …" : "เริ่มต้นการโยกย้าย …", "Address" : "ที่อยู่", - "Avatar" : "ภาพแทนตัว", "An error occured during the request. Unable to proceed." : "เกิดข้อผิดพลาดขณะส่งคำขอ ไม่สามารถดำเนินการต่อ", "Plain" : "ธรรมดา", "NT LAN Manager" : "ตัวจัดการ NT LAN", diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json index a077e7be840..b6c22e712b8 100644 --- a/apps/settings/l10n/th.json +++ b/apps/settings/l10n/th.json @@ -202,6 +202,7 @@ "Email" : "อีเมล", "Default language" : "ภาษาค่าเริ่มต้น", "Add a new user" : "เพิ่มผู้ใช้ใหม่", + "Avatar" : "ภาพแทนตัว", "Group admin for" : "ผู้ดูแลกลุ่มสำหรับ", "Quota" : "โควต้า", "User backend" : "แบ็กเอนด์ของผู้ใช้", @@ -320,7 +321,6 @@ "Migration in progress. Please wait until the migration is finished" : "การโยกย้ายกำลังทำงาน กรุณารอสักครู่จนกว่าการโยกย้ายจะเสร็จสิ้น", "Migration started …" : "เริ่มต้นการโยกย้าย …", "Address" : "ที่อยู่", - "Avatar" : "ภาพแทนตัว", "An error occured during the request. Unable to proceed." : "เกิดข้อผิดพลาดขณะส่งคำขอ ไม่สามารถดำเนินการต่อ", "Plain" : "ธรรมดา", "NT LAN Manager" : "ตัวจัดการ NT LAN", diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js index c24921b9865..af927361733 100644 --- a/apps/settings/l10n/tr.js +++ b/apps/settings/l10n/tr.js @@ -335,11 +335,14 @@ OC.L10N.register( "Add additional email" : "Ek e-posta adresi ekle", "Add" : "Ekle", "You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok", + "Edit display name" : "Görüntülenecek adı düzenle", "Add new password" : "Yeni parola ekle", "Add new email address" : "Yeni e-posta adresi ekle", "Add user to group" : "Gruba kullanıcı ekle", "Set user as admin for" : "Kullanıcıyı şurada yönetici yap", "Select user quota" : "Kullanıcı kotasını seçin", + "Set the language" : "Dili ayarla", + "Select manager" : "Yönetici seçin", "Delete user" : "Kullanıcıyı sil", "Wipe all devices" : "Tüm aygıtları sil", "Disable user" : "Kullanıcıyı devre dışı bırak", @@ -355,17 +358,22 @@ OC.L10N.register( "Edit User" : "Kullanıcıyı düzenle", "Toggle user actions menu" : "Kullanıcı işlemleri menüsünü değiştir", "{size} used" : "{size} kullanılmış", + "User's table" : "Kullanıcının tablosu", "New user" : "Yeni kullanıcı", "Will be autogenerated" : "Otomatik olarak oluşturulacak", "Display name" : "Görüntülenecek ad", "Email" : "E-posta", "Default language" : "Varsayılan dil", + "Select user manager" : "Kullanıcı yöneticisini seçin", "Add a new user" : "Kullanıcı ekle", + "Avatar" : "Avatar", "Group admin for" : "Şunun grup yöneticisi", "Quota" : "Kota", "User backend" : "Kullanıcı arka ucu", "Storage location" : "Depolama konumu", "Last login" : "Son oturum açma", + "Manager" : "Yönetici", + "User actions" : "Kullanıcı işlemleri", "No users in here" : "Henüz herhangi bir kullanıcı eklenmemiş", "Default quota" : "Varsayılan kota", "Common languages" : "Sık kullanılan diller", @@ -485,8 +493,8 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Kullanıcılar, yalnızca kendi gruplarındaki kullanıcılarla paylaşabilsin", "Exclude groups from sharing" : "Gruplar paylaşıma katılmasın", "These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar paylaşımları alabilir ancak başlatamaz.", - "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin", - "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin", + "Allow username autocompletion in share dialog and allow access to the system address book" : "Paylaşım penceresinde kullanıcı adının otomatik tamamlanmasına ve sistem adres defterine erişilmesine izin verilsin", + "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Aynı gruplarda kullanıcı adının otomatik olarak tamamlanmasına izin verilsın ve sistem adres defterleri aynı gruplardaki kullanıcılarla sınırlansın", "Allow username autocompletion to users based on phone number integration" : "Telefon numarası bütünleştirmesi eşleşmelerine göre kullanıcı adları otomatik olarak tamamlanabilsin", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "\"Aynı grup\" ve \"telefon numarası bütünleştirmesi\" etkinleştirilmiş ise. Kullanıcının görüntülenmesi için ikisinden birinde eşleşme olması yeterlidir.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tam ad ya da e-posta adresi yazılırken otomatik olarak tamamlanabilsin (aynı grupta olma ya da telefon defteri eşleşmesi yok sayılarak)", @@ -527,7 +535,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", "Migration started …" : "Aktarım başladı …", "Address" : "Adres", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.", "Plain" : "Düz", "NT LAN Manager" : "NT ağ yöneticisi", @@ -546,6 +553,8 @@ OC.L10N.register( "Pick background job setting" : "Arka plan görevi ayarlarını seçin", "Recommended" : "Önerilen", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.", + "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin", + "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin", "Change privacy level of profile picture" : "Profil görselinin gizlilik düzeyini değiştir", "Upload new" : "Yeni yükle", "Select from Files" : "Dosyalardan seç", diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json index 909f9e22576..ba349d1431c 100644 --- a/apps/settings/l10n/tr.json +++ b/apps/settings/l10n/tr.json @@ -333,11 +333,14 @@ "Add additional email" : "Ek e-posta adresi ekle", "Add" : "Ekle", "You do not have permissions to see the details of this user" : "Bu kullanıcının ayrıntılarını görüntüleme izniniz yok", + "Edit display name" : "Görüntülenecek adı düzenle", "Add new password" : "Yeni parola ekle", "Add new email address" : "Yeni e-posta adresi ekle", "Add user to group" : "Gruba kullanıcı ekle", "Set user as admin for" : "Kullanıcıyı şurada yönetici yap", "Select user quota" : "Kullanıcı kotasını seçin", + "Set the language" : "Dili ayarla", + "Select manager" : "Yönetici seçin", "Delete user" : "Kullanıcıyı sil", "Wipe all devices" : "Tüm aygıtları sil", "Disable user" : "Kullanıcıyı devre dışı bırak", @@ -353,17 +356,22 @@ "Edit User" : "Kullanıcıyı düzenle", "Toggle user actions menu" : "Kullanıcı işlemleri menüsünü değiştir", "{size} used" : "{size} kullanılmış", + "User's table" : "Kullanıcının tablosu", "New user" : "Yeni kullanıcı", "Will be autogenerated" : "Otomatik olarak oluşturulacak", "Display name" : "Görüntülenecek ad", "Email" : "E-posta", "Default language" : "Varsayılan dil", + "Select user manager" : "Kullanıcı yöneticisini seçin", "Add a new user" : "Kullanıcı ekle", + "Avatar" : "Avatar", "Group admin for" : "Şunun grup yöneticisi", "Quota" : "Kota", "User backend" : "Kullanıcı arka ucu", "Storage location" : "Depolama konumu", "Last login" : "Son oturum açma", + "Manager" : "Yönetici", + "User actions" : "Kullanıcı işlemleri", "No users in here" : "Henüz herhangi bir kullanıcı eklenmemiş", "Default quota" : "Varsayılan kota", "Common languages" : "Sık kullanılan diller", @@ -483,8 +491,8 @@ "Restrict users to only share with users in their groups" : "Kullanıcılar, yalnızca kendi gruplarındaki kullanıcılarla paylaşabilsin", "Exclude groups from sharing" : "Gruplar paylaşıma katılmasın", "These groups will still be able to receive shares, but not to initiate them." : "Bu gruplar paylaşımları alabilir ancak başlatamaz.", - "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin", - "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin", + "Allow username autocompletion in share dialog and allow access to the system address book" : "Paylaşım penceresinde kullanıcı adının otomatik tamamlanmasına ve sistem adres defterine erişilmesine izin verilsin", + "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "Aynı gruplarda kullanıcı adının otomatik olarak tamamlanmasına izin verilsın ve sistem adres defterleri aynı gruplardaki kullanıcılarla sınırlansın", "Allow username autocompletion to users based on phone number integration" : "Telefon numarası bütünleştirmesi eşleşmelerine göre kullanıcı adları otomatik olarak tamamlanabilsin", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "\"Aynı grup\" ve \"telefon numarası bütünleştirmesi\" etkinleştirilmiş ise. Kullanıcının görüntülenmesi için ikisinden birinde eşleşme olması yeterlidir.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Tam ad ya da e-posta adresi yazılırken otomatik olarak tamamlanabilsin (aynı grupta olma ya da telefon defteri eşleşmesi yok sayılarak)", @@ -525,7 +533,6 @@ "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", "Migration started …" : "Aktarım başladı …", "Address" : "Adres", - "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "İstek sırasında bir sorun çıktı. İşlem sürdürülemiyor.", "Plain" : "Düz", "NT LAN Manager" : "NT ağ yöneticisi", @@ -544,6 +551,8 @@ "Pick background job setting" : "Arka plan görevi ayarlarını seçin", "Recommended" : "Önerilen", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php dosyası \"%s\" sistem kullanıcısı tarafından yürütülmelidir.", + "Allow username autocompletion in share dialog" : "Paylaşım penceresinde kullanıcı adı otomatik olarak tamamlanabilsin", + "Allow username autocompletion to users within the same groups" : "Aynı gruplardaki kullanıcıların kullanıcı adları otomatik olarak tamamlanabilsin", "Change privacy level of profile picture" : "Profil görselinin gizlilik düzeyini değiştir", "Upload new" : "Yeni yükle", "Select from Files" : "Dosyalardan seç", diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js index d4f41aa0f59..2419da2f43f 100644 --- a/apps/settings/l10n/uk.js +++ b/apps/settings/l10n/uk.js @@ -361,6 +361,7 @@ OC.L10N.register( "Email" : "E-mail", "Default language" : "Мова за замовчуванням", "Add a new user" : "Додати нового користувача", + "Avatar" : "Світлина", "Group admin for" : "Адміністратор групи", "Quota" : "Квота", "User backend" : "Сервер користувача", @@ -485,8 +486,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи", "Exclude groups from sharing" : "Виключити групи зі спільного доступу", "These groups will still be able to receive shares, but not to initiate them." : "Ці групи зможуть отримувати спільні файли, але не зможуть відправляти їх.", - "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу", - "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах", "Allow username autocompletion to users based on phone number integration" : "Дозволити користувачам автозаповнення імені користувача на основі інтеграції номера телефону", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Якщо ввімкнуто автозавершення «та сама група» та «інтеграція номеру телефону», збігу в будь-якому з них достатньо, щоб показати користувачеві.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволити автозавершення під час введення повного імені або адреси електронної пошти (ігнорування відсутніх збігів телефонної книги та перебування в одній групі)", @@ -527,7 +526,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться", "Migration started …" : "Міграцію розпочато ...", "Address" : "Адреса", - "Avatar" : "Світлина", "An error occured during the request. Unable to proceed." : "Під час запиту сталася помилка. Не вдається продовжити.", "Plain" : "Звичайний", "NT LAN Manager" : "Менеджер NT LAN", @@ -546,6 +544,8 @@ OC.L10N.register( "Pick background job setting" : "Виберіть налаштування фонової роботи", "Recommended" : "Рекомендуємо", "The cron.php needs to be executed by the system user \"%s\"." : "Файл cron.php має бути запущений системним користувачем \"%s\".", + "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу", + "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах", "Change privacy level of profile picture" : "Змінити рівень конфіденційності зображення профілю", "Upload new" : "Завантажити нове", "Select from Files" : "Вибрати з файлів", diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json index c72d31ca4e0..5164d6f3fc8 100644 --- a/apps/settings/l10n/uk.json +++ b/apps/settings/l10n/uk.json @@ -359,6 +359,7 @@ "Email" : "E-mail", "Default language" : "Мова за замовчуванням", "Add a new user" : "Додати нового користувача", + "Avatar" : "Світлина", "Group admin for" : "Адміністратор групи", "Quota" : "Квота", "User backend" : "Сервер користувача", @@ -483,8 +484,6 @@ "Restrict users to only share with users in their groups" : "Дозволити користувачам відкривати спільний доступ лише для користувачів з їхньої групи", "Exclude groups from sharing" : "Виключити групи зі спільного доступу", "These groups will still be able to receive shares, but not to initiate them." : "Ці групи зможуть отримувати спільні файли, але не зможуть відправляти їх.", - "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу", - "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах", "Allow username autocompletion to users based on phone number integration" : "Дозволити користувачам автозаповнення імені користувача на основі інтеграції номера телефону", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Якщо ввімкнуто автозавершення «та сама група» та «інтеграція номеру телефону», збігу в будь-якому з них достатньо, щоб показати користувачеві.", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Дозволити автозавершення під час введення повного імені або адреси електронної пошти (ігнорування відсутніх збігів телефонної книги та перебування в одній групі)", @@ -525,7 +524,6 @@ "Migration in progress. Please wait until the migration is finished" : "Міграція триває. Будь ласка, зачекайте доки процес міграції завершиться", "Migration started …" : "Міграцію розпочато ...", "Address" : "Адреса", - "Avatar" : "Світлина", "An error occured during the request. Unable to proceed." : "Під час запиту сталася помилка. Не вдається продовжити.", "Plain" : "Звичайний", "NT LAN Manager" : "Менеджер NT LAN", @@ -544,6 +542,8 @@ "Pick background job setting" : "Виберіть налаштування фонової роботи", "Recommended" : "Рекомендуємо", "The cron.php needs to be executed by the system user \"%s\"." : "Файл cron.php має бути запущений системним користувачем \"%s\".", + "Allow username autocompletion in share dialog" : "Дозволити автозаповнення імені користувача в діалоговому вікні спільного доступу", + "Allow username autocompletion to users within the same groups" : "Дозволити автозавершення імен користувачів для користувачів у тих самих групах", "Change privacy level of profile picture" : "Змінити рівень конфіденційності зображення профілю", "Upload new" : "Завантажити нове", "Select from Files" : "Вибрати з файлів", diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js index fe63acbff84..ae537d2bde0 100644 --- a/apps/settings/l10n/vi.js +++ b/apps/settings/l10n/vi.js @@ -200,6 +200,7 @@ OC.L10N.register( "Email" : "Email", "Default language" : "Ngôn ngữ mặc định", "Add a new user" : "Thêm người dùng mới", + "Avatar" : "Hình đại diện", "Group admin for" : "Quản trị viên nhóm", "Quota" : "Hạn ngạch", "User backend" : "Trang cài đặt người dùng", @@ -273,7 +274,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc", "Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...", "Address" : "Địa chỉ", - "Avatar" : "Hình đại diện", "An error occured during the request. Unable to proceed." : "Đã xảy ra lỗi trong khi yêu cầu. Không thể tiến hành.", "Enable encryption" : "Bật mã hóa", "Upload new" : "Tải lên", diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json index b5ae49222bf..838bbb99dec 100644 --- a/apps/settings/l10n/vi.json +++ b/apps/settings/l10n/vi.json @@ -198,6 +198,7 @@ "Email" : "Email", "Default language" : "Ngôn ngữ mặc định", "Add a new user" : "Thêm người dùng mới", + "Avatar" : "Hình đại diện", "Group admin for" : "Quản trị viên nhóm", "Quota" : "Hạn ngạch", "User backend" : "Trang cài đặt người dùng", @@ -271,7 +272,6 @@ "Migration in progress. Please wait until the migration is finished" : "Chuyển đổi dữ liệu đang tiến hành. Vui lòng đợi cho đến khi quá trình di chuyển kết thúc", "Migration started …" : "Chuyển đổi dữ liệu đã bắt đầu ...", "Address" : "Địa chỉ", - "Avatar" : "Hình đại diện", "An error occured during the request. Unable to proceed." : "Đã xảy ra lỗi trong khi yêu cầu. Không thể tiến hành.", "Enable encryption" : "Bật mã hóa", "Upload new" : "Tải lên", diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js index 8434aa0d1be..27f3318378e 100644 --- a/apps/settings/l10n/zh_CN.js +++ b/apps/settings/l10n/zh_CN.js @@ -354,6 +354,7 @@ OC.L10N.register( "Email" : "电子邮件", "Default language" : "默认语言", "Add a new user" : "添加新用户", + "Avatar" : "头像", "Group admin for" : "分组管理员", "Quota" : "配额", "User backend" : "用户来源", @@ -476,8 +477,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "限制用户只与他们组中的用户共享", "Exclude groups from sharing" : "在共享中排除组", "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。", - "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成", - "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名", "Allow username autocompletion to users based on phone number integration" : "允许基于手机号码集成自动完成用户的用户名", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果启用了“同组”自动完成和“手机号码集成”,则匹配两者中的任何一个都足以显示用户", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "输入全名或电子邮箱地址时,允许自动完成(忽略缺少的通讯录匹配及同组要求)", @@ -518,7 +517,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成", "Migration started …" : "迁移开始...", "Address" : "地址", - "Avatar" : "头像", "An error occured during the request. Unable to proceed." : "请求期间发生错误。 无法继续。", "Plain" : "明文", "NT LAN Manager" : "NT LAN 管理器", @@ -537,6 +535,8 @@ OC.L10N.register( "Pick background job setting" : "选择后台任务设置", "Recommended" : "推荐", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。", + "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成", + "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名", "Change privacy level of profile picture" : "更改个人头像的隐私级别", "Upload new" : "上传", "Select from Files" : "选择文件", diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json index 02f217a4be0..5f4fb7b2eb9 100644 --- a/apps/settings/l10n/zh_CN.json +++ b/apps/settings/l10n/zh_CN.json @@ -352,6 +352,7 @@ "Email" : "电子邮件", "Default language" : "默认语言", "Add a new user" : "添加新用户", + "Avatar" : "头像", "Group admin for" : "分组管理员", "Quota" : "配额", "User backend" : "用户来源", @@ -474,8 +475,6 @@ "Restrict users to only share with users in their groups" : "限制用户只与他们组中的用户共享", "Exclude groups from sharing" : "在共享中排除组", "These groups will still be able to receive shares, but not to initiate them." : "这些组将仍可以获取共享,但无法向他人共享。", - "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成", - "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名", "Allow username autocompletion to users based on phone number integration" : "允许基于手机号码集成自动完成用户的用户名", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果启用了“同组”自动完成和“手机号码集成”,则匹配两者中的任何一个都足以显示用户", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "输入全名或电子邮箱地址时,允许自动完成(忽略缺少的通讯录匹配及同组要求)", @@ -516,7 +515,6 @@ "Migration in progress. Please wait until the migration is finished" : "正在进行迁移。请稍等,直到迁移完成", "Migration started …" : "迁移开始...", "Address" : "地址", - "Avatar" : "头像", "An error occured during the request. Unable to proceed." : "请求期间发生错误。 无法继续。", "Plain" : "明文", "NT LAN Manager" : "NT LAN 管理器", @@ -535,6 +533,8 @@ "Pick background job setting" : "选择后台任务设置", "Recommended" : "推荐", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 需要被系统用户 \"%s\" 执行。", + "Allow username autocompletion in share dialog" : "在分享对话框中允许用户名自动完成", + "Allow username autocompletion to users within the same groups" : "允许自动完成同一组内的用户的用户名", "Change privacy level of profile picture" : "更改个人头像的隐私级别", "Upload new" : "上传", "Select from Files" : "选择文件", diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js index 4f93bc9fd3e..0e0e010e4df 100644 --- a/apps/settings/l10n/zh_HK.js +++ b/apps/settings/l10n/zh_HK.js @@ -363,6 +363,7 @@ OC.L10N.register( "Email" : "電郵地址", "Default language" : "預設語言", "Add a new user" : "新增用戶", + "Avatar" : "虛擬化身大頭照", "Group admin for" : "群組管理員", "Quota" : "容量限制", "User backend" : "用戶後端系統", @@ -487,8 +488,6 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "限制用戶僅能與他們群組中的其他用戶分享", "Exclude groups from sharing" : "禁止特定群組分享檔案", "These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。", - "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成", - "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名", "Allow username autocompletion to users based on phone number integration" : "允許基於電話號碼整合的用戶自動完成用戶名", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果啟用了自動完成功能“相同的群組”和“電話號碼整合”,則任何一個匹配都足以向用戶顯示。", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電郵地址時,允許自動完成(忽略缺少的電話簿匹配項,並且位於同一群組中)", @@ -529,7 +528,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", "Migration started …" : "開始遷移……", "Address" : "地址", - "Avatar" : "虛擬化身大頭照", "An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。", "Plain" : "明文", "NT LAN Manager" : "NT LAN 管理程式", @@ -548,6 +546,8 @@ OC.L10N.register( "Pick background job setting" : "挑選後台作業設定", "Recommended" : "建議", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統用戶「%s」執行。", + "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成", + "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名", "Change privacy level of profile picture" : "更改個人資料圖片的私隱級別", "Upload new" : "上傳新的", "Select from Files" : "從雲端檔案選擇", diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json index cb55c6a494b..8e957f209a1 100644 --- a/apps/settings/l10n/zh_HK.json +++ b/apps/settings/l10n/zh_HK.json @@ -361,6 +361,7 @@ "Email" : "電郵地址", "Default language" : "預設語言", "Add a new user" : "新增用戶", + "Avatar" : "虛擬化身大頭照", "Group admin for" : "群組管理員", "Quota" : "容量限制", "User backend" : "用戶後端系統", @@ -485,8 +486,6 @@ "Restrict users to only share with users in their groups" : "限制用戶僅能與他們群組中的其他用戶分享", "Exclude groups from sharing" : "禁止特定群組分享檔案", "These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。", - "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成", - "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名", "Allow username autocompletion to users based on phone number integration" : "允許基於電話號碼整合的用戶自動完成用戶名", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "如果啟用了自動完成功能“相同的群組”和“電話號碼整合”,則任何一個匹配都足以向用戶顯示。", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電郵地址時,允許自動完成(忽略缺少的電話簿匹配項,並且位於同一群組中)", @@ -527,7 +526,6 @@ "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", "Migration started …" : "開始遷移……", "Address" : "地址", - "Avatar" : "虛擬化身大頭照", "An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。", "Plain" : "明文", "NT LAN Manager" : "NT LAN 管理程式", @@ -546,6 +544,8 @@ "Pick background job setting" : "挑選後台作業設定", "Recommended" : "建議", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統用戶「%s」執行。", + "Allow username autocompletion in share dialog" : "在共享對話框中允許用戶名自動完成", + "Allow username autocompletion to users within the same groups" : "允許對同一群組中的用戶自動完成用戶名", "Change privacy level of profile picture" : "更改個人資料圖片的私隱級別", "Upload new" : "上傳新的", "Select from Files" : "從雲端檔案選擇", diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js index 015383de2fe..b86270deb22 100644 --- a/apps/settings/l10n/zh_TW.js +++ b/apps/settings/l10n/zh_TW.js @@ -342,6 +342,7 @@ OC.L10N.register( "Set user as admin for" : "將使用者設定為管理員", "Select user quota" : "選取使用者配額", "Set the language" : "設定語言", + "Select manager" : "選取管理者", "Delete user" : "刪除使用者", "Wipe all devices" : "抹除所有裝置", "Disable user" : "停用使用者", @@ -357,17 +358,22 @@ OC.L10N.register( "Edit User" : "編輯使用者", "Toggle user actions menu" : "切換使用者動作選單", "{size} used" : "已使用 {size}", + "User's table" : "使用者的表格", "New user" : "新使用者", "Will be autogenerated" : "將自動生成", "Display name" : "顯示名稱", "Email" : "信箱", "Default language" : "預設語言", + "Select user manager" : "選取使用者管理者", "Add a new user" : "新增使用者", + "Avatar" : "大頭照", "Group admin for" : "群組管理員", "Quota" : "容量限制", "User backend" : "使用者資料後端", "Storage location" : "儲存位址", "Last login" : "最後登入", + "Manager" : "管理者", + "User actions" : "使用者動作", "No users in here" : "這裡沒有使用者", "Default quota" : "預設儲存容量限制", "Common languages" : "常用語言", @@ -487,8 +493,8 @@ OC.L10N.register( "Restrict users to only share with users in their groups" : "限制使用者僅能與他們群組中的其他使用者分享", "Exclude groups from sharing" : "禁止特定群組分享檔案", "These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。", - "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成", - "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者", + "Allow username autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊使用者名稱並允許存取系統通訊錄", + "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "允許同一個群組內的使用者自動完成使用者名稱,並將系統通訊錄限制為同一個群組內的使用者", "Allow username autocompletion to users based on phone number integration" : "允許以電話號碼整合為基礎的使用者名稱自動完成", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "若同時啟用「同一個群組」與「電話號碼整合」的自動完成,則符合其中一項條件就會顯示使用者。", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電子郵件地址時,允許自動完成(忽略缺少的通訊錄相符,以及在同一個群組中的)", @@ -529,7 +535,6 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", "Migration started …" : "開始遷移……", "Address" : "地址", - "Avatar" : "大頭照", "An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。", "Plain" : "明文", "NT LAN Manager" : "NT LAN 管理程式", @@ -548,6 +553,8 @@ OC.L10N.register( "Pick background job setting" : "挑選背景工作設定", "Recommended" : "建議", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者「%s」執行。", + "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成", + "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者", "Change privacy level of profile picture" : "變更個人資料照片的隱私等級", "Upload new" : "上傳新的", "Select from Files" : "從雲端檔案選擇", diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json index 90c8b91f1e4..fa2f2e00717 100644 --- a/apps/settings/l10n/zh_TW.json +++ b/apps/settings/l10n/zh_TW.json @@ -340,6 +340,7 @@ "Set user as admin for" : "將使用者設定為管理員", "Select user quota" : "選取使用者配額", "Set the language" : "設定語言", + "Select manager" : "選取管理者", "Delete user" : "刪除使用者", "Wipe all devices" : "抹除所有裝置", "Disable user" : "停用使用者", @@ -355,17 +356,22 @@ "Edit User" : "編輯使用者", "Toggle user actions menu" : "切換使用者動作選單", "{size} used" : "已使用 {size}", + "User's table" : "使用者的表格", "New user" : "新使用者", "Will be autogenerated" : "將自動生成", "Display name" : "顯示名稱", "Email" : "信箱", "Default language" : "預設語言", + "Select user manager" : "選取使用者管理者", "Add a new user" : "新增使用者", + "Avatar" : "大頭照", "Group admin for" : "群組管理員", "Quota" : "容量限制", "User backend" : "使用者資料後端", "Storage location" : "儲存位址", "Last login" : "最後登入", + "Manager" : "管理者", + "User actions" : "使用者動作", "No users in here" : "這裡沒有使用者", "Default quota" : "預設儲存容量限制", "Common languages" : "常用語言", @@ -485,8 +491,8 @@ "Restrict users to only share with users in their groups" : "限制使用者僅能與他們群組中的其他使用者分享", "Exclude groups from sharing" : "禁止特定群組分享檔案", "These groups will still be able to receive shares, but not to initiate them." : "這些群組仍然能接受其他人的分享,但是沒有辦法發起分享。", - "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成", - "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者", + "Allow username autocompletion in share dialog and allow access to the system address book" : "允許在分享對話方塊中自動補齊使用者名稱並允許存取系統通訊錄", + "Allow username autocompletion to users within the same groups and limit system address books to users in the same groups" : "允許同一個群組內的使用者自動完成使用者名稱,並將系統通訊錄限制為同一個群組內的使用者", "Allow username autocompletion to users based on phone number integration" : "允許以電話號碼整合為基礎的使用者名稱自動完成", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "若同時啟用「同一個群組」與「電話號碼整合」的自動完成,則符合其中一項條件就會顯示使用者。", "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "輸入全名或電子郵件地址時,允許自動完成(忽略缺少的通訊錄相符,以及在同一個群組中的)", @@ -527,7 +533,6 @@ "Migration in progress. Please wait until the migration is finished" : "正在進行遷移。請等候遷移結束", "Migration started …" : "開始遷移……", "Address" : "地址", - "Avatar" : "大頭照", "An error occured during the request. Unable to proceed." : "請求時發生錯誤。無法繼續。", "Plain" : "明文", "NT LAN Manager" : "NT LAN 管理程式", @@ -546,6 +551,8 @@ "Pick background job setting" : "挑選背景工作設定", "Recommended" : "建議", "The cron.php needs to be executed by the system user \"%s\"." : "cron.php 必須由系統使用者「%s」執行。", + "Allow username autocompletion in share dialog" : "在分享對話框中允許使用者名稱自動完成", + "Allow username autocompletion to users within the same groups" : "允許使用者自動完成在同一個群組中的使用者", "Change privacy level of profile picture" : "變更個人資料照片的隱私等級", "Upload new" : "上傳新的", "Select from Files" : "從雲端檔案選擇", diff --git a/apps/settings/src/components/BasicSettings/BackgroundJob.vue b/apps/settings/src/components/BasicSettings/BackgroundJob.vue index 17e77aff6c7..2befc5cce79 100644 --- a/apps/settings/src/components/BasicSettings/BackgroundJob.vue +++ b/apps/settings/src/components/BasicSettings/BackgroundJob.vue @@ -196,7 +196,7 @@ export default { margin-top: 8px; padding: 5px; border-radius: var(--border-radius); - color: var(--color-primary-text); + color: var(--color-primary-element-text); background-color: var(--color-error); width: initial; } @@ -204,7 +204,7 @@ export default { margin-top: 8px; padding: 5px; border-radius: var(--border-radius); - color: var(--color-primary-text); + color: var(--color-primary-element-text); background-color: var(--color-warning); width: initial; } diff --git a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue index 8016fe9e459..960053aafe0 100644 --- a/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue +++ b/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue @@ -161,12 +161,12 @@ export default { &__header { height: 70px; border-radius: var(--border-radius-large) var(--border-radius-large) 0 0; - background-color: var(--color-primary); + background-color: var(--color-primary-element); background-image: var(--gradient-primary-background); span { bottom: 0; - color: var(--color-primary-text); + color: var(--color-primary-element-text); font-size: 18px; font-weight: bold; margin: 0 4px 8px 0; diff --git a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue index d5d57c47c01..8290ece03c4 100644 --- a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue +++ b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue @@ -98,7 +98,7 @@ export default { } .federation-actions__btn--active { - background-color: var(--color-primary-light) !important; - box-shadow: inset 2px 0 var(--color-primary) !important; + background-color: var(--color-primary-element-light) !important; + box-shadow: inset 2px 0 var(--color-primary-element) !important; } </style> diff --git a/apps/systemtags/l10n/cs.js b/apps/systemtags/l10n/cs.js index 30342da2916..bec19c16f36 100644 --- a/apps/systemtags/l10n/cs.js +++ b/apps/systemtags/l10n/cs.js @@ -48,7 +48,12 @@ OC.L10N.register( "Collaborative tags" : "Štítky pro spolupráci", "Collaborative tagging functionality which shares tags among users." : "Funkce opatřování štítky pro spolupráci, sdílenými mezi uživateli.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funkce pro opatřování štítky pro spolupráci, sdílenými mezi uživateli. Skvělé pro týmy.\n\t(Pokud jste poskytovateli instalace, sloužící více subjektům, je doporučeno tuto aplikaci vypnout, protože štítky jsou sdílené.)", + "Collaborative tags …" : "Štítky pro spolupráci…", + "No tags to select, type to create a new tag" : "Nevybrány žádné štítky k výběru – psaním vytvořte nový", "Failed to load tags" : "Štítky se nepodařilo načíst", + "Failed to load selected tags" : "Vybrané štítky se nepodařilo načíst", + "Failed to select tag" : "Štítek se nepodařilo načíst", + "Failed to create tag" : "Štítek se nepodařilo vytvořit", "Failed to delete tag" : "Štítek se nepodařilo smazat", "Failed to load last used tags" : "Nepodařilo se načíst nedávno použité štítky", "Missing \"Content-Location\" header" : "Chybí hlavička „Content-Location“", diff --git a/apps/systemtags/l10n/cs.json b/apps/systemtags/l10n/cs.json index e9e1eff7f35..74e7bdae3e9 100644 --- a/apps/systemtags/l10n/cs.json +++ b/apps/systemtags/l10n/cs.json @@ -46,7 +46,12 @@ "Collaborative tags" : "Štítky pro spolupráci", "Collaborative tagging functionality which shares tags among users." : "Funkce opatřování štítky pro spolupráci, sdílenými mezi uživateli.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Funkce pro opatřování štítky pro spolupráci, sdílenými mezi uživateli. Skvělé pro týmy.\n\t(Pokud jste poskytovateli instalace, sloužící více subjektům, je doporučeno tuto aplikaci vypnout, protože štítky jsou sdílené.)", + "Collaborative tags …" : "Štítky pro spolupráci…", + "No tags to select, type to create a new tag" : "Nevybrány žádné štítky k výběru – psaním vytvořte nový", "Failed to load tags" : "Štítky se nepodařilo načíst", + "Failed to load selected tags" : "Vybrané štítky se nepodařilo načíst", + "Failed to select tag" : "Štítek se nepodařilo načíst", + "Failed to create tag" : "Štítek se nepodařilo vytvořit", "Failed to delete tag" : "Štítek se nepodařilo smazat", "Failed to load last used tags" : "Nepodařilo se načíst nedávno použité štítky", "Missing \"Content-Location\" header" : "Chybí hlavička „Content-Location“", diff --git a/apps/theming/src/AdminTheming.vue b/apps/theming/src/AdminTheming.vue index f922143e04d..a190dfb2a6a 100644 --- a/apps/theming/src/AdminTheming.vue +++ b/apps/theming/src/AdminTheming.vue @@ -299,7 +299,7 @@ export default { /* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css But without the user variables. That way the admin can preview the render as guest*/ /* As guest, there is no user color color-background-plain */ - background-color: var(--color-primary-default, #0082c9); + background-color: var(--color-primary-element-default, #0082c9); /* As guest, there is no user background (--image-background) 1. Empty background if defined 2. Else default background diff --git a/apps/theming/src/components/BackgroundSettings.vue b/apps/theming/src/components/BackgroundSettings.vue index 0d07071cb93..20c7ef622de 100644 --- a/apps/theming/src/components/BackgroundSettings.vue +++ b/apps/theming/src/components/BackgroundSettings.vue @@ -356,7 +356,7 @@ export default { &:hover, &:focus { // Use theme color primary, see inline css variable in template - border: 2px solid var(--border-color, var(--color-primary)) !important; + border: 2px solid var(--border-color, var(--color-primary-element)) !important; } // Icon diff --git a/apps/user_status/src/components/OnlineStatusSelect.vue b/apps/user_status/src/components/OnlineStatusSelect.vue index df7d1377ee3..77600346ac9 100644 --- a/apps/user_status/src/components/OnlineStatusSelect.vue +++ b/apps/user_status/src/components/OnlineStatusSelect.vue @@ -122,7 +122,7 @@ $label-padding: 8px; &__input:checked + &__label, &__input:focus + &__label, &__label:hover { - border-color: var(--color-primary); + border-color: var(--color-primary-element); } &__label:active { diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js index 24da95076a8..a659a1fc3e7 100644 --- a/apps/workflowengine/l10n/cs.js +++ b/apps/workflowengine/l10n/cs.js @@ -48,6 +48,7 @@ OC.L10N.register( "Nextcloud workflow engine" : "Nextcloud engine pro pracovní postupy", "Select a filter" : "Vybrat filtr", "Select a comparator" : "Vyberte porovnání", + "Remove filter" : "Odebrat filtr", "Select a file type" : "Vybrat typ souboru", "e.g. httpd/unix-directory" : "např. httpd/unix-directory", "Folder" : "Složka", @@ -70,6 +71,7 @@ OC.L10N.register( "Add new flow" : "Přidat nový tok", "When" : "Kdy", "and" : "a", + "Add a new filter" : "Přidat nový filtr", "Cancel" : "Storno", "Delete" : "Smazat", "The configuration is invalid" : "Nastavení není platné", diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json index 1c35669304d..b216fe7360c 100644 --- a/apps/workflowengine/l10n/cs.json +++ b/apps/workflowengine/l10n/cs.json @@ -46,6 +46,7 @@ "Nextcloud workflow engine" : "Nextcloud engine pro pracovní postupy", "Select a filter" : "Vybrat filtr", "Select a comparator" : "Vyberte porovnání", + "Remove filter" : "Odebrat filtr", "Select a file type" : "Vybrat typ souboru", "e.g. httpd/unix-directory" : "např. httpd/unix-directory", "Folder" : "Složka", @@ -68,6 +69,7 @@ "Add new flow" : "Přidat nový tok", "When" : "Kdy", "and" : "a", + "Add a new filter" : "Přidat nový filtr", "Cancel" : "Storno", "Delete" : "Smazat", "The configuration is invalid" : "Nastavení není platné", diff --git a/apps/workflowengine/l10n/sv.js b/apps/workflowengine/l10n/sv.js index 995076440bb..45a00308d80 100644 --- a/apps/workflowengine/l10n/sv.js +++ b/apps/workflowengine/l10n/sv.js @@ -48,6 +48,7 @@ OC.L10N.register( "Nextcloud workflow engine" : "Nextcloud arbetsflödesmotor", "Select a filter" : "Välj ett filter", "Select a comparator" : "Välj en jämförelse", + "Remove filter" : "Ta bort filter", "Select a file type" : "Välj en filtyp", "e.g. httpd/unix-directory" : "t.ex. httpd/unix-directory", "Folder" : "Mapp", @@ -70,6 +71,7 @@ OC.L10N.register( "Add new flow" : "Lägg till nytt flöde", "When" : "När", "and" : "och", + "Add a new filter" : "Lägg till nytt filter", "Cancel" : "Avbryt", "Delete" : "Radera", "The configuration is invalid" : "Konfigurationen är felaktig", diff --git a/apps/workflowengine/l10n/sv.json b/apps/workflowengine/l10n/sv.json index f2116412e5b..0cfb7d63e19 100644 --- a/apps/workflowengine/l10n/sv.json +++ b/apps/workflowengine/l10n/sv.json @@ -46,6 +46,7 @@ "Nextcloud workflow engine" : "Nextcloud arbetsflödesmotor", "Select a filter" : "Välj ett filter", "Select a comparator" : "Välj en jämförelse", + "Remove filter" : "Ta bort filter", "Select a file type" : "Välj en filtyp", "e.g. httpd/unix-directory" : "t.ex. httpd/unix-directory", "Folder" : "Mapp", @@ -68,6 +69,7 @@ "Add new flow" : "Lägg till nytt flöde", "When" : "När", "and" : "och", + "Add a new filter" : "Lägg till nytt filter", "Cancel" : "Avbryt", "Delete" : "Radera", "The configuration is invalid" : "Konfigurationen är felaktig", diff --git a/apps/workflowengine/l10n/tr.js b/apps/workflowengine/l10n/tr.js index 10a2de19123..5f79903c27e 100644 --- a/apps/workflowengine/l10n/tr.js +++ b/apps/workflowengine/l10n/tr.js @@ -48,6 +48,7 @@ OC.L10N.register( "Nextcloud workflow engine" : "Nextcloud iş akışı işleyici", "Select a filter" : "Bir süzgeç seçin", "Select a comparator" : "Bir karşılaştırıcı seçin", + "Remove filter" : "Süzgeci kaldır", "Select a file type" : "Bir dosya türü seçin", "e.g. httpd/unix-directory" : "örnek httpd/unix-directory", "Folder" : "Klasör", @@ -70,6 +71,7 @@ OC.L10N.register( "Add new flow" : "Akış ekle", "When" : "Şu zamanda", "and" : "ve", + "Add a new filter" : "Yeni süzgeç ekle", "Cancel" : "İptal", "Delete" : "Sil", "The configuration is invalid" : "Yapılandırma geçersiz", diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json index f019c37e1a5..c36defc5fed 100644 --- a/apps/workflowengine/l10n/tr.json +++ b/apps/workflowengine/l10n/tr.json @@ -46,6 +46,7 @@ "Nextcloud workflow engine" : "Nextcloud iş akışı işleyici", "Select a filter" : "Bir süzgeç seçin", "Select a comparator" : "Bir karşılaştırıcı seçin", + "Remove filter" : "Süzgeci kaldır", "Select a file type" : "Bir dosya türü seçin", "e.g. httpd/unix-directory" : "örnek httpd/unix-directory", "Folder" : "Klasör", @@ -68,6 +69,7 @@ "Add new flow" : "Akış ekle", "When" : "Şu zamanda", "and" : "ve", + "Add a new filter" : "Yeni süzgeç ekle", "Cancel" : "İptal", "Delete" : "Sil", "The configuration is invalid" : "Yapılandırma geçersiz", diff --git a/apps/workflowengine/src/styles/operation.scss b/apps/workflowengine/src/styles/operation.scss index 860258f2851..8370c896658 100644 --- a/apps/workflowengine/src/styles/operation.scss +++ b/apps/workflowengine/src/styles/operation.scss @@ -48,7 +48,7 @@ small { .colored:not(.more) { background-color: var(--color-primary-element); h3, small { - color: var(--color-primary-text) + color: var(--color-primary-element-text) } } diff --git a/core/css/apps.css b/core/css/apps.css index bcd9d8253fe..91c43d2d22f 100644 --- a/core/css/apps.css +++ b/core/css/apps.css @@ -1 +1 @@ -:root{--body-container-margin: calc(var(--default-grid-baseline) * 2);--body-container-radius: calc(var(--default-clickable-area) / 2 + var(--default-grid-baseline) * 2 - 2px);--body-height: calc(100% - env(safe-area-inset-bottom) - 50px - var(--body-container-margin))}@media screen and (max-width: 1024px){:root{--body-container-margin: 0px;--body-container-radius: 0px}}html{width:100%;height:100%;position:absolute;background-color:var(--color-background-plain, var(--color-main-background))}body{background-color:var(--color-background-plain, var(--color-main-background));background-image:var(--image-background, var(--image-background-default));background-size:cover;background-position:center;position:fixed;width:100%;height:calc(100vh - env(safe-area-inset-bottom))}h2{font-weight:bold;font-size:20px;margin-bottom:12px;line-height:30px;color:var(--color-text-light)}h3{font-size:16px;margin:12px 0;color:var(--color-text-light)}h4{font-size:14px}em{font-style:normal;color:var(--color-text-lighter)}dl{padding:12px 0}dt,dd{display:inline-block;padding:12px;padding-left:0}dt{width:130px;white-space:nowrap;text-align:right}kbd{padding:4px 10px;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,.2);border-radius:var(--border-radius);display:inline-block;white-space:nowrap}#content[class*=app-] *{box-sizing:border-box}#app-navigation:not(.vue){--border-radius-pill: calc(var(--default-clickable-area) / 2);width:300px;z-index:500;overflow-y:auto;overflow-x:hidden;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);-webkit-user-select:none;position:sticky;height:100%;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0}#app-navigation:not(.vue) .app-navigation-new{display:block;padding:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue) .app-navigation-new button{display:inline-block;width:100%;padding:10px;padding-left:34px;background-position:10px center;text-align:left;margin:0}#app-navigation:not(.vue) li{position:relative}#app-navigation:not(.vue)>ul{position:relative;height:100%;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;padding:calc(var(--default-grid-baseline)*2);padding-bottom:0}#app-navigation:not(.vue)>ul:last-child{padding-bottom:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue)>ul>li{display:inline-flex;flex-wrap:wrap;order:1;flex-shrink:0;margin:0;margin-bottom:3px;width:100%;border-radius:var(--border-radius-pill)}#app-navigation:not(.vue)>ul>li.pinned{order:2}#app-navigation:not(.vue)>ul>li.pinned.first-pinned{margin-top:auto !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-deleted{padding-left:44px !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-edit{padding-left:38px !important}#app-navigation:not(.vue)>ul>li a:hover,#app-navigation:not(.vue)>ul>li a:hover>a,#app-navigation:not(.vue)>ul>li a:focus,#app-navigation:not(.vue)>ul>li a:focus>a{background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li a:focus-visible{box-shadow:var(--color-primary) inset 0 0 0 2px;outline:none}#app-navigation:not(.vue)>ul>li.active,#app-navigation:not(.vue)>ul>li.active>a,#app-navigation:not(.vue)>ul>li a:active,#app-navigation:not(.vue)>ul>li a:active>a,#app-navigation:not(.vue)>ul>li a.selected,#app-navigation:not(.vue)>ul>li a.selected>a,#app-navigation:not(.vue)>ul>li a.active,#app-navigation:not(.vue)>ul>li a.active>a{background-color:var(--color-primary-light)}#app-navigation:not(.vue)>ul>li.icon-loading-small:after{left:22px;top:22px}#app-navigation:not(.vue)>ul>li.deleted>ul,#app-navigation:not(.vue)>ul>li.collapsible:not(.open)>ul{display:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption{font-weight:bold;line-height:44px;padding:0 44px;white-space:nowrap;text-overflow:ellipsis;box-shadow:none !important;user-select:none;pointer-events:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption:not(:first-child){margin-top:22px}#app-navigation:not(.vue)>ul>li>ul{flex:0 1 auto;width:100%;position:relative}#app-navigation:not(.vue)>ul>li>ul>li{display:inline-flex;flex-wrap:wrap;padding-left:44px;width:100%;margin-bottom:3px}#app-navigation:not(.vue)>ul>li>ul>li:hover,#app-navigation:not(.vue)>ul>li>ul>li:hover>a,#app-navigation:not(.vue)>ul>li>ul>li:focus,#app-navigation:not(.vue)>ul>li>ul>li:focus>a{border-radius:var(--border-radius-pill);background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li>ul>li.active,#app-navigation:not(.vue)>ul>li>ul>li.active>a,#app-navigation:not(.vue)>ul>li>ul>li a.selected,#app-navigation:not(.vue)>ul>li>ul>li a.selected>a{border-radius:var(--border-radius-pill);background-color:var(--color-primary-light)}#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small:after{left:22px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-deleted{margin-left:4px;padding-left:84px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-edit{margin-left:4px;padding-left:78px !important}#app-navigation:not(.vue)>ul>li,#app-navigation:not(.vue)>ul>li>ul>li{position:relative;box-sizing:border-box}#app-navigation:not(.vue)>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li.icon-loading-small>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>a,#app-navigation:not(.vue)>ul>li>ul>li>a{background-size:16px 16px;background-position:14px center;background-repeat:no-repeat;display:block;justify-content:space-between;line-height:44px;min-height:44px;padding:0 12px 0 14px;overflow:hidden;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;border-radius:var(--border-radius-pill);color:var(--color-main-text);flex:1 1 0px;z-index:100}#app-navigation:not(.vue)>ul>li>a.svg,#app-navigation:not(.vue)>ul>li>ul>li>a.svg{padding:0 12px 0 44px}#app-navigation:not(.vue)>ul>li>a.svg :focus-visible,#app-navigation:not(.vue)>ul>li>ul>li>a.svg :focus-visible{padding:0 8px 0 42px}#app-navigation:not(.vue)>ul>li>a:first-child img,#app-navigation:not(.vue)>ul>li>ul>li>a:first-child img{margin-right:11px;width:16px;height:16px;filter:var(--background-invert-if-dark)}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils{display:inline-block;float:right}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter{padding-right:0 !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet{position:absolute;display:block;margin:16px;width:12px;height:12px;border:none;border-radius:50%;cursor:pointer;transition:background 100ms ease-in-out}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet+a,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet+a{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-menu,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-menu{top:44px}#app-navigation:not(.vue)>ul>li.editing .app-navigation-entry-edit,#app-navigation:not(.vue)>ul>li>ul>li.editing .app-navigation-entry-edit{opacity:1;z-index:250}#app-navigation:not(.vue)>ul>li.deleted .app-navigation-entry-deleted,#app-navigation:not(.vue)>ul>li>ul>li.deleted .app-navigation-entry-deleted{transform:translateX(0);z-index:250}#app-navigation:not(.vue).hidden{display:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{border:0;opacity:.5;background-color:rgba(0,0,0,0);background-repeat:no-repeat;background-position:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:hover,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:focus,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .collapsible .collapse{opacity:0;position:absolute;width:44px;height:44px;margin:0;z-index:110;left:0}#app-navigation:not(.vue) .collapsible .collapse:focus-visible{opacity:1;border-width:0;box-shadow:inset 0 0 0 2px var(--color-primary);background:none}#app-navigation:not(.vue) .collapsible:before{position:absolute;height:44px;width:44px;margin:0;padding:0;background:none;background-image:var(--icon-triangle-s-dark);background-size:16px;background-repeat:no-repeat;background-position:center;border:none;border-radius:0;outline:none !important;box-shadow:none;content:" ";opacity:0;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);z-index:105;border-radius:50%;transition:opacity 100ms ease-in-out}#app-navigation:not(.vue) .collapsible>a:first-child{padding-left:44px}#app-navigation:not(.vue) .collapsible:hover:before,#app-navigation:not(.vue) .collapsible:focus:before{opacity:1}#app-navigation:not(.vue) .collapsible:hover>a,#app-navigation:not(.vue) .collapsible:focus>a{background-image:none}#app-navigation:not(.vue) .collapsible:hover>.app-navigation-entry-bullet,#app-navigation:not(.vue) .collapsible:focus>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue) .collapsible.open:before{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}#app-navigation:not(.vue) .app-navigation-entry-utils{flex:0 1 auto}#app-navigation:not(.vue) .app-navigation-entry-utils ul{display:flex !important;align-items:center;justify-content:flex-end}#app-navigation:not(.vue) .app-navigation-entry-utils li{width:44px !important;height:44px}#app-navigation:not(.vue) .app-navigation-entry-utils button{height:100%;width:100%;margin:0;box-shadow:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button button:not([class^=icon-]):not([class*=" icon-"]){background-image:var(--icon-more-dark)}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:hover button,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:focus button{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter{overflow:hidden;text-align:right;font-size:9pt;line-height:44px;padding:0 12px}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted{padding:0;text-align:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted span{padding:2px 5px;border-radius:10px;background-color:var(--color-primary);color:var(--color-primary-text)}#app-navigation:not(.vue) .app-navigation-entry-edit{padding-left:5px;padding-right:5px;display:block;width:calc(100% - 1px);transition:opacity 250ms ease-in-out;opacity:0;position:absolute;background-color:var(--color-main-background);z-index:-1}#app-navigation:not(.vue) .app-navigation-entry-edit form,#app-navigation:not(.vue) .app-navigation-entry-edit div{display:inline-flex;width:100%}#app-navigation:not(.vue) .app-navigation-entry-edit input{padding:5px;margin-right:0;height:38px}#app-navigation:not(.vue) .app-navigation-entry-edit input:hover,#app-navigation:not(.vue) .app-navigation-entry-edit input:focus{z-index:1}#app-navigation:not(.vue) .app-navigation-entry-edit input[type=text]{width:100%;min-width:0;border-bottom-right-radius:0;border-top-right-radius:0}#app-navigation:not(.vue) .app-navigation-entry-edit button,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]){width:36px;height:38px;flex:0 0 36px}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:last-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:last-child){border-radius:0 !important}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:first-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:first-child){margin-left:-1px}#app-navigation:not(.vue) .app-navigation-entry-edit button:last-child,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):last-child{border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-left-radius:0;border-top-left-radius:0}#app-navigation:not(.vue) .app-navigation-entry-deleted{display:inline-flex;padding-left:44px;transform:translateX(300px)}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-description{position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:1 1 0px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{margin:0;height:44px;width:44px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{opacity:1}#app-navigation:not(.vue) .app-navigation-entry-edit,#app-navigation:not(.vue) .app-navigation-entry-deleted{width:calc(100% - 1px);transition:transform 250ms ease-in-out,opacity 250ms ease-in-out,z-index 250ms ease-in-out;position:absolute;left:0;background-color:var(--color-main-background);box-sizing:border-box}#app-navigation:not(.vue) .drag-and-drop{-webkit-transition:padding-bottom 500ms ease 0s;transition:padding-bottom 500ms ease 0s;padding-bottom:40px}#app-navigation:not(.vue) .error{color:var(--color-error)}#app-navigation:not(.vue) .app-navigation-entry-utils ul,#app-navigation:not(.vue) .app-navigation-entry-menu ul{list-style-type:none}#content{box-sizing:border-box;position:static;margin:var(--body-container-margin);margin-top:50px;padding:0;display:flex;width:calc(100% - var(--body-container-margin)*2);height:var(--body-height);border-radius:var(--body-container-radius);overflow:clip}#content:not(.with-sidebar--full){position:fixed}@media only screen and (max-width: 1024px){#content{border-top-left-radius:var(--border-radius-large);border-top-right-radius:var(--border-radius-large)}#app-navigation{border-top-left-radius:var(--border-radius-large)}#app-sidebar{border-top-right-radius:var(--border-radius-large)}}#app-content{z-index:1000;background-color:var(--color-main-background);flex-basis:100vw;overflow:auto;position:initial;height:100%}#app-content>.section:first-child{border-top:none}#app-content #app-content-wrapper{display:flex;position:relative;align-items:stretch;min-height:100%}#app-content #app-content-wrapper .app-content-details{flex:1 1 524px}#app-content #app-content-wrapper .app-content-details #app-navigation-toggle-back{display:none}#app-content::-webkit-scrollbar-button{height:var(--body-container-radius)}#app-sidebar{width:27vw;min-width:300px;max-width:500px;display:block;position:-webkit-sticky;position:sticky;top:50px;right:0;overflow-y:auto;overflow-x:hidden;z-index:1500;opacity:.7px;height:calc(100vh - 50px);background:var(--color-main-background);border-left:1px solid var(--color-border);flex-shrink:0}#app-sidebar.disappear{display:none}#app-settings{margin-top:auto}#app-settings.open #app-settings-content,#app-settings.opened #app-settings-content{display:block}#app-settings-content{display:none;padding:calc(var(--default-grid-baseline)*2);padding-top:0;padding-left:calc(var(--default-grid-baseline)*4);max-height:300px;overflow-y:auto;box-sizing:border-box}#app-settings-content input[type=text]{width:93%}#app-settings-content .info-text{padding:5px 0 7px 22px;color:var(--color-text-lighter)}#app-settings-content input[type=checkbox].radio+label,#app-settings-content input[type=checkbox].checkbox+label,#app-settings-content input[type=radio].radio+label,#app-settings-content input[type=radio].checkbox+label{display:inline-block;width:100%;padding:5px 0}#app-settings-header{box-sizing:border-box;background-color:rgba(0,0,0,0);overflow:hidden;border-radius:calc(var(--default-clickable-area)/2);padding:calc(var(--default-grid-baseline)*2);padding-top:0}#app-settings-header .settings-button{display:flex;align-items:center;height:44px;width:100%;padding:0;margin:0;background-color:rgba(0,0,0,0);box-shadow:none;border:0;border-radius:calc(var(--default-clickable-area)/2);text-align:left;font-weight:normal;font-size:100%;opacity:.8;color:var(--color-main-text)}#app-settings-header .settings-button.opened{border-top:solid 1px var(--color-border);background-color:var(--color-main-background);margin-top:8px}#app-settings-header .settings-button:hover,#app-settings-header .settings-button:focus{background-color:var(--color-background-hover)}#app-settings-header .settings-button::before{background-image:var(--icon-settings-dark);background-position:14px center;background-repeat:no-repeat;content:"";width:44px;height:44px;top:0;left:0;display:block}#app-settings-header .settings-button:focus-visible{box-shadow:0 0 0 2px inset var(--color-primary) !important;background-position:12px center}.section{display:block;padding:30px;margin-bottom:24px}.section.hidden{display:none !important}.section input[type=checkbox],.section input[type=radio]{vertical-align:-2px;margin-right:4px}.sub-section{position:relative;margin-top:10px;margin-left:27px;margin-bottom:10px}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}.tabHeaders{display:flex;margin-bottom:16px}.tabHeaders .tabHeader{display:flex;flex-direction:column;flex-grow:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;color:var(--color-text-lighter);margin-bottom:1px;padding:5px}.tabHeaders .tabHeader.hidden{display:none}.tabHeaders .tabHeader:first-child{padding-left:15px}.tabHeaders .tabHeader:last-child{padding-right:15px}.tabHeaders .tabHeader .icon{display:inline-block;width:100%;height:16px;background-size:16px;vertical-align:middle;margin-top:-2px;margin-right:3px;opacity:.7;cursor:pointer}.tabHeaders .tabHeader a{color:var(--color-text-lighter);margin-bottom:1px;overflow:hidden;text-overflow:ellipsis}.tabHeaders .tabHeader.selected{font-weight:bold}.tabHeaders .tabHeader.selected,.tabHeaders .tabHeader:hover,.tabHeaders .tabHeader:focus{margin-bottom:0px;color:var(--color-main-text);border-bottom:1px solid var(--color-text-lighter)}.tabsContainer{clear:left}.tabsContainer .tab{padding:0 15px 15px}.contact .popovermenu ul>li>a>img,.popover__menu>li>a>img{filter:var(--background-invert-if-dark)}.contact .popovermenu ul>li>a>img[src^=data],.popover__menu>li>a>img[src^=data]{filter:none}.bubble,.app-navigation-entry-menu,.popovermenu{position:absolute;background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-large);padding:3px;z-index:110;margin:5px;margin-top:-5px;right:0;filter:drop-shadow(0 1px 3px var(--color-box-shadow));display:none;will-change:filter}.bubble:after,.app-navigation-entry-menu:after,.popovermenu:after{bottom:100%;right:7px;border:solid rgba(0,0,0,0);content:" ";height:0;width:0;position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);border-width:9px}.bubble.menu-center,.app-navigation-entry-menu.menu-center,.popovermenu.menu-center{transform:translateX(50%);right:50%;margin-right:0}.bubble.menu-center:after,.app-navigation-entry-menu.menu-center:after,.popovermenu.menu-center:after{right:50%;transform:translateX(50%)}.bubble.menu-left,.app-navigation-entry-menu.menu-left,.popovermenu.menu-left{right:auto;left:0;margin-right:0}.bubble.menu-left:after,.app-navigation-entry-menu.menu-left:after,.popovermenu.menu-left:after{left:6px;right:auto}.bubble.open,.app-navigation-entry-menu.open,.popovermenu.open{display:block}.bubble.contactsmenu-popover,.app-navigation-entry-menu.contactsmenu-popover,.popovermenu.contactsmenu-popover{margin:0}.bubble ul,.app-navigation-entry-menu ul,.popovermenu ul{display:flex !important;flex-direction:column}.bubble li,.app-navigation-entry-menu li,.popovermenu li{display:flex;flex:0 0 auto}.bubble li.hidden,.app-navigation-entry-menu li.hidden,.popovermenu li.hidden{display:none}.bubble li>button,.bubble li>a,.bubble li>.menuitem,.app-navigation-entry-menu li>button,.app-navigation-entry-menu li>a,.app-navigation-entry-menu li>.menuitem,.popovermenu li>button,.popovermenu li>a,.popovermenu li>.menuitem{cursor:pointer;line-height:44px;border:0;border-radius:var(--border-radius-large);background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{min-width:0;min-height:0;background-position:14px center;background-size:16px}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"]{padding:22px 0 22px 44px}.bubble li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{padding:0 14px 0 44px !important}.bubble li>button:hover,.bubble li>button:focus,.bubble li>a:hover,.bubble li>a:focus,.bubble li>.menuitem:hover,.bubble li>.menuitem:focus,.app-navigation-entry-menu li>button:hover,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>a:hover,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>.menuitem:hover,.app-navigation-entry-menu li>.menuitem:focus,.popovermenu li>button:hover,.popovermenu li>button:focus,.popovermenu li>a:hover,.popovermenu li>a:focus,.popovermenu li>.menuitem:hover,.popovermenu li>.menuitem:focus{background-color:var(--color-background-hover)}.bubble li>button:focus,.bubble li>button:focus-visible,.bubble li>a:focus,.bubble li>a:focus-visible,.bubble li>.menuitem:focus,.bubble li>.menuitem:focus-visible,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>button:focus-visible,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>a:focus-visible,.app-navigation-entry-menu li>.menuitem:focus,.app-navigation-entry-menu li>.menuitem:focus-visible,.popovermenu li>button:focus,.popovermenu li>button:focus-visible,.popovermenu li>a:focus,.popovermenu li>a:focus-visible,.popovermenu li>.menuitem:focus,.popovermenu li>.menuitem:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element)}.bubble li>button.active,.bubble li>a.active,.bubble li>.menuitem.active,.app-navigation-entry-menu li>button.active,.app-navigation-entry-menu li>a.active,.app-navigation-entry-menu li>.menuitem.active,.popovermenu li>button.active,.popovermenu li>a.active,.popovermenu li>.menuitem.active{border-radius:var(--border-radius-pill);background-color:var(--color-primary-light)}.bubble li>button.action,.bubble li>a.action,.bubble li>.menuitem.action,.app-navigation-entry-menu li>button.action,.app-navigation-entry-menu li>a.action,.app-navigation-entry-menu li>.menuitem.action,.popovermenu li>button.action,.popovermenu li>a.action,.popovermenu li>.menuitem.action{padding:inherit !important}.bubble li>button>span,.bubble li>a>span,.bubble li>.menuitem>span,.app-navigation-entry-menu li>button>span,.app-navigation-entry-menu li>a>span,.app-navigation-entry-menu li>.menuitem>span,.popovermenu li>button>span,.popovermenu li>a>span,.popovermenu li>.menuitem>span{cursor:pointer;white-space:nowrap}.bubble li>button>p,.bubble li>a>p,.bubble li>.menuitem>p,.app-navigation-entry-menu li>button>p,.app-navigation-entry-menu li>a>p,.app-navigation-entry-menu li>.menuitem>p,.popovermenu li>button>p,.popovermenu li>a>p,.popovermenu li>.menuitem>p{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}.bubble li>button>select,.bubble li>a>select,.bubble li>.menuitem>select,.app-navigation-entry-menu li>button>select,.app-navigation-entry-menu li>a>select,.app-navigation-entry-menu li>.menuitem>select,.popovermenu li>button>select,.popovermenu li>a>select,.popovermenu li>.menuitem>select{margin:0;margin-left:6px}.bubble li>button:not(:empty),.bubble li>a:not(:empty),.bubble li>.menuitem:not(:empty),.app-navigation-entry-menu li>button:not(:empty),.app-navigation-entry-menu li>a:not(:empty),.app-navigation-entry-menu li>.menuitem:not(:empty),.popovermenu li>button:not(:empty),.popovermenu li>a:not(:empty),.popovermenu li>.menuitem:not(:empty){padding-right:14px !important}.bubble li>button>img,.bubble li>a>img,.bubble li>.menuitem>img,.app-navigation-entry-menu li>button>img,.app-navigation-entry-menu li>a>img,.app-navigation-entry-menu li>.menuitem>img,.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:16px;padding:14px}.bubble li>button>input.radio+label,.bubble li>button>input.checkbox+label,.bubble li>a>input.radio+label,.bubble li>a>input.checkbox+label,.bubble li>.menuitem>input.radio+label,.bubble li>.menuitem>input.checkbox+label,.app-navigation-entry-menu li>button>input.radio+label,.app-navigation-entry-menu li>button>input.checkbox+label,.app-navigation-entry-menu li>a>input.radio+label,.app-navigation-entry-menu li>a>input.checkbox+label,.app-navigation-entry-menu li>.menuitem>input.radio+label,.app-navigation-entry-menu li>.menuitem>input.checkbox+label,.popovermenu li>button>input.radio+label,.popovermenu li>button>input.checkbox+label,.popovermenu li>a>input.radio+label,.popovermenu li>a>input.checkbox+label,.popovermenu li>.menuitem>input.radio+label,.popovermenu li>.menuitem>input.checkbox+label{padding:0 !important;width:100%}.bubble li>button>input.checkbox+label::before,.bubble li>a>input.checkbox+label::before,.bubble li>.menuitem>input.checkbox+label::before,.app-navigation-entry-menu li>button>input.checkbox+label::before,.app-navigation-entry-menu li>a>input.checkbox+label::before,.app-navigation-entry-menu li>.menuitem>input.checkbox+label::before,.popovermenu li>button>input.checkbox+label::before,.popovermenu li>a>input.checkbox+label::before,.popovermenu li>.menuitem>input.checkbox+label::before{margin:-2px 13px 0}.bubble li>button>input.radio+label::before,.bubble li>a>input.radio+label::before,.bubble li>.menuitem>input.radio+label::before,.app-navigation-entry-menu li>button>input.radio+label::before,.app-navigation-entry-menu li>a>input.radio+label::before,.app-navigation-entry-menu li>.menuitem>input.radio+label::before,.popovermenu li>button>input.radio+label::before,.popovermenu li>a>input.radio+label::before,.popovermenu li>.menuitem>input.radio+label::before{margin:-2px 12px 0}.bubble li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}.bubble li>button form,.bubble li>a form,.bubble li>.menuitem form,.app-navigation-entry-menu li>button form,.app-navigation-entry-menu li>a form,.app-navigation-entry-menu li>.menuitem form,.popovermenu li>button form,.popovermenu li>a form,.popovermenu li>.menuitem form{display:flex;flex:1 1 auto;align-items:center}.bubble li>button form:not(:first-child),.bubble li>a form:not(:first-child),.bubble li>.menuitem form:not(:first-child),.app-navigation-entry-menu li>button form:not(:first-child),.app-navigation-entry-menu li>a form:not(:first-child),.app-navigation-entry-menu li>.menuitem form:not(:first-child),.popovermenu li>button form:not(:first-child),.popovermenu li>a form:not(:first-child),.popovermenu li>.menuitem form:not(:first-child){margin-left:5px}.bubble li>button>span.hidden+form,.bubble li>button>span[style*="display:none"]+form,.bubble li>a>span.hidden+form,.bubble li>a>span[style*="display:none"]+form,.bubble li>.menuitem>span.hidden+form,.bubble li>.menuitem>span[style*="display:none"]+form,.app-navigation-entry-menu li>button>span.hidden+form,.app-navigation-entry-menu li>button>span[style*="display:none"]+form,.app-navigation-entry-menu li>a>span.hidden+form,.app-navigation-entry-menu li>a>span[style*="display:none"]+form,.app-navigation-entry-menu li>.menuitem>span.hidden+form,.app-navigation-entry-menu li>.menuitem>span[style*="display:none"]+form,.popovermenu li>button>span.hidden+form,.popovermenu li>button>span[style*="display:none"]+form,.popovermenu li>a>span.hidden+form,.popovermenu li>a>span[style*="display:none"]+form,.popovermenu li>.menuitem>span.hidden+form,.popovermenu li>.menuitem>span[style*="display:none"]+form{margin-left:0}.bubble li>button input,.bubble li>a input,.bubble li>.menuitem input,.app-navigation-entry-menu li>button input,.app-navigation-entry-menu li>a input,.app-navigation-entry-menu li>.menuitem input,.popovermenu li>button input,.popovermenu li>a input,.popovermenu li>.menuitem input{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}.bubble li>button input:not(:first-child),.bubble li>a input:not(:first-child),.bubble li>.menuitem input:not(:first-child),.app-navigation-entry-menu li>button input:not(:first-child),.app-navigation-entry-menu li>a input:not(:first-child),.app-navigation-entry-menu li>.menuitem input:not(:first-child),.popovermenu li>button input:not(:first-child),.popovermenu li>a input:not(:first-child),.popovermenu li>.menuitem input:not(:first-child){margin-left:5px}.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input{margin-top:12px}.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input{margin-bottom:0px}.bubble li>button,.app-navigation-entry-menu li>button,.popovermenu li>button{padding:0}.bubble li>button span,.app-navigation-entry-menu li>button span,.popovermenu li>button span{opacity:1}.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:44px;height:44px}#contactsmenu .contact .popovermenu li>a>img{width:16px;height:16px}.app-content-list{position:-webkit-sticky;position:relative;top:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:transform 250ms ease-in-out;min-height:100%;max-height:100%;overflow-y:auto;overflow-x:hidden;flex:1 1 200px;min-width:200px;max-width:300px}.app-content-list .app-content-list-item{position:relative;height:68px;cursor:pointer;padding:10px 7px;display:flex;flex-wrap:wrap;align-items:center;flex:0 0 auto}.app-content-list .app-content-list-item>[class^=icon-],.app-content-list .app-content-list-item>[class*=" icon-"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]{order:4;width:24px;height:24px;margin:-7px;padding:22px;opacity:.3;cursor:pointer}.app-content-list .app-content-list-item>[class^=icon-]:hover,.app-content-list .app-content-list-item>[class^=icon-]:focus,.app-content-list .app-content-list-item>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:focus{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:focus{opacity:1}.app-content-list .app-content-list-item>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>[class*=" icon-"].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"].icon-starred{opacity:1}.app-content-list .app-content-list-item:hover,.app-content-list .app-content-list-item:focus,.app-content-list .app-content-list-item.active{background-color:var(--color-background-dark)}.app-content-list .app-content-list-item:hover .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item:focus .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item.active .app-content-list-item-checkbox.checkbox+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item .app-content-list-item-star{position:absolute;height:40px;width:40px;z-index:50}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label+.app-content-list-item-icon{opacity:.7}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label{top:14px;left:7px;display:none}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label::before{margin:0}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label~.app-content-list-item-star{display:none}.app-content-list .app-content-list-item .app-content-list-item-star{display:flex;top:10px;left:32px;background-size:16px;height:20px;width:20px;margin:0;padding:0}.app-content-list .app-content-list-item .app-content-list-item-icon{position:absolute;display:inline-block;height:40px;width:40px;line-height:40px;border-radius:50%;vertical-align:middle;margin-right:10px;color:#fff;text-align:center;font-size:1.5em;text-transform:capitalize;object-fit:cover;user-select:none;cursor:pointer;top:50%;margin-top:-20px}.app-content-list .app-content-list-item .app-content-list-item-line-one,.app-content-list .app-content-list-item .app-content-list-item-line-two{display:block;padding-left:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;order:1;flex:1 1 0px;padding-right:10px;cursor:pointer}.app-content-list .app-content-list-item .app-content-list-item-line-two{opacity:.5;order:3;flex:1 0;flex-basis:calc(100% - 44px)}.app-content-list .app-content-list-item .app-content-list-item-details{order:2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px;opacity:.5;font-size:80%;user-select:none}.app-content-list .app-content-list-item .app-content-list-item-menu{order:4;position:relative}.app-content-list .app-content-list-item .app-content-list-item-menu .popovermenu{margin:0;right:-2px}.app-content-list.selection .app-content-list-item-checkbox.checkbox+label{display:flex}/*# sourceMappingURL=apps.css.map */ +:root{--body-container-margin: calc(var(--default-grid-baseline) * 2);--body-container-radius: calc(var(--default-clickable-area) / 2 + var(--default-grid-baseline) * 2 - 2px);--body-height: calc(100% - env(safe-area-inset-bottom) - 50px - var(--body-container-margin))}@media screen and (max-width: 1024px){:root{--body-container-margin: 0px;--body-container-radius: 0px}}html{width:100%;height:100%;position:absolute;background-color:var(--color-background-plain, var(--color-main-background))}body{background-color:var(--color-background-plain, var(--color-main-background));background-image:var(--image-background, var(--image-background-default));background-size:cover;background-position:center;position:fixed;width:100%;height:calc(100vh - env(safe-area-inset-bottom))}h2{font-weight:bold;font-size:20px;margin-bottom:12px;line-height:30px;color:var(--color-text-light)}h3{font-size:16px;margin:12px 0;color:var(--color-text-light)}h4{font-size:14px}em{font-style:normal;color:var(--color-text-lighter)}dl{padding:12px 0}dt,dd{display:inline-block;padding:12px;padding-left:0}dt{width:130px;white-space:nowrap;text-align:right}kbd{padding:4px 10px;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,.2);border-radius:var(--border-radius);display:inline-block;white-space:nowrap}#content[class*=app-] *{box-sizing:border-box}#app-navigation:not(.vue){--border-radius-pill: calc(var(--default-clickable-area) / 2);width:300px;z-index:500;overflow-y:auto;overflow-x:hidden;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);-webkit-user-select:none;position:sticky;height:100%;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0}#app-navigation:not(.vue) .app-navigation-new{display:block;padding:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue) .app-navigation-new button{display:inline-block;width:100%;padding:10px;padding-left:34px;background-position:10px center;text-align:left;margin:0}#app-navigation:not(.vue) li{position:relative}#app-navigation:not(.vue)>ul{position:relative;height:100%;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;padding:calc(var(--default-grid-baseline)*2);padding-bottom:0}#app-navigation:not(.vue)>ul:last-child{padding-bottom:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue)>ul>li{display:inline-flex;flex-wrap:wrap;order:1;flex-shrink:0;margin:0;margin-bottom:3px;width:100%;border-radius:var(--border-radius-pill)}#app-navigation:not(.vue)>ul>li.pinned{order:2}#app-navigation:not(.vue)>ul>li.pinned.first-pinned{margin-top:auto !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-deleted{padding-left:44px !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-edit{padding-left:38px !important}#app-navigation:not(.vue)>ul>li a:hover,#app-navigation:not(.vue)>ul>li a:hover>a,#app-navigation:not(.vue)>ul>li a:focus,#app-navigation:not(.vue)>ul>li a:focus>a{background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li a:focus-visible{box-shadow:var(--color-primary-element) inset 0 0 0 2px;outline:none}#app-navigation:not(.vue)>ul>li.active,#app-navigation:not(.vue)>ul>li.active>a,#app-navigation:not(.vue)>ul>li a:active,#app-navigation:not(.vue)>ul>li a:active>a,#app-navigation:not(.vue)>ul>li a.selected,#app-navigation:not(.vue)>ul>li a.selected>a,#app-navigation:not(.vue)>ul>li a.active,#app-navigation:not(.vue)>ul>li a.active>a{background-color:var(--color-primary-element-light)}#app-navigation:not(.vue)>ul>li.icon-loading-small:after{left:22px;top:22px}#app-navigation:not(.vue)>ul>li.deleted>ul,#app-navigation:not(.vue)>ul>li.collapsible:not(.open)>ul{display:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption{font-weight:bold;line-height:44px;padding:0 44px;white-space:nowrap;text-overflow:ellipsis;box-shadow:none !important;user-select:none;pointer-events:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption:not(:first-child){margin-top:22px}#app-navigation:not(.vue)>ul>li>ul{flex:0 1 auto;width:100%;position:relative}#app-navigation:not(.vue)>ul>li>ul>li{display:inline-flex;flex-wrap:wrap;padding-left:44px;width:100%;margin-bottom:3px}#app-navigation:not(.vue)>ul>li>ul>li:hover,#app-navigation:not(.vue)>ul>li>ul>li:hover>a,#app-navigation:not(.vue)>ul>li>ul>li:focus,#app-navigation:not(.vue)>ul>li>ul>li:focus>a{border-radius:var(--border-radius-pill);background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li>ul>li.active,#app-navigation:not(.vue)>ul>li>ul>li.active>a,#app-navigation:not(.vue)>ul>li>ul>li a.selected,#app-navigation:not(.vue)>ul>li>ul>li a.selected>a{border-radius:var(--border-radius-pill);background-color:var(--color-primary-element-light)}#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small:after{left:22px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-deleted{margin-left:4px;padding-left:84px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-edit{margin-left:4px;padding-left:78px !important}#app-navigation:not(.vue)>ul>li,#app-navigation:not(.vue)>ul>li>ul>li{position:relative;box-sizing:border-box}#app-navigation:not(.vue)>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li.icon-loading-small>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>a,#app-navigation:not(.vue)>ul>li>ul>li>a{background-size:16px 16px;background-position:14px center;background-repeat:no-repeat;display:block;justify-content:space-between;line-height:44px;min-height:44px;padding:0 12px 0 14px;overflow:hidden;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;border-radius:var(--border-radius-pill);color:var(--color-main-text);flex:1 1 0px;z-index:100}#app-navigation:not(.vue)>ul>li>a.svg,#app-navigation:not(.vue)>ul>li>ul>li>a.svg{padding:0 12px 0 44px}#app-navigation:not(.vue)>ul>li>a.svg :focus-visible,#app-navigation:not(.vue)>ul>li>ul>li>a.svg :focus-visible{padding:0 8px 0 42px}#app-navigation:not(.vue)>ul>li>a:first-child img,#app-navigation:not(.vue)>ul>li>ul>li>a:first-child img{margin-right:11px;width:16px;height:16px;filter:var(--background-invert-if-dark)}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils{display:inline-block;float:right}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter{padding-right:0 !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet{position:absolute;display:block;margin:16px;width:12px;height:12px;border:none;border-radius:50%;cursor:pointer;transition:background 100ms ease-in-out}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet+a,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet+a{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-menu,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-menu{top:44px}#app-navigation:not(.vue)>ul>li.editing .app-navigation-entry-edit,#app-navigation:not(.vue)>ul>li>ul>li.editing .app-navigation-entry-edit{opacity:1;z-index:250}#app-navigation:not(.vue)>ul>li.deleted .app-navigation-entry-deleted,#app-navigation:not(.vue)>ul>li>ul>li.deleted .app-navigation-entry-deleted{transform:translateX(0);z-index:250}#app-navigation:not(.vue).hidden{display:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{border:0;opacity:.5;background-color:rgba(0,0,0,0);background-repeat:no-repeat;background-position:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:hover,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:focus,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .collapsible .collapse{opacity:0;position:absolute;width:44px;height:44px;margin:0;z-index:110;left:0}#app-navigation:not(.vue) .collapsible .collapse:focus-visible{opacity:1;border-width:0;box-shadow:inset 0 0 0 2px var(--color-primary-element);background:none}#app-navigation:not(.vue) .collapsible:before{position:absolute;height:44px;width:44px;margin:0;padding:0;background:none;background-image:var(--icon-triangle-s-dark);background-size:16px;background-repeat:no-repeat;background-position:center;border:none;border-radius:0;outline:none !important;box-shadow:none;content:" ";opacity:0;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);z-index:105;border-radius:50%;transition:opacity 100ms ease-in-out}#app-navigation:not(.vue) .collapsible>a:first-child{padding-left:44px}#app-navigation:not(.vue) .collapsible:hover:before,#app-navigation:not(.vue) .collapsible:focus:before{opacity:1}#app-navigation:not(.vue) .collapsible:hover>a,#app-navigation:not(.vue) .collapsible:focus>a{background-image:none}#app-navigation:not(.vue) .collapsible:hover>.app-navigation-entry-bullet,#app-navigation:not(.vue) .collapsible:focus>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue) .collapsible.open:before{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}#app-navigation:not(.vue) .app-navigation-entry-utils{flex:0 1 auto}#app-navigation:not(.vue) .app-navigation-entry-utils ul{display:flex !important;align-items:center;justify-content:flex-end}#app-navigation:not(.vue) .app-navigation-entry-utils li{width:44px !important;height:44px}#app-navigation:not(.vue) .app-navigation-entry-utils button{height:100%;width:100%;margin:0;box-shadow:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button button:not([class^=icon-]):not([class*=" icon-"]){background-image:var(--icon-more-dark)}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:hover button,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:focus button{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter{overflow:hidden;text-align:right;font-size:9pt;line-height:44px;padding:0 12px}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted{padding:0;text-align:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted span{padding:2px 5px;border-radius:10px;background-color:var(--color-primary-element);color:var(--color-primary-element-text)}#app-navigation:not(.vue) .app-navigation-entry-edit{padding-left:5px;padding-right:5px;display:block;width:calc(100% - 1px);transition:opacity 250ms ease-in-out;opacity:0;position:absolute;background-color:var(--color-main-background);z-index:-1}#app-navigation:not(.vue) .app-navigation-entry-edit form,#app-navigation:not(.vue) .app-navigation-entry-edit div{display:inline-flex;width:100%}#app-navigation:not(.vue) .app-navigation-entry-edit input{padding:5px;margin-right:0;height:38px}#app-navigation:not(.vue) .app-navigation-entry-edit input:hover,#app-navigation:not(.vue) .app-navigation-entry-edit input:focus{z-index:1}#app-navigation:not(.vue) .app-navigation-entry-edit input[type=text]{width:100%;min-width:0;border-bottom-right-radius:0;border-top-right-radius:0}#app-navigation:not(.vue) .app-navigation-entry-edit button,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]){width:36px;height:38px;flex:0 0 36px}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:last-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:last-child){border-radius:0 !important}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:first-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:first-child){margin-left:-1px}#app-navigation:not(.vue) .app-navigation-entry-edit button:last-child,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):last-child{border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-left-radius:0;border-top-left-radius:0}#app-navigation:not(.vue) .app-navigation-entry-deleted{display:inline-flex;padding-left:44px;transform:translateX(300px)}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-description{position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:1 1 0px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{margin:0;height:44px;width:44px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{opacity:1}#app-navigation:not(.vue) .app-navigation-entry-edit,#app-navigation:not(.vue) .app-navigation-entry-deleted{width:calc(100% - 1px);transition:transform 250ms ease-in-out,opacity 250ms ease-in-out,z-index 250ms ease-in-out;position:absolute;left:0;background-color:var(--color-main-background);box-sizing:border-box}#app-navigation:not(.vue) .drag-and-drop{-webkit-transition:padding-bottom 500ms ease 0s;transition:padding-bottom 500ms ease 0s;padding-bottom:40px}#app-navigation:not(.vue) .error{color:var(--color-error)}#app-navigation:not(.vue) .app-navigation-entry-utils ul,#app-navigation:not(.vue) .app-navigation-entry-menu ul{list-style-type:none}#content{box-sizing:border-box;position:static;margin:var(--body-container-margin);margin-top:50px;padding:0;display:flex;width:calc(100% - var(--body-container-margin)*2);height:var(--body-height);border-radius:var(--body-container-radius);overflow:clip}#content:not(.with-sidebar--full){position:fixed}@media only screen and (max-width: 1024px){#content{border-top-left-radius:var(--border-radius-large);border-top-right-radius:var(--border-radius-large)}#app-navigation{border-top-left-radius:var(--border-radius-large)}#app-sidebar{border-top-right-radius:var(--border-radius-large)}}#app-content{z-index:1000;background-color:var(--color-main-background);flex-basis:100vw;overflow:auto;position:initial;height:100%}#app-content>.section:first-child{border-top:none}#app-content #app-content-wrapper{display:flex;position:relative;align-items:stretch;min-height:100%}#app-content #app-content-wrapper .app-content-details{flex:1 1 524px}#app-content #app-content-wrapper .app-content-details #app-navigation-toggle-back{display:none}#app-content::-webkit-scrollbar-button{height:var(--body-container-radius)}#app-sidebar{width:27vw;min-width:300px;max-width:500px;display:block;position:-webkit-sticky;position:sticky;top:50px;right:0;overflow-y:auto;overflow-x:hidden;z-index:1500;opacity:.7px;height:calc(100vh - 50px);background:var(--color-main-background);border-left:1px solid var(--color-border);flex-shrink:0}#app-sidebar.disappear{display:none}#app-settings{margin-top:auto}#app-settings.open #app-settings-content,#app-settings.opened #app-settings-content{display:block}#app-settings-content{display:none;padding:calc(var(--default-grid-baseline)*2);padding-top:0;padding-left:calc(var(--default-grid-baseline)*4);max-height:300px;overflow-y:auto;box-sizing:border-box}#app-settings-content input[type=text]{width:93%}#app-settings-content .info-text{padding:5px 0 7px 22px;color:var(--color-text-lighter)}#app-settings-content input[type=checkbox].radio+label,#app-settings-content input[type=checkbox].checkbox+label,#app-settings-content input[type=radio].radio+label,#app-settings-content input[type=radio].checkbox+label{display:inline-block;width:100%;padding:5px 0}#app-settings-header{box-sizing:border-box;background-color:rgba(0,0,0,0);overflow:hidden;border-radius:calc(var(--default-clickable-area)/2);padding:calc(var(--default-grid-baseline)*2);padding-top:0}#app-settings-header .settings-button{display:flex;align-items:center;height:44px;width:100%;padding:0;margin:0;background-color:rgba(0,0,0,0);box-shadow:none;border:0;border-radius:calc(var(--default-clickable-area)/2);text-align:left;font-weight:normal;font-size:100%;opacity:.8;color:var(--color-main-text)}#app-settings-header .settings-button.opened{border-top:solid 1px var(--color-border);background-color:var(--color-main-background);margin-top:8px}#app-settings-header .settings-button:hover,#app-settings-header .settings-button:focus{background-color:var(--color-background-hover)}#app-settings-header .settings-button::before{background-image:var(--icon-settings-dark);background-position:14px center;background-repeat:no-repeat;content:"";width:44px;height:44px;top:0;left:0;display:block}#app-settings-header .settings-button:focus-visible{box-shadow:0 0 0 2px inset var(--color-primary-element) !important;background-position:12px center}.section{display:block;padding:30px;margin-bottom:24px}.section.hidden{display:none !important}.section input[type=checkbox],.section input[type=radio]{vertical-align:-2px;margin-right:4px}.sub-section{position:relative;margin-top:10px;margin-left:27px;margin-bottom:10px}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}.tabHeaders{display:flex;margin-bottom:16px}.tabHeaders .tabHeader{display:flex;flex-direction:column;flex-grow:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;color:var(--color-text-lighter);margin-bottom:1px;padding:5px}.tabHeaders .tabHeader.hidden{display:none}.tabHeaders .tabHeader:first-child{padding-left:15px}.tabHeaders .tabHeader:last-child{padding-right:15px}.tabHeaders .tabHeader .icon{display:inline-block;width:100%;height:16px;background-size:16px;vertical-align:middle;margin-top:-2px;margin-right:3px;opacity:.7;cursor:pointer}.tabHeaders .tabHeader a{color:var(--color-text-lighter);margin-bottom:1px;overflow:hidden;text-overflow:ellipsis}.tabHeaders .tabHeader.selected{font-weight:bold}.tabHeaders .tabHeader.selected,.tabHeaders .tabHeader:hover,.tabHeaders .tabHeader:focus{margin-bottom:0px;color:var(--color-main-text);border-bottom:1px solid var(--color-text-lighter)}.tabsContainer{clear:left}.tabsContainer .tab{padding:0 15px 15px}.contact .popovermenu ul>li>a>img,.popover__menu>li>a>img{filter:var(--background-invert-if-dark)}.contact .popovermenu ul>li>a>img[src^=data],.popover__menu>li>a>img[src^=data]{filter:none}.bubble,.app-navigation-entry-menu,.popovermenu{position:absolute;background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-large);padding:3px;z-index:110;margin:5px;margin-top:-5px;right:0;filter:drop-shadow(0 1px 3px var(--color-box-shadow));display:none;will-change:filter}.bubble:after,.app-navigation-entry-menu:after,.popovermenu:after{bottom:100%;right:7px;border:solid rgba(0,0,0,0);content:" ";height:0;width:0;position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);border-width:9px}.bubble.menu-center,.app-navigation-entry-menu.menu-center,.popovermenu.menu-center{transform:translateX(50%);right:50%;margin-right:0}.bubble.menu-center:after,.app-navigation-entry-menu.menu-center:after,.popovermenu.menu-center:after{right:50%;transform:translateX(50%)}.bubble.menu-left,.app-navigation-entry-menu.menu-left,.popovermenu.menu-left{right:auto;left:0;margin-right:0}.bubble.menu-left:after,.app-navigation-entry-menu.menu-left:after,.popovermenu.menu-left:after{left:6px;right:auto}.bubble.open,.app-navigation-entry-menu.open,.popovermenu.open{display:block}.bubble.contactsmenu-popover,.app-navigation-entry-menu.contactsmenu-popover,.popovermenu.contactsmenu-popover{margin:0}.bubble ul,.app-navigation-entry-menu ul,.popovermenu ul{display:flex !important;flex-direction:column}.bubble li,.app-navigation-entry-menu li,.popovermenu li{display:flex;flex:0 0 auto}.bubble li.hidden,.app-navigation-entry-menu li.hidden,.popovermenu li.hidden{display:none}.bubble li>button,.bubble li>a,.bubble li>.menuitem,.app-navigation-entry-menu li>button,.app-navigation-entry-menu li>a,.app-navigation-entry-menu li>.menuitem,.popovermenu li>button,.popovermenu li>a,.popovermenu li>.menuitem{cursor:pointer;line-height:44px;border:0;border-radius:var(--border-radius-large);background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{min-width:0;min-height:0;background-position:14px center;background-size:16px}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"]{padding:22px 0 22px 44px}.bubble li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{padding:0 14px 0 44px !important}.bubble li>button:hover,.bubble li>button:focus,.bubble li>a:hover,.bubble li>a:focus,.bubble li>.menuitem:hover,.bubble li>.menuitem:focus,.app-navigation-entry-menu li>button:hover,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>a:hover,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>.menuitem:hover,.app-navigation-entry-menu li>.menuitem:focus,.popovermenu li>button:hover,.popovermenu li>button:focus,.popovermenu li>a:hover,.popovermenu li>a:focus,.popovermenu li>.menuitem:hover,.popovermenu li>.menuitem:focus{background-color:var(--color-background-hover)}.bubble li>button:focus,.bubble li>button:focus-visible,.bubble li>a:focus,.bubble li>a:focus-visible,.bubble li>.menuitem:focus,.bubble li>.menuitem:focus-visible,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>button:focus-visible,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>a:focus-visible,.app-navigation-entry-menu li>.menuitem:focus,.app-navigation-entry-menu li>.menuitem:focus-visible,.popovermenu li>button:focus,.popovermenu li>button:focus-visible,.popovermenu li>a:focus,.popovermenu li>a:focus-visible,.popovermenu li>.menuitem:focus,.popovermenu li>.menuitem:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element)}.bubble li>button.active,.bubble li>a.active,.bubble li>.menuitem.active,.app-navigation-entry-menu li>button.active,.app-navigation-entry-menu li>a.active,.app-navigation-entry-menu li>.menuitem.active,.popovermenu li>button.active,.popovermenu li>a.active,.popovermenu li>.menuitem.active{border-radius:var(--border-radius-pill);background-color:var(--color-primary-element-light)}.bubble li>button.action,.bubble li>a.action,.bubble li>.menuitem.action,.app-navigation-entry-menu li>button.action,.app-navigation-entry-menu li>a.action,.app-navigation-entry-menu li>.menuitem.action,.popovermenu li>button.action,.popovermenu li>a.action,.popovermenu li>.menuitem.action{padding:inherit !important}.bubble li>button>span,.bubble li>a>span,.bubble li>.menuitem>span,.app-navigation-entry-menu li>button>span,.app-navigation-entry-menu li>a>span,.app-navigation-entry-menu li>.menuitem>span,.popovermenu li>button>span,.popovermenu li>a>span,.popovermenu li>.menuitem>span{cursor:pointer;white-space:nowrap}.bubble li>button>p,.bubble li>a>p,.bubble li>.menuitem>p,.app-navigation-entry-menu li>button>p,.app-navigation-entry-menu li>a>p,.app-navigation-entry-menu li>.menuitem>p,.popovermenu li>button>p,.popovermenu li>a>p,.popovermenu li>.menuitem>p{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}.bubble li>button>select,.bubble li>a>select,.bubble li>.menuitem>select,.app-navigation-entry-menu li>button>select,.app-navigation-entry-menu li>a>select,.app-navigation-entry-menu li>.menuitem>select,.popovermenu li>button>select,.popovermenu li>a>select,.popovermenu li>.menuitem>select{margin:0;margin-left:6px}.bubble li>button:not(:empty),.bubble li>a:not(:empty),.bubble li>.menuitem:not(:empty),.app-navigation-entry-menu li>button:not(:empty),.app-navigation-entry-menu li>a:not(:empty),.app-navigation-entry-menu li>.menuitem:not(:empty),.popovermenu li>button:not(:empty),.popovermenu li>a:not(:empty),.popovermenu li>.menuitem:not(:empty){padding-right:14px !important}.bubble li>button>img,.bubble li>a>img,.bubble li>.menuitem>img,.app-navigation-entry-menu li>button>img,.app-navigation-entry-menu li>a>img,.app-navigation-entry-menu li>.menuitem>img,.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:16px;padding:14px}.bubble li>button>input.radio+label,.bubble li>button>input.checkbox+label,.bubble li>a>input.radio+label,.bubble li>a>input.checkbox+label,.bubble li>.menuitem>input.radio+label,.bubble li>.menuitem>input.checkbox+label,.app-navigation-entry-menu li>button>input.radio+label,.app-navigation-entry-menu li>button>input.checkbox+label,.app-navigation-entry-menu li>a>input.radio+label,.app-navigation-entry-menu li>a>input.checkbox+label,.app-navigation-entry-menu li>.menuitem>input.radio+label,.app-navigation-entry-menu li>.menuitem>input.checkbox+label,.popovermenu li>button>input.radio+label,.popovermenu li>button>input.checkbox+label,.popovermenu li>a>input.radio+label,.popovermenu li>a>input.checkbox+label,.popovermenu li>.menuitem>input.radio+label,.popovermenu li>.menuitem>input.checkbox+label{padding:0 !important;width:100%}.bubble li>button>input.checkbox+label::before,.bubble li>a>input.checkbox+label::before,.bubble li>.menuitem>input.checkbox+label::before,.app-navigation-entry-menu li>button>input.checkbox+label::before,.app-navigation-entry-menu li>a>input.checkbox+label::before,.app-navigation-entry-menu li>.menuitem>input.checkbox+label::before,.popovermenu li>button>input.checkbox+label::before,.popovermenu li>a>input.checkbox+label::before,.popovermenu li>.menuitem>input.checkbox+label::before{margin:-2px 13px 0}.bubble li>button>input.radio+label::before,.bubble li>a>input.radio+label::before,.bubble li>.menuitem>input.radio+label::before,.app-navigation-entry-menu li>button>input.radio+label::before,.app-navigation-entry-menu li>a>input.radio+label::before,.app-navigation-entry-menu li>.menuitem>input.radio+label::before,.popovermenu li>button>input.radio+label::before,.popovermenu li>a>input.radio+label::before,.popovermenu li>.menuitem>input.radio+label::before{margin:-2px 12px 0}.bubble li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}.bubble li>button form,.bubble li>a form,.bubble li>.menuitem form,.app-navigation-entry-menu li>button form,.app-navigation-entry-menu li>a form,.app-navigation-entry-menu li>.menuitem form,.popovermenu li>button form,.popovermenu li>a form,.popovermenu li>.menuitem form{display:flex;flex:1 1 auto;align-items:center}.bubble li>button form:not(:first-child),.bubble li>a form:not(:first-child),.bubble li>.menuitem form:not(:first-child),.app-navigation-entry-menu li>button form:not(:first-child),.app-navigation-entry-menu li>a form:not(:first-child),.app-navigation-entry-menu li>.menuitem form:not(:first-child),.popovermenu li>button form:not(:first-child),.popovermenu li>a form:not(:first-child),.popovermenu li>.menuitem form:not(:first-child){margin-left:5px}.bubble li>button>span.hidden+form,.bubble li>button>span[style*="display:none"]+form,.bubble li>a>span.hidden+form,.bubble li>a>span[style*="display:none"]+form,.bubble li>.menuitem>span.hidden+form,.bubble li>.menuitem>span[style*="display:none"]+form,.app-navigation-entry-menu li>button>span.hidden+form,.app-navigation-entry-menu li>button>span[style*="display:none"]+form,.app-navigation-entry-menu li>a>span.hidden+form,.app-navigation-entry-menu li>a>span[style*="display:none"]+form,.app-navigation-entry-menu li>.menuitem>span.hidden+form,.app-navigation-entry-menu li>.menuitem>span[style*="display:none"]+form,.popovermenu li>button>span.hidden+form,.popovermenu li>button>span[style*="display:none"]+form,.popovermenu li>a>span.hidden+form,.popovermenu li>a>span[style*="display:none"]+form,.popovermenu li>.menuitem>span.hidden+form,.popovermenu li>.menuitem>span[style*="display:none"]+form{margin-left:0}.bubble li>button input,.bubble li>a input,.bubble li>.menuitem input,.app-navigation-entry-menu li>button input,.app-navigation-entry-menu li>a input,.app-navigation-entry-menu li>.menuitem input,.popovermenu li>button input,.popovermenu li>a input,.popovermenu li>.menuitem input{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}.bubble li>button input:not(:first-child),.bubble li>a input:not(:first-child),.bubble li>.menuitem input:not(:first-child),.app-navigation-entry-menu li>button input:not(:first-child),.app-navigation-entry-menu li>a input:not(:first-child),.app-navigation-entry-menu li>.menuitem input:not(:first-child),.popovermenu li>button input:not(:first-child),.popovermenu li>a input:not(:first-child),.popovermenu li>.menuitem input:not(:first-child){margin-left:5px}.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input{margin-top:12px}.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input{margin-bottom:0px}.bubble li>button,.app-navigation-entry-menu li>button,.popovermenu li>button{padding:0}.bubble li>button span,.app-navigation-entry-menu li>button span,.popovermenu li>button span{opacity:1}.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:44px;height:44px}#contactsmenu .contact .popovermenu li>a>img{width:16px;height:16px}.app-content-list{position:-webkit-sticky;position:relative;top:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:transform 250ms ease-in-out;min-height:100%;max-height:100%;overflow-y:auto;overflow-x:hidden;flex:1 1 200px;min-width:200px;max-width:300px}.app-content-list .app-content-list-item{position:relative;height:68px;cursor:pointer;padding:10px 7px;display:flex;flex-wrap:wrap;align-items:center;flex:0 0 auto}.app-content-list .app-content-list-item>[class^=icon-],.app-content-list .app-content-list-item>[class*=" icon-"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]{order:4;width:24px;height:24px;margin:-7px;padding:22px;opacity:.3;cursor:pointer}.app-content-list .app-content-list-item>[class^=icon-]:hover,.app-content-list .app-content-list-item>[class^=icon-]:focus,.app-content-list .app-content-list-item>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:focus{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:focus{opacity:1}.app-content-list .app-content-list-item>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>[class*=" icon-"].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"].icon-starred{opacity:1}.app-content-list .app-content-list-item:hover,.app-content-list .app-content-list-item:focus,.app-content-list .app-content-list-item.active{background-color:var(--color-background-dark)}.app-content-list .app-content-list-item:hover .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item:focus .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item.active .app-content-list-item-checkbox.checkbox+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item .app-content-list-item-star{position:absolute;height:40px;width:40px;z-index:50}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label+.app-content-list-item-icon{opacity:.7}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label{top:14px;left:7px;display:none}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label::before{margin:0}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label~.app-content-list-item-star{display:none}.app-content-list .app-content-list-item .app-content-list-item-star{display:flex;top:10px;left:32px;background-size:16px;height:20px;width:20px;margin:0;padding:0}.app-content-list .app-content-list-item .app-content-list-item-icon{position:absolute;display:inline-block;height:40px;width:40px;line-height:40px;border-radius:50%;vertical-align:middle;margin-right:10px;color:#fff;text-align:center;font-size:1.5em;text-transform:capitalize;object-fit:cover;user-select:none;cursor:pointer;top:50%;margin-top:-20px}.app-content-list .app-content-list-item .app-content-list-item-line-one,.app-content-list .app-content-list-item .app-content-list-item-line-two{display:block;padding-left:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;order:1;flex:1 1 0px;padding-right:10px;cursor:pointer}.app-content-list .app-content-list-item .app-content-list-item-line-two{opacity:.5;order:3;flex:1 0;flex-basis:calc(100% - 44px)}.app-content-list .app-content-list-item .app-content-list-item-details{order:2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px;opacity:.5;font-size:80%;user-select:none}.app-content-list .app-content-list-item .app-content-list-item-menu{order:4;position:relative}.app-content-list .app-content-list-item .app-content-list-item-menu .popovermenu{margin:0;right:-2px}.app-content-list.selection .app-content-list-item-checkbox.checkbox+label{display:flex}/*# sourceMappingURL=apps.css.map */ diff --git a/core/css/apps.css.map b/core/css/apps.css.map index 508ec4d42a1..6335395a664 100644 --- a/core/css/apps.css.map +++ b/core/css/apps.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["apps.scss","variables.scss","functions.scss"],"names":[],"mappings":"AAsBA,MACC,gEAEA,0GACA,8FAGD,sCACC,MACC,6BACA,8BAKF,KACC,WACA,YACA,kBAEA,6EAGD,KAEC,6EAEA,0EACA,sBACA,2BACA,eACA,WACA,iDAKD,GACC,iBACA,eACA,mBACA,iBACA,8BAGD,GACC,eACA,cACA,8BAGD,GACC,eAID,GACC,kBACA,gCAGD,GACC,eAGD,MAEC,qBACA,aACA,eAGD,GACC,YACA,mBACA,iBAGD,IACC,iBACA,sBACA,kCACA,mCACA,qBACA,mBAMD,wBACC,sBAKD,0BAEC,8DAEA,MCfkB,MDgBlB,YACA,gBACA,kBACA,mDACA,8CACA,+EACA,gBACA,YACA,sBACA,qBACA,iBACA,aACA,sBACA,YACA,cAGA,8CACC,cACA,6CACA,qDACC,qBACA,WACA,aACA,kBACA,gCACA,gBACA,SAIF,6BACC,kBAED,6BACC,kBACA,YACA,WACA,kBACA,gBACA,sBACA,aACA,sBACA,6CACA,iBAEA,wCACC,oDAGD,gCACC,oBACA,eACA,QACA,cACA,SACA,kBACA,WACA,wCAGA,uCACC,QACA,oDACC,2BAIF,8DAEC,6BAED,2DAIC,6BAKA,oKAEC,+CAGF,gDACC,gDACA,aAMA,gVAEC,4CAKF,yDACC,UACA,SAMA,qGAEC,aAIF,uDACC,iBACA,iBACA,eACA,mBACA,uBACA,2BACA,iBACA,oBAEA,yEACC,gBAKF,mCACC,cACA,WACA,kBACA,sCACC,oBACA,eACA,kBACA,WACA,kBAIC,oLAEC,wCACA,+CAKD,gMAEC,wCACA,4CAKF,+DACC,UAGD,oEAEC,gBACA,kBAGD,iEAEC,gBAGA,6BAMJ,sEAEC,kBACA,sBAGC,sRAGC,oCAIF,0EACC,0BACA,gCACA,4BACA,cACA,8BACA,iBACA,gBACA,sBACA,gBACA,sBACA,mBACA,uBACA,wCACA,6BACA,aACA,YAGA,kFACC,sBACA,gHACC,qBAGF,0GACC,kBACA,WACA,YAEA,wCAID,kIACC,qBACA,YACA,0MACC,2BAKH,gIACC,kBACA,cACA,YACA,WACA,YACA,YACA,kBACA,eACA,wCAEA,oIAEC,oCAKF,4HACC,SAID,4IACC,UACA,YAED,kJACC,wBACA,YAIH,iCACC,aAMD,kMAEC,SACA,WACA,+BACA,4BACA,2BACA,4ZAEC,+BACA,UAUD,iDACC,UACA,kBACA,WACA,YACA,SACA,YAIA,OAEA,+DACC,UACA,eACA,gDACA,gBAGF,8CACC,kBACA,YACA,WACA,SACA,UACA,gBE5XF,6CF8XE,qBACA,4BACA,2BACA,YACA,gBACA,wBACA,gBACA,YACA,UACA,iCACA,6BACA,yBACA,YACA,kBACA,qCAMD,qDACC,kBAIA,wGACC,UAED,8FACC,sBAED,oJACC,oCAID,mDACC,4BACA,wBACA,oBAQH,sDACC,cACA,yDACC,wBACA,mBACA,yBAED,yDACC,sBACA,YAED,6DACC,YACA,WACA,SACA,gBAIA,gJEhcF,uCFmcE,sNAEC,+BACA,UAGF,0FACC,gBACA,iBACA,cACA,iBACA,eAEA,sGACC,UACA,kBACA,2GACC,gBACA,mBACA,sCACA,gCASJ,qDACC,iBACA,kBACA,cACA,uBACA,qCACA,UACA,kBACA,8CACA,WACA,mHAEC,oBACA,WAED,2DACC,YACA,eACA,YACA,kIAGC,UAGF,sEACC,WACA,YACA,6BACA,0BAED,wIAEC,WACA,YACA,cACA,0KACC,2BAED,4KACC,iBAED,8JACC,gDACA,6CACA,4BACA,yBAQH,wDACC,oBACA,kBACA,4BACA,kGACC,kBACA,mBACA,uBACA,gBACA,aACA,iBAED,6FACC,SACA,YACA,WACA,iBACA,sMAEC,UAQH,6GAEC,uBACA,2FAGA,kBACA,OACA,8CACA,sBAMD,yCACC,gDACA,wCACA,oBAGD,iCACC,yBAGD,iHAEC,qBAMF,SACC,sBACA,gBACA,oCACA,gBACA,UACA,aACA,kDACA,0BACA,2CACA,cAEA,kCACC,eAIF,2CACC,SACC,kDACA,mDAED,gBACC,kDAED,aACC,oDAcF,aACC,aACA,8CACA,iBACA,cACA,iBACA,YAGA,kCACC,gBAID,kCACC,aACA,kBACA,oBAGA,gBAGA,uDAEC,eACA,mFACC,aAKH,uCACC,oCASF,aACC,WACA,UC3nBmB,MD4nBnB,UC3nBmB,MD4nBnB,cACA,wBACA,gBACA,ICloBe,KDmoBf,QACA,gBACA,kBACA,aACA,aACA,0BACA,wCACA,0CACA,cAEA,uBACC,aAOF,cAEC,gBAGC,oFACC,cAKH,sBACC,aACA,6CACA,cACA,kDAEA,iBACA,gBACA,sBAGA,uCACC,UAGD,iCACC,uBACA,gCAOE,4NACC,qBACA,WACA,cAOL,qBACC,sBACA,+BACA,gBACA,oDACA,6CACA,cAEA,sCACC,aACA,mBACA,YACA,WACA,UACA,SACA,+BACA,gBACA,SACA,oDACA,gBACA,mBACA,eACA,WAGA,6BAEA,6CACC,yCACA,8CACA,eAED,wFAEC,+CAGD,8CACC,2CACA,gCACA,4BACA,WACA,WACA,YACA,MACA,OACA,cAGD,oDACC,2DACA,gCAMH,SACC,cACA,aACA,mBACA,gBACC,wBAIA,yDAEC,oBACA,iBAIH,aACC,kBACA,gBACA,iBACA,mBAGD,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAKF,YACC,aACA,mBAEA,uBACC,aACA,sBACA,YACA,kBACA,mBACA,gBACA,uBACA,eACA,gCACA,kBACA,YAEA,8BACC,aAID,mCACC,kBAED,kCACC,mBAGD,6BACC,qBACA,WACA,YACA,qBACA,sBACA,gBACA,iBACA,WACA,eAGD,yBACC,gCACA,kBACA,gBACA,uBAED,gCACC,iBAED,0FAGC,kBACA,6BACA,kDAIH,eACC,WACA,oBACC,oBAWD,0DACC,wCAIA,gFACC,YAKH,gDAGC,kBACA,8CACA,6BACA,yCACA,YACA,YACA,WACA,gBACA,QACA,sDACA,aACA,mBAEA,kEACC,YAKA,UAEA,2BACA,YACA,SACA,QACA,kBACA,oBACA,iDACA,iBAGD,oFACC,0BACA,UACA,eACA,sGACC,UACA,0BAIF,8EACC,WACA,OACA,eACA,gGACC,SACA,WAIF,+DACC,cAGD,+GACC,SAGD,yDAEC,wBACA,sBAED,yDACC,aACA,cAEA,8EACC,aAGD,oOAGC,eACA,YAhGkB,KAiGlB,SACA,yCACA,+BACA,aACA,uBACA,YACA,SACA,mBACA,gBACA,WACA,6BACA,mBAEA,whDAIC,YACA,aACA,gCACA,gBApHe,KAsHhB,yzBAIC,yBAOC,gvGACC,YAnIe,KAuIlB,+tBAEC,iCAED,ojBAEC,+CAED,4nBAEC,kDAED,mSACC,wCACA,4CAGD,mSACC,2BAED,iRACC,eACA,mBAED,sPACC,YACA,kBACA,cACA,mBAED,mSACC,SACA,gBAGD,gVACC,8BAID,wQACC,MA/Ke,KAgLf,aAGD,uyBAEC,qBACA,WAED,yeACC,mBAED,8cACC,mBAED,2xBACC,YAED,iRACC,aACA,cAGA,mBACA,mbACC,gBAIF,04BAEC,cAGD,0RACC,UAnNiB,KAoNjB,gBACA,aACA,cAEA,4bACC,gBAQA,2hDACC,gBAMD,ygDACC,kBAKJ,8EACC,UACA,6FACC,UAcD,+EACC,MAhQiB,KAiQjB,OAjQiB,KA0QlB,6CACC,WACA,YAOJ,kBACC,wBACA,kBACA,MACA,2CACA,aACA,sBACA,uCACA,gBACA,gBACA,gBACA,kBACA,eACA,UC9nCgB,MD+nChB,UC9nCgB,MDioChB,yCACC,kBACA,YACA,eACA,iBACA,aACA,eACA,mBACA,cAKC,8RAEC,QACA,WACA,YACA,YACA,aACA,WACA,eACA,4mBAEC,WAED,wtBAEC,WACA,ghDAEC,UAIF,kVACC,UAKH,8IAGC,8CAEA,2RACC,aAIF,6JAEC,kBACA,YACA,WACA,WAQC,2XAEC,aAEA,2eACC,WAIH,wFACC,SACA,SAEA,aACA,gGACC,SAGD,oHACC,aAKH,qEACC,aACA,SACA,UACA,qBACA,YACA,WACA,SACA,UAGD,qEACC,kBACA,qBACA,YACA,WACA,iBACA,kBACA,sBACA,kBACA,WACA,kBACA,gBACA,0BACA,iBACA,iBACA,eACA,QACA,iBAGD,kJAEC,cACA,kBACA,mBACA,gBACA,uBACA,QACA,aACA,mBACA,eAGD,yEACC,WACA,QACA,SACA,6BAGD,wEACC,QACA,mBACA,gBACA,uBACA,gBACA,WACA,cACA,iBAGD,qEACC,QACA,kBACA,kFACC,SAGA,WAIH,2EACC","file":"apps.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["apps.scss","variables.scss","functions.scss"],"names":[],"mappings":"AAsBA,MACC,gEAEA,0GACA,8FAGD,sCACC,MACC,6BACA,8BAKF,KACC,WACA,YACA,kBAEA,6EAGD,KAEC,6EAEA,0EACA,sBACA,2BACA,eACA,WACA,iDAKD,GACC,iBACA,eACA,mBACA,iBACA,8BAGD,GACC,eACA,cACA,8BAGD,GACC,eAID,GACC,kBACA,gCAGD,GACC,eAGD,MAEC,qBACA,aACA,eAGD,GACC,YACA,mBACA,iBAGD,IACC,iBACA,sBACA,kCACA,mCACA,qBACA,mBAMD,wBACC,sBAKD,0BAEC,8DAEA,MCfkB,MDgBlB,YACA,gBACA,kBACA,mDACA,8CACA,+EACA,gBACA,YACA,sBACA,qBACA,iBACA,aACA,sBACA,YACA,cAGA,8CACC,cACA,6CACA,qDACC,qBACA,WACA,aACA,kBACA,gCACA,gBACA,SAIF,6BACC,kBAED,6BACC,kBACA,YACA,WACA,kBACA,gBACA,sBACA,aACA,sBACA,6CACA,iBAEA,wCACC,oDAGD,gCACC,oBACA,eACA,QACA,cACA,SACA,kBACA,WACA,wCAGA,uCACC,QACA,oDACC,2BAIF,8DAEC,6BAED,2DAIC,6BAKA,oKAEC,+CAGF,gDACC,wDACA,aAMA,gVAEC,oDAKF,yDACC,UACA,SAMA,qGAEC,aAIF,uDACC,iBACA,iBACA,eACA,mBACA,uBACA,2BACA,iBACA,oBAEA,yEACC,gBAKF,mCACC,cACA,WACA,kBACA,sCACC,oBACA,eACA,kBACA,WACA,kBAIC,oLAEC,wCACA,+CAKD,gMAEC,wCACA,oDAKF,+DACC,UAGD,oEAEC,gBACA,kBAGD,iEAEC,gBAGA,6BAMJ,sEAEC,kBACA,sBAGC,sRAGC,oCAIF,0EACC,0BACA,gCACA,4BACA,cACA,8BACA,iBACA,gBACA,sBACA,gBACA,sBACA,mBACA,uBACA,wCACA,6BACA,aACA,YAGA,kFACC,sBACA,gHACC,qBAGF,0GACC,kBACA,WACA,YAEA,wCAID,kIACC,qBACA,YACA,0MACC,2BAKH,gIACC,kBACA,cACA,YACA,WACA,YACA,YACA,kBACA,eACA,wCAEA,oIAEC,oCAKF,4HACC,SAID,4IACC,UACA,YAED,kJACC,wBACA,YAIH,iCACC,aAMD,kMAEC,SACA,WACA,+BACA,4BACA,2BACA,4ZAEC,+BACA,UAUD,iDACC,UACA,kBACA,WACA,YACA,SACA,YAIA,OAEA,+DACC,UACA,eACA,wDACA,gBAGF,8CACC,kBACA,YACA,WACA,SACA,UACA,gBE5XF,6CF8XE,qBACA,4BACA,2BACA,YACA,gBACA,wBACA,gBACA,YACA,UACA,iCACA,6BACA,yBACA,YACA,kBACA,qCAMD,qDACC,kBAIA,wGACC,UAED,8FACC,sBAED,oJACC,oCAID,mDACC,4BACA,wBACA,oBAQH,sDACC,cACA,yDACC,wBACA,mBACA,yBAED,yDACC,sBACA,YAED,6DACC,YACA,WACA,SACA,gBAIA,gJEhcF,uCFmcE,sNAEC,+BACA,UAGF,0FACC,gBACA,iBACA,cACA,iBACA,eAEA,sGACC,UACA,kBACA,2GACC,gBACA,mBACA,8CACA,wCASJ,qDACC,iBACA,kBACA,cACA,uBACA,qCACA,UACA,kBACA,8CACA,WACA,mHAEC,oBACA,WAED,2DACC,YACA,eACA,YACA,kIAGC,UAGF,sEACC,WACA,YACA,6BACA,0BAED,wIAEC,WACA,YACA,cACA,0KACC,2BAED,4KACC,iBAED,8JACC,gDACA,6CACA,4BACA,yBAQH,wDACC,oBACA,kBACA,4BACA,kGACC,kBACA,mBACA,uBACA,gBACA,aACA,iBAED,6FACC,SACA,YACA,WACA,iBACA,sMAEC,UAQH,6GAEC,uBACA,2FAGA,kBACA,OACA,8CACA,sBAMD,yCACC,gDACA,wCACA,oBAGD,iCACC,yBAGD,iHAEC,qBAMF,SACC,sBACA,gBACA,oCACA,gBACA,UACA,aACA,kDACA,0BACA,2CACA,cAEA,kCACC,eAIF,2CACC,SACC,kDACA,mDAED,gBACC,kDAED,aACC,oDAcF,aACC,aACA,8CACA,iBACA,cACA,iBACA,YAGA,kCACC,gBAID,kCACC,aACA,kBACA,oBAGA,gBAGA,uDAEC,eACA,mFACC,aAKH,uCACC,oCASF,aACC,WACA,UC3nBmB,MD4nBnB,UC3nBmB,MD4nBnB,cACA,wBACA,gBACA,ICloBe,KDmoBf,QACA,gBACA,kBACA,aACA,aACA,0BACA,wCACA,0CACA,cAEA,uBACC,aAOF,cAEC,gBAGC,oFACC,cAKH,sBACC,aACA,6CACA,cACA,kDAEA,iBACA,gBACA,sBAGA,uCACC,UAGD,iCACC,uBACA,gCAOE,4NACC,qBACA,WACA,cAOL,qBACC,sBACA,+BACA,gBACA,oDACA,6CACA,cAEA,sCACC,aACA,mBACA,YACA,WACA,UACA,SACA,+BACA,gBACA,SACA,oDACA,gBACA,mBACA,eACA,WAGA,6BAEA,6CACC,yCACA,8CACA,eAED,wFAEC,+CAGD,8CACC,2CACA,gCACA,4BACA,WACA,WACA,YACA,MACA,OACA,cAGD,oDACC,mEACA,gCAMH,SACC,cACA,aACA,mBACA,gBACC,wBAIA,yDAEC,oBACA,iBAIH,aACC,kBACA,gBACA,iBACA,mBAGD,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAKF,YACC,aACA,mBAEA,uBACC,aACA,sBACA,YACA,kBACA,mBACA,gBACA,uBACA,eACA,gCACA,kBACA,YAEA,8BACC,aAID,mCACC,kBAED,kCACC,mBAGD,6BACC,qBACA,WACA,YACA,qBACA,sBACA,gBACA,iBACA,WACA,eAGD,yBACC,gCACA,kBACA,gBACA,uBAED,gCACC,iBAED,0FAGC,kBACA,6BACA,kDAIH,eACC,WACA,oBACC,oBAWD,0DACC,wCAIA,gFACC,YAKH,gDAGC,kBACA,8CACA,6BACA,yCACA,YACA,YACA,WACA,gBACA,QACA,sDACA,aACA,mBAEA,kEACC,YAKA,UAEA,2BACA,YACA,SACA,QACA,kBACA,oBACA,iDACA,iBAGD,oFACC,0BACA,UACA,eACA,sGACC,UACA,0BAIF,8EACC,WACA,OACA,eACA,gGACC,SACA,WAIF,+DACC,cAGD,+GACC,SAGD,yDAEC,wBACA,sBAED,yDACC,aACA,cAEA,8EACC,aAGD,oOAGC,eACA,YAhGkB,KAiGlB,SACA,yCACA,+BACA,aACA,uBACA,YACA,SACA,mBACA,gBACA,WACA,6BACA,mBAEA,whDAIC,YACA,aACA,gCACA,gBApHe,KAsHhB,yzBAIC,yBAOC,gvGACC,YAnIe,KAuIlB,+tBAEC,iCAED,ojBAEC,+CAED,4nBAEC,kDAED,mSACC,wCACA,oDAGD,mSACC,2BAED,iRACC,eACA,mBAED,sPACC,YACA,kBACA,cACA,mBAED,mSACC,SACA,gBAGD,gVACC,8BAID,wQACC,MA/Ke,KAgLf,aAGD,uyBAEC,qBACA,WAED,yeACC,mBAED,8cACC,mBAED,2xBACC,YAED,iRACC,aACA,cAGA,mBACA,mbACC,gBAIF,04BAEC,cAGD,0RACC,UAnNiB,KAoNjB,gBACA,aACA,cAEA,4bACC,gBAQA,2hDACC,gBAMD,ygDACC,kBAKJ,8EACC,UACA,6FACC,UAcD,+EACC,MAhQiB,KAiQjB,OAjQiB,KA0QlB,6CACC,WACA,YAOJ,kBACC,wBACA,kBACA,MACA,2CACA,aACA,sBACA,uCACA,gBACA,gBACA,gBACA,kBACA,eACA,UC9nCgB,MD+nChB,UC9nCgB,MDioChB,yCACC,kBACA,YACA,eACA,iBACA,aACA,eACA,mBACA,cAKC,8RAEC,QACA,WACA,YACA,YACA,aACA,WACA,eACA,4mBAEC,WAED,wtBAEC,WACA,ghDAEC,UAIF,kVACC,UAKH,8IAGC,8CAEA,2RACC,aAIF,6JAEC,kBACA,YACA,WACA,WAQC,2XAEC,aAEA,2eACC,WAIH,wFACC,SACA,SAEA,aACA,gGACC,SAGD,oHACC,aAKH,qEACC,aACA,SACA,UACA,qBACA,YACA,WACA,SACA,UAGD,qEACC,kBACA,qBACA,YACA,WACA,iBACA,kBACA,sBACA,kBACA,WACA,kBACA,gBACA,0BACA,iBACA,iBACA,eACA,QACA,iBAGD,kJAEC,cACA,kBACA,mBACA,gBACA,uBACA,QACA,aACA,mBACA,eAGD,yEACC,WACA,QACA,SACA,6BAGD,wEACC,QACA,mBACA,gBACA,uBACA,gBACA,WACA,cACA,iBAGD,qEACC,QACA,kBACA,kFACC,SAGA,WAIH,2EACC","file":"apps.css"}
\ No newline at end of file diff --git a/core/css/apps.scss b/core/css/apps.scss index 10572614bea..3716a9d3154 100644 --- a/core/css/apps.scss +++ b/core/css/apps.scss @@ -208,7 +208,7 @@ kbd { } } a:focus-visible { - box-shadow: var(--color-primary) inset 0 0 0 2px; + box-shadow: var(--color-primary-element) inset 0 0 0 2px; outline: none; } &.active, @@ -217,7 +217,7 @@ kbd { a.active { &, > a { - background-color: var(--color-primary-light); + background-color: var(--color-primary-element-light); } } @@ -276,7 +276,7 @@ kbd { &, > a { border-radius: var(--border-radius-pill); - background-color: var(--color-primary-light); + background-color: var(--color-primary-element-light); } } @@ -433,7 +433,7 @@ kbd { &:focus-visible { opacity: 1; border-width: 0; - box-shadow: inset 0 0 0 2px var(--color-primary); + box-shadow: inset 0 0 0 2px var(--color-primary-element); background: none; } } @@ -533,8 +533,8 @@ kbd { span { padding: 2px 5px; border-radius: 10px; - background-color: var(--color-primary); - color: var(--color-primary-text); + background-color: var(--color-primary-element); + color: var(--color-primary-element-text); } } } @@ -860,7 +860,7 @@ $min-content-width: variables.$breakpoint-mobile - variables.$navigation-width - } &:focus-visible { - box-shadow: 0 0 0 2px inset var(--color-primary) !important; + box-shadow: 0 0 0 2px inset var(--color-primary-element) !important; background-position: 12px center; } } @@ -1119,7 +1119,7 @@ $outter-margin: math.div($popoveritem-height - $popovericon-size, 2); } &.active { border-radius: var(--border-radius-pill); - background-color: var(--color-primary-light); + background-color: var(--color-primary-element-light); } /* prevent .action class to break the design */ &.action { diff --git a/core/css/guest.css b/core/css/guest.css index 835c80604ae..c85dfb99e61 100644 --- a/core/css/guest.css +++ b/core/css/guest.css @@ -17,4 +17,4 @@ * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. - */@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;cursor:default}html{height:100%}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5}table{border-collapse:separate;border-spacing:0;white-space:nowrap}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}a{border:0;color:var(--color-main-text);text-decoration:none}a,a *,input,input *,select,.button span,label{cursor:pointer}ul{list-style:none}body{font-weight:normal;font-size:.875em;line-height:1.6em;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";color:var(--color-text);text-align:center;background-color:var(--color-background-plain, var(--color-primary-default, #0082c9));background-image:var(--image-background, var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))));background-attachment:fixed;min-height:100%;height:auto;overflow:auto;position:static}#body-login a{font-weight:600}#body-login footer a{color:var(--color-text)}#body-login a:not(.button):hover,#body-login a:not(.button):focus{text-decoration:underline;text-decoration-skip-ink:auto}em{font-style:normal;opacity:.5}h2,h3,h4{font-weight:bold}h2{font-size:20px;margin-bottom:12px;line-height:140%}h3{font-size:15px;margin:12px 0}body{display:flex;flex-direction:column;justify-content:center;align-items:center}#header .logo{background-image:var(--image-logo, url("../../core/img/logo/logo.svg"));background-repeat:no-repeat;background-size:contain;background-position:center;width:175px;height:130px;margin:0 auto;position:relative;left:unset}.wrapper{width:100%;max-width:700px;margin-top:10vh}form{position:relative;margin:auto;padding:0}form.install-form{max-width:300px}form.install-form fieldset,form.install-form fieldset input{width:100%}form.install-form .strengthify-wrapper{bottom:17px;width:calc(100% - 8px);left:4px;top:unset}form.install-form #show{top:18px}form #sqliteInformation{margin-top:.5rem;margin-bottom:20px}form #adminaccount,form #use_other_db{margin-bottom:15px;text-align:left}form #adminaccount>legend,form #adminlogin{margin-bottom:1rem}form #advancedHeader{width:100%}form fieldset legend,#datadirContent label{width:100%}#datadirContent label{display:block;margin:0}form #datadirField legend{margin-bottom:15px}#showAdvanced{padding:13px}#showAdvanced img{vertical-align:middle}#submit-wrapper{display:flex;align-items:center;justify-content:center;padding:10px 5px;position:relative}@media only screen and (max-width: 1024px){.wrapper{margin-top:0}}#submit-wrapper{margin:0 auto}#submit-wrapper .submit-icon{position:absolute;right:24px;transition:right 100ms ease-in-out;pointer-events:none}#submit-wrapper input.login:hover~.submit-icon.icon-confirm-white,#submit-wrapper input.login:focus~.submit-icon.icon-confirm-white,#submit-wrapper input.login:active~.submit-icon.icon-confirm-white{right:20px}#submit-wrapper .icon-loading-small{position:absolute;top:22px;right:26px}input,textarea,select,button,div[contenteditable=true]{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}input,input:not([type=range]),input:not([type=text]),input:not([type=password]),a.button{font-size:20px;margin:5px;padding:5px;outline:none;border-radius:3px;-webkit-appearance:none}input:not([type=radio]),input:not([type=range]){border-width:2px}input:not([type=range]):focus-visible{box-shadow:none !important}input[type=submit],input[type=submit].icon-confirm,input[type=button],button,a.button,.button,select{display:inline-block;width:auto;min-width:25px;padding:12px;background-color:var(--color-main-background);font-weight:bold;color:var(--color-text);border:none;border-radius:100px;cursor:pointer}.icon-confirm.input-button-inline{position:absolute;right:3px;top:5px}input[type=submit]:focus{box-shadow:0 0 0 2px inset var(--color-main-text) !important}input[type=text],input[type=tel],input[type=password],input[type=email]{width:266px;padding:5px 10px;color:var(--color-text-lighter);cursor:text;font-family:inherit;font-weight:normal;margin-left:0;margin-right:0}input[type=password].password-with-toggle,input[type=text].password-with-toggle{width:238px;padding-right:40px !important}input.login{width:260px;height:50px;background-position:right 16px center}input[type=submit],input[type=submit].icon-confirm,input.updateButton,input.update-continue{padding:10px 20px;overflow:hidden;text-overflow:ellipsis}button::-moz-focus-inner,input::-moz-focus-inner{border:0}input.primary:not(:disabled):hover,input.primary:not(:disabled):focus,button.primary:not(:disabled):hover,button.primary:not(:disabled):focus,a.primary:not(:disabled):hover,a.primary:not(:disabled):focus{color:var(--color-primary-text)}input[type=checkbox].checkbox{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}input[type=checkbox].checkbox+label{user-select:none}input[type=checkbox].checkbox:disabled+label,input[type=checkbox].checkbox:disabled+label:before{cursor:default}input[type=checkbox].checkbox+label:before{content:"";display:inline-block;vertical-align:middle;margin:3px;margin-top:1px;border:1px solid #888;border-radius:1px;height:10px;width:10px;background-position:center}input[type=checkbox].checkbox--white+label:before{border-color:#ddd}input[type=checkbox].checkbox--white:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox--white:focus+label:before{border-color:#fff}input[type=checkbox].checkbox--white:checked+label:before{background-color:#eee;border-color:#eee}input[type=checkbox].checkbox--white:disabled+label:before{background-color:#666 !important;border-color:#999 !important}input[type=checkbox].checkbox--white:checked:disabled+label:before{border-color:#666;background-color:#222}input[type=checkbox].checkbox--white:checked+label:before{background-color:rgba(0,0,0,0) !important;border-color:#fff !important;background-image:url("../img/actions/checkbox-mark-white.svg")}.strengthify-wrapper{display:inline-block;position:relative;top:-20px;width:250px;border-radius:0 0 3px 3px;overflow:hidden;height:3px}.tooltip-inner{font-weight:bold;padding:3px 6px;text-align:center}#show,#dbpassword-toggle{position:absolute;right:2px;top:-3px;display:flex;justify-content:center;width:44px;align-content:center;padding:13px}#pass2,input[name=personal-password-clone]{padding:.6em 2.5em .4em .4em;width:8em}#personal-show+label{height:14px;margin-top:-25px;left:295px;display:block}#passwordbutton{margin-left:.5em}p.info,form fieldset legend,#datadirContent label,form fieldset .warning-info,form input[type=checkbox]+label{text-align:center}form .warning input[type=checkbox]:hover+label,form .warning input[type=checkbox]:focus+label,form .warning input[type=checkbox]+label{color:var(--color-primary-text) !important}.body-login-container.two-factor{max-width:290px;margin:15px auto 0}.two-factor-provider{display:flex;border-radius:3px;margin:12px 0;border:1px solid rgba(0,0,0,0);text-align:left;align-items:center;text-decoration:none !important}.two-factor-provider:hover,.two-factor-provider:focus,.two-factor-provider:active{border:1px solid #fff}.two-factor-provider img{width:64px;height:64px;padding:0 12px}.two-factor-provider div{margin:12px 0}.two-factor-provider h3{margin:0}.two-factor-provider p{font-weight:normal}.two-factor-icon{width:100px;display:block;margin:0 auto}.two-factor-submit{width:100%;padding:10px;margin:0 0 5px 0;border-radius:100px;font-size:20px}.two-factor-primary{padding:14px !important;width:226px}.two-factor-secondary{display:inline-block;padding:12px}#remember_login{margin:18px 5px 0 16px !important}.updateProgress .error{margin-top:10px;margin-bottom:10px}form #selectDbType{text-align:center;white-space:nowrap;margin:0;display:flex}form #selectDbType .info{white-space:normal}form #selectDbType label{flex-grow:1;margin:0 -1px 5px;font-size:12px;background:var(--color-background-hover);color:var(--color-main-text);cursor:pointer;border:1px solid var(--color-border);padding:10px 17px}form #selectDbType label.ui-state-hover,form #selectDbType label.ui-state-active{font-weight:normal;background:var(--color-background-darker);color:var(--color-main-text)}form #selectDbType label span{display:none}.grouptop,.groupmiddle,.groupbottom{position:relative;user-select:none}.grouptop,.groupmiddle{margin-bottom:8px !important}.groupbottom{margin-bottom:13px}.groupbottom input[type=submit]{box-shadow:none !important}.grouptop.groupbottom input{border-radius:3px !important;margin:5px 0 !important}.body-login-container{display:flex;flex-direction:column;text-align:left;word-wrap:break-word;border-radius:10px;cursor:default;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text}.body-login-container .icon-big{background-size:70px;height:70px}.body-login-container form{width:initial}.body-login-container p:not(:last-child){margin-bottom:12px}.infogroup{margin:8px 0}.infogroup:last-child{margin-bottom:0}p.info{margin:20px auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.update{width:calc(100% - 32px);text-align:center}.update .appList{list-style:disc;text-align:left;margin-left:25px;margin-right:25px}.update img.float-spinner{float:left}.update a.update-show-detailed{border-bottom:inherit}#update-progress-detailed{text-align:left;margin-bottom:12px}.update-show-detailed{padding:12px;display:block;opacity:.75}.update-show-detailed .icon-caret-white{display:inline-block;vertical-align:middle}#update-progress-icon{height:32px;margin:10px;background-size:32px}.icon-info-white{background-image:url("../img/actions/info-white.svg?v=2")}.icon-error-white{background-image:url("../img/actions/error-white.svg?v=1")}.icon-caret-white{background-image:url("../img/actions/caret-white.svg?v=1")}.icon-confirm{background-image:url("../img/actions/confirm.svg?v=2")}.icon-confirm-white{background-image:url("../img/actions/confirm-white.svg?v=2")}.icon-checkmark-white{background-image:url("../img/actions/checkmark-white.svg?v=1")}.float-spinner{margin-top:-32px;padding-top:32px;height:32px;display:none}[class^=icon-],[class*=" icon-"]{background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px}.loading,.loading-small,.icon-loading,.icon-loading-dark,.icon-loading-small,.icon-loading-small-dark{position:relative;filter:var(--background-invert-if-dark)}.loading:after,.loading-small:after,.icon-loading:after,.icon-loading-dark:after,.icon-loading-small:after,.icon-loading-small-dark:after{z-index:2;content:"";height:32px;width:32px;margin:-17px 0 0 -17px;position:absolute;top:50%;left:50%;border-radius:100%;-webkit-animation:rotate .8s infinite linear;animation:rotate .8s infinite linear;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.primary .loading,.primary+.loading,.primary .loading-small,.primary+.loading-small,.primary .icon-loading,.primary+.icon-loading,.primary .icon-loading-dark,.primary+.icon-loading-dark,.primary .icon-loading-small,.primary+.icon-loading-small,.primary .icon-loading-small-dark,.primary+.icon-loading-small-dark{filter:var(--primary-invert-if-bright)}.loading:after,.loading-small:after,.icon-loading:after,.icon-loading-dark:after,.icon-loading-small:after,.icon-loading-small-dark:after{border:2px solid rgba(150,150,150,.5);border-top-color:#646464}.icon-loading-dark:after,.icon-loading-small-dark:after{border:2px solid rgba(187,187,187,.5);border-top-color:#bbb}.icon-loading-small:after,.icon-loading-small-dark:after{height:16px;width:16px;margin:-9px 0 0 -9px}img.icon-loading,object.icon-loading,video.icon-loading,button.icon-loading,textarea.icon-loading,input.icon-loading,select.icon-loading,div[contenteditable=true].icon-loading{background-image:url("../img/loading.gif")}img.icon-loading-dark,object.icon-loading-dark,video.icon-loading-dark,button.icon-loading-dark,textarea.icon-loading-dark,input.icon-loading-dark,select.icon-loading-dark,div[contenteditable=true].icon-loading-dark{background-image:url("../img/loading-dark.gif")}img.icon-loading-small,object.icon-loading-small,video.icon-loading-small,button.icon-loading-small,textarea.icon-loading-small,input.icon-loading-small,select.icon-loading-small,div[contenteditable=true].icon-loading-small{background-image:url("../img/loading-small.gif")}img.icon-loading-small-dark,object.icon-loading-small-dark,video.icon-loading-small-dark,button.icon-loading-small-dark,textarea.icon-loading-small-dark,input.icon-loading-small-dark,select.icon-loading-small-dark,div[contenteditable=true].icon-loading-small-dark{background-image:url("../img/loading-small-dark.gif")}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}footer{min-height:70px;margin-top:auto}footer .info .entity-name{font-weight:bold}label.infield,.hidden-visually{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}a.legal{font-size:smaller}.notecard{color:var(--color-text-light);background-color:var(--note-background);border-left:4px solid var(--note-theme);border-radius:var(--border-radius);margin:1rem 0;padding:1rem;text-align:left}.notecard.success{--note-background: rgba(var(--color-success-rgb), 0.1);--note-theme: var(--color-success)}.notecard.error{--note-background: rgba(var(--color-error-rgb), 0.1);--note-theme: var(--color-error)}.notecard.warning{--note-background: rgba(var(--color-warning-rgb), 0.1);--note-theme: var(--color-warning)}.notecard:last-child{margin-bottom:0}.notecard pre{background-color:var(--color-background-dark);margin-top:1rem;padding:1em 1.3em;border-radius:var(--border-radius)}.guest-box,.body-login-container{color:var(--color-main-text);background-color:var(--color-main-background);padding:16px;border-radius:var(--border-radius-large);box-shadow:0 0 10px var(--color-box-shadow);display:inline-block}.guest-box.wide{display:block;text-align:left}.guest-box fieldset{margin-top:0}.guest-box .pre{overflow-x:scroll}button.toggle-password{background-color:rgba(0,0,0,0);border-width:0;height:44px}.margin-top{margin-top:1rem !important}.text-left{text-align:left !important}.hidden{display:none}/*# sourceMappingURL=guest.css.map */ + */@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;cursor:default}html{height:100%}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5}table{border-collapse:separate;border-spacing:0;white-space:nowrap}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}a{border:0;color:var(--color-main-text);text-decoration:none}a,a *,input,input *,select,.button span,label{cursor:pointer}ul{list-style:none}body{font-weight:normal;font-size:.875em;line-height:1.6em;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";color:var(--color-text);text-align:center;background-color:var(--color-background-plain, var(--color-primary-element-default, #0082c9));background-image:var(--image-background, var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))));background-attachment:fixed;min-height:100%;height:auto;overflow:auto;position:static}#body-login a{font-weight:600}#body-login footer a{color:var(--color-text)}#body-login a:not(.button):hover,#body-login a:not(.button):focus{text-decoration:underline;text-decoration-skip-ink:auto}em{font-style:normal;opacity:.5}h2,h3,h4{font-weight:bold}h2{font-size:20px;margin-bottom:12px;line-height:140%}h3{font-size:15px;margin:12px 0}body{display:flex;flex-direction:column;justify-content:center;align-items:center}#header .logo{background-image:var(--image-logo, url("../../core/img/logo/logo.svg"));background-repeat:no-repeat;background-size:contain;background-position:center;width:175px;height:130px;margin:0 auto;position:relative;left:unset}.wrapper{width:100%;max-width:700px;margin-top:10vh}form{position:relative;margin:auto;padding:0}form.install-form{max-width:300px}form.install-form fieldset,form.install-form fieldset input{width:100%}form.install-form .strengthify-wrapper{bottom:17px;width:calc(100% - 8px);left:4px;top:unset}form.install-form #show{top:18px}form #sqliteInformation{margin-top:.5rem;margin-bottom:20px}form #adminaccount,form #use_other_db{margin-bottom:15px;text-align:left}form #adminaccount>legend,form #adminlogin{margin-bottom:1rem}form #advancedHeader{width:100%}form fieldset legend,#datadirContent label{width:100%}#datadirContent label{display:block;margin:0}form #datadirField legend{margin-bottom:15px}#showAdvanced{padding:13px}#showAdvanced img{vertical-align:middle}#submit-wrapper{display:flex;align-items:center;justify-content:center;padding:10px 5px;position:relative}@media only screen and (max-width: 1024px){.wrapper{margin-top:0}}#submit-wrapper{margin:0 auto}#submit-wrapper .submit-icon{position:absolute;right:24px;transition:right 100ms ease-in-out;pointer-events:none}#submit-wrapper input.login:hover~.submit-icon.icon-confirm-white,#submit-wrapper input.login:focus~.submit-icon.icon-confirm-white,#submit-wrapper input.login:active~.submit-icon.icon-confirm-white{right:20px}#submit-wrapper .icon-loading-small{position:absolute;top:22px;right:26px}input,textarea,select,button,div[contenteditable=true]{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}input,input:not([type=range]),input:not([type=text]),input:not([type=password]),a.button{font-size:20px;margin:5px;padding:5px;outline:none;border-radius:3px;-webkit-appearance:none}input:not([type=radio]),input:not([type=range]){border-width:2px}input:not([type=range]):focus-visible{box-shadow:none !important}input[type=submit],input[type=submit].icon-confirm,input[type=button],button,a.button,.button,select{display:inline-block;width:auto;min-width:25px;padding:12px;background-color:var(--color-main-background);font-weight:bold;color:var(--color-text);border:none;border-radius:100px;cursor:pointer}.icon-confirm.input-button-inline{position:absolute;right:3px;top:5px}input[type=submit]:focus{box-shadow:0 0 0 2px inset var(--color-main-text) !important}input[type=text],input[type=tel],input[type=password],input[type=email]{width:266px;padding:5px 10px;color:var(--color-text-lighter);cursor:text;font-family:inherit;font-weight:normal;margin-left:0;margin-right:0}input[type=password].password-with-toggle,input[type=text].password-with-toggle{width:238px;padding-right:40px !important}input.login{width:260px;height:50px;background-position:right 16px center}input[type=submit],input[type=submit].icon-confirm,input.updateButton,input.update-continue{padding:10px 20px;overflow:hidden;text-overflow:ellipsis}button::-moz-focus-inner,input::-moz-focus-inner{border:0}input.primary:not(:disabled):hover,input.primary:not(:disabled):focus,button.primary:not(:disabled):hover,button.primary:not(:disabled):focus,a.primary:not(:disabled):hover,a.primary:not(:disabled):focus{color:var(--color-primary-element-text)}input[type=checkbox].checkbox{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}input[type=checkbox].checkbox+label{user-select:none}input[type=checkbox].checkbox:disabled+label,input[type=checkbox].checkbox:disabled+label:before{cursor:default}input[type=checkbox].checkbox+label:before{content:"";display:inline-block;vertical-align:middle;margin:3px;margin-top:1px;border:1px solid #888;border-radius:1px;height:10px;width:10px;background-position:center}input[type=checkbox].checkbox--white+label:before{border-color:#ddd}input[type=checkbox].checkbox--white:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox--white:focus+label:before{border-color:#fff}input[type=checkbox].checkbox--white:checked+label:before{background-color:#eee;border-color:#eee}input[type=checkbox].checkbox--white:disabled+label:before{background-color:#666 !important;border-color:#999 !important}input[type=checkbox].checkbox--white:checked:disabled+label:before{border-color:#666;background-color:#222}input[type=checkbox].checkbox--white:checked+label:before{background-color:rgba(0,0,0,0) !important;border-color:#fff !important;background-image:url("../img/actions/checkbox-mark-white.svg")}.strengthify-wrapper{display:inline-block;position:relative;top:-20px;width:250px;border-radius:0 0 3px 3px;overflow:hidden;height:3px}.tooltip-inner{font-weight:bold;padding:3px 6px;text-align:center}#show,#dbpassword-toggle{position:absolute;right:2px;top:-3px;display:flex;justify-content:center;width:44px;align-content:center;padding:13px}#pass2,input[name=personal-password-clone]{padding:.6em 2.5em .4em .4em;width:8em}#personal-show+label{height:14px;margin-top:-25px;left:295px;display:block}#passwordbutton{margin-left:.5em}p.info,form fieldset legend,#datadirContent label,form fieldset .warning-info,form input[type=checkbox]+label{text-align:center}form .warning input[type=checkbox]:hover+label,form .warning input[type=checkbox]:focus+label,form .warning input[type=checkbox]+label{color:var(--color-primary-element-text) !important}.body-login-container.two-factor{max-width:290px;margin:15px auto 0}.two-factor-provider{display:flex;border-radius:3px;margin:12px 0;border:1px solid rgba(0,0,0,0);text-align:left;align-items:center;text-decoration:none !important}.two-factor-provider:hover,.two-factor-provider:focus,.two-factor-provider:active{border:1px solid #fff}.two-factor-provider img{width:64px;height:64px;padding:0 12px}.two-factor-provider div{margin:12px 0}.two-factor-provider h3{margin:0}.two-factor-provider p{font-weight:normal}.two-factor-icon{width:100px;display:block;margin:0 auto}.two-factor-submit{width:100%;padding:10px;margin:0 0 5px 0;border-radius:100px;font-size:20px}.two-factor-primary{padding:14px !important;width:226px}.two-factor-secondary{display:inline-block;padding:12px}#remember_login{margin:18px 5px 0 16px !important}.updateProgress .error{margin-top:10px;margin-bottom:10px}form #selectDbType{text-align:center;white-space:nowrap;margin:0;display:flex}form #selectDbType .info{white-space:normal}form #selectDbType label{flex-grow:1;margin:0 -1px 5px;font-size:12px;background:var(--color-background-hover);color:var(--color-main-text);cursor:pointer;border:1px solid var(--color-border);padding:10px 17px}form #selectDbType label.ui-state-hover,form #selectDbType label.ui-state-active{font-weight:normal;background:var(--color-background-darker);color:var(--color-main-text)}form #selectDbType label span{display:none}.grouptop,.groupmiddle,.groupbottom{position:relative;user-select:none}.grouptop,.groupmiddle{margin-bottom:8px !important}.groupbottom{margin-bottom:13px}.groupbottom input[type=submit]{box-shadow:none !important}.grouptop.groupbottom input{border-radius:3px !important;margin:5px 0 !important}.body-login-container{display:flex;flex-direction:column;text-align:left;word-wrap:break-word;border-radius:10px;cursor:default;-moz-user-select:text;-webkit-user-select:text;-ms-user-select:text;user-select:text}.body-login-container .icon-big{background-size:70px;height:70px}.body-login-container form{width:initial}.body-login-container p:not(:last-child){margin-bottom:12px}.infogroup{margin:8px 0}.infogroup:last-child{margin-bottom:0}p.info{margin:20px auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.update{width:calc(100% - 32px);text-align:center}.update .appList{list-style:disc;text-align:left;margin-left:25px;margin-right:25px}.update img.float-spinner{float:left}.update a.update-show-detailed{border-bottom:inherit}#update-progress-detailed{text-align:left;margin-bottom:12px}.update-show-detailed{padding:12px;display:block;opacity:.75}.update-show-detailed .icon-caret-white{display:inline-block;vertical-align:middle}#update-progress-icon{height:32px;margin:10px;background-size:32px}.icon-info-white{background-image:url("../img/actions/info-white.svg?v=2")}.icon-error-white{background-image:url("../img/actions/error-white.svg?v=1")}.icon-caret-white{background-image:url("../img/actions/caret-white.svg?v=1")}.icon-confirm{background-image:url("../img/actions/confirm.svg?v=2")}.icon-confirm-white{background-image:url("../img/actions/confirm-white.svg?v=2")}.icon-checkmark-white{background-image:url("../img/actions/checkmark-white.svg?v=1")}.float-spinner{margin-top:-32px;padding-top:32px;height:32px;display:none}[class^=icon-],[class*=" icon-"]{background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px}.loading,.loading-small,.icon-loading,.icon-loading-dark,.icon-loading-small,.icon-loading-small-dark{position:relative;filter:var(--background-invert-if-dark)}.loading:after,.loading-small:after,.icon-loading:after,.icon-loading-dark:after,.icon-loading-small:after,.icon-loading-small-dark:after{z-index:2;content:"";height:32px;width:32px;margin:-17px 0 0 -17px;position:absolute;top:50%;left:50%;border-radius:100%;-webkit-animation:rotate .8s infinite linear;animation:rotate .8s infinite linear;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.primary .loading,.primary+.loading,.primary .loading-small,.primary+.loading-small,.primary .icon-loading,.primary+.icon-loading,.primary .icon-loading-dark,.primary+.icon-loading-dark,.primary .icon-loading-small,.primary+.icon-loading-small,.primary .icon-loading-small-dark,.primary+.icon-loading-small-dark{filter:var(--primary-invert-if-bright)}.loading:after,.loading-small:after,.icon-loading:after,.icon-loading-dark:after,.icon-loading-small:after,.icon-loading-small-dark:after{border:2px solid rgba(150,150,150,.5);border-top-color:#646464}.icon-loading-dark:after,.icon-loading-small-dark:after{border:2px solid rgba(187,187,187,.5);border-top-color:#bbb}.icon-loading-small:after,.icon-loading-small-dark:after{height:16px;width:16px;margin:-9px 0 0 -9px}img.icon-loading,object.icon-loading,video.icon-loading,button.icon-loading,textarea.icon-loading,input.icon-loading,select.icon-loading,div[contenteditable=true].icon-loading{background-image:url("../img/loading.gif")}img.icon-loading-dark,object.icon-loading-dark,video.icon-loading-dark,button.icon-loading-dark,textarea.icon-loading-dark,input.icon-loading-dark,select.icon-loading-dark,div[contenteditable=true].icon-loading-dark{background-image:url("../img/loading-dark.gif")}img.icon-loading-small,object.icon-loading-small,video.icon-loading-small,button.icon-loading-small,textarea.icon-loading-small,input.icon-loading-small,select.icon-loading-small,div[contenteditable=true].icon-loading-small{background-image:url("../img/loading-small.gif")}img.icon-loading-small-dark,object.icon-loading-small-dark,video.icon-loading-small-dark,button.icon-loading-small-dark,textarea.icon-loading-small-dark,input.icon-loading-small-dark,select.icon-loading-small-dark,div[contenteditable=true].icon-loading-small-dark{background-image:url("../img/loading-small-dark.gif")}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}footer{min-height:70px;margin-top:auto}footer .info .entity-name{font-weight:bold}label.infield,.hidden-visually{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}a.legal{font-size:smaller}.notecard{color:var(--color-text-light);background-color:var(--note-background);border-left:4px solid var(--note-theme);border-radius:var(--border-radius);margin:1rem 0;padding:1rem;text-align:left}.notecard.success{--note-background: rgba(var(--color-success-rgb), 0.1);--note-theme: var(--color-success)}.notecard.error{--note-background: rgba(var(--color-error-rgb), 0.1);--note-theme: var(--color-error)}.notecard.warning{--note-background: rgba(var(--color-warning-rgb), 0.1);--note-theme: var(--color-warning)}.notecard:last-child{margin-bottom:0}.notecard pre{background-color:var(--color-background-dark);margin-top:1rem;padding:1em 1.3em;border-radius:var(--border-radius)}.guest-box,.body-login-container{color:var(--color-main-text);background-color:var(--color-main-background);padding:16px;border-radius:var(--border-radius-large);box-shadow:0 0 10px var(--color-box-shadow);display:inline-block}.guest-box.wide{display:block;text-align:left}.guest-box fieldset{margin-top:0}.guest-box .pre{overflow-x:scroll}button.toggle-password{background-color:rgba(0,0,0,0);border-width:0;height:44px}.margin-top{margin-top:1rem !important}.text-left{text-align:left !important}.hidden{display:none}/*# sourceMappingURL=guest.css.map */ diff --git a/core/css/guest.css.map b/core/css/guest.css.map index cce141728cb..e119fcaad95 100644 --- a/core/css/guest.css.map +++ b/core/css/guest.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["animations.scss","guest.scss"],"names":[],"mappings":"CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBA,0BACC,KACC,+BACA,uBAED,GACC,iCACA,0BAGF,kBACC,KACC,+BACA,uBAED,GACC,iCACA,0BC5BF,wYACA,iBACA,2EACA,qBACA,mEACA,iDACA,kCACA,6DACA,6DACA,mBAEA,KACC,mBAEA,iBACA,kBACA,qLACA,wBACA,kBAEA,sFAMA,2JACG,4BACH,gBACA,YACA,cACA,gBAKA,cACC,gBAGD,qBACC,wBAGD,kEAEC,0BACA,8BAIF,GACC,kBACA,WAID,SAGC,iBAGD,GACC,eACA,mBACA,iBAED,GACC,eACA,cAID,KACC,aACA,sBACA,uBACA,mBAIA,cACC,wEACA,4BACA,wBACA,2BACA,YACA,aACA,cACA,kBACA,WAIF,SACC,WACA,gBACA,gBAID,KACC,kBACA,YACA,UAED,kBACC,gBAGD,4DAEC,WAED,uCACC,YACA,uBACA,SACA,UAGD,wBACC,SAGD,wBACC,iBACA,mBAED,sCACC,mBACA,gBAED,2CAEC,mBAED,qBACC,WAED,2CACC,WAED,sBACC,cACA,SAED,0BACC,mBAID,cACC,aAED,kBACC,sBAID,gBACC,aACA,mBACA,uBACA,iBACA,kBAID,2CACC,SACC,cAMF,gBACC,cAEA,6BACC,kBACA,WACA,mCACA,oBAKD,uMAGC,WAGD,oCACC,kBACA,SACA,WAMF,uDACC,qLAED,yFAKC,eACA,WACA,YACA,aACA,kBACA,wBAGD,gDAEI,iBAGJ,sCACI,2BAGJ,qGAOC,qBACA,WACA,eACA,aACA,8CACA,iBACA,wBACA,YACA,oBACA,eAGD,kCACC,kBACA,UACA,QAGD,yBACC,6DAED,wEAIC,YACA,iBACA,gCACA,YACA,oBACA,mBACA,cACA,eAED,gFACC,YACA,8BAED,YACC,YACA,YACA,sCAED,4FAIC,kBACA,gBACA,uBAID,iDAEC,SAGD,4MAMC,gCAID,8BACC,kBACA,cACA,SACA,UACA,WACA,gBAED,oCACC,iBAED,iGAEC,eAED,2CACC,WACA,qBACA,sBACA,WACA,eACA,sBACA,kBACA,YACA,WACA,2BAED,kDACC,kBAED,6IAEC,kBAED,0DACC,sBACA,kBAED,2DACC,iCACA,6BAED,mEACC,kBACA,sBAED,0DACC,0CACA,6BACA,+DAID,qBACC,qBACA,kBACA,UACA,YACA,0BACA,gBACA,WAED,eACC,iBACA,gBACA,kBAID,yBACC,kBACA,UACA,SACA,aACA,uBACA,WACA,qBACA,aAGD,2CACC,6BACA,UAED,qBACC,YACA,iBACA,WACA,cAED,gBACC,iBAID,8GAKC,kBAGD,uIAGC,2CAGD,iCACC,gBACA,mBAED,qBACC,aACA,kBACA,cACA,+BACA,gBACA,mBACA,gCAEA,kFAGC,sBAED,yBACC,WACA,YACA,eAED,yBACC,cAED,wBACC,SAED,uBACC,mBAGF,iBACC,YACA,cACA,cAED,mBACC,WACA,aACA,iBACA,oBACA,eAED,oBAEC,wBACA,YAED,sBACC,qBACA,aAKD,gBACC,kCAKD,uBACC,gBACA,mBAID,mBACC,kBACA,mBACA,SACA,aACA,yBACC,mBAED,yBACC,YACA,kBACA,eACA,yCACA,6BACA,eACA,qCACA,kBAED,iFAEC,mBACA,0CACA,6BAED,8BACC,aAMF,oCAGC,kBACA,iBAED,uBACC,6BAED,aACC,mBAED,gCACC,2BAED,4BACC,6BACA,wBAKD,sBACC,aACA,sBACA,gBACA,qBACA,mBACA,eACA,sBACA,yBACA,qBACA,iBAGA,gCACC,qBACA,YAGD,2BACC,cAGD,yCACC,mBAMF,WACC,aAED,sBACC,gBAED,OACC,iBACA,yBACA,sBACA,qBACA,iBAID,QACC,wBACA,kBAEA,iBACC,gBACA,gBACA,iBACA,kBAGD,0BACC,WAGD,+BACC,sBAGF,0BACC,gBACA,mBAED,sBACC,aACA,cACA,YAEA,wCACC,qBACA,sBAIF,sBACC,YACA,YACA,qBAKD,iBACC,0DAED,kBACC,2DAED,kBACC,2DAED,cACC,uDAED,oBACC,6DAED,sBACC,+DAKD,eACC,iBACA,iBACA,YACA,aAED,iCACC,4BACA,2BACA,eACA,gBAED,sGACC,kBACA,wCAED,0IACC,UACA,WACA,YACA,WACA,uBACA,kBACA,QACA,SACA,mBACA,6CACA,qCACA,gCACA,4BACA,wBAED,wTACI,uCAEJ,0IACC,sCACA,yBAED,wDACC,sCACA,sBAED,yDACC,YACA,WACA,qBAGD,gLACC,2CAED,wNACC,gDAED,gOACC,iDAED,wQACC,sDAED,0BACC,KACA,+BACA,uBAEA,GACA,iCACA,0BAGD,kBACC,KACA,+BACA,uBAEA,GACA,iCACA,0BAKD,OACC,gBACA,gBACA,0BACC,iBAKF,+BAEC,kBACA,cACA,aACA,UACA,WACA,gBAGD,QACC,kBAGD,UACC,8BACA,wCACA,wCACA,mCACA,cACA,aACA,gBAEA,kBACC,uDACA,mCAGD,gBACC,qDACA,iCAGD,kBACC,uDACA,mCAGD,qBACC,gBAGD,cACC,8CACA,gBACA,kBACA,mCAIF,iCACC,6BACA,8CACA,QAvxByB,KAwxBzB,yCACA,4CACA,qBAIA,gBACC,cACA,gBAGD,oBACC,aAGD,gBACC,kBAIF,uBACC,+BACA,eACA,YAID,YACC,2BAGD,WACC,2BAGD,QACC","file":"guest.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["animations.scss","guest.scss"],"names":[],"mappings":"CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBA,0BACC,KACC,+BACA,uBAED,GACC,iCACA,0BAGF,kBACC,KACC,+BACA,uBAED,GACC,iCACA,0BC5BF,wYACA,iBACA,2EACA,qBACA,mEACA,iDACA,kCACA,6DACA,6DACA,mBAEA,KACC,mBAEA,iBACA,kBACA,qLACA,wBACA,kBAEA,8FAMA,2JACG,4BACH,gBACA,YACA,cACA,gBAKA,cACC,gBAGD,qBACC,wBAGD,kEAEC,0BACA,8BAIF,GACC,kBACA,WAID,SAGC,iBAGD,GACC,eACA,mBACA,iBAED,GACC,eACA,cAID,KACC,aACA,sBACA,uBACA,mBAIA,cACC,wEACA,4BACA,wBACA,2BACA,YACA,aACA,cACA,kBACA,WAIF,SACC,WACA,gBACA,gBAID,KACC,kBACA,YACA,UAED,kBACC,gBAGD,4DAEC,WAED,uCACC,YACA,uBACA,SACA,UAGD,wBACC,SAGD,wBACC,iBACA,mBAED,sCACC,mBACA,gBAED,2CAEC,mBAED,qBACC,WAED,2CACC,WAED,sBACC,cACA,SAED,0BACC,mBAID,cACC,aAED,kBACC,sBAID,gBACC,aACA,mBACA,uBACA,iBACA,kBAID,2CACC,SACC,cAMF,gBACC,cAEA,6BACC,kBACA,WACA,mCACA,oBAKD,uMAGC,WAGD,oCACC,kBACA,SACA,WAMF,uDACC,qLAED,yFAKC,eACA,WACA,YACA,aACA,kBACA,wBAGD,gDAEI,iBAGJ,sCACI,2BAGJ,qGAOC,qBACA,WACA,eACA,aACA,8CACA,iBACA,wBACA,YACA,oBACA,eAGD,kCACC,kBACA,UACA,QAGD,yBACC,6DAED,wEAIC,YACA,iBACA,gCACA,YACA,oBACA,mBACA,cACA,eAED,gFACC,YACA,8BAED,YACC,YACA,YACA,sCAED,4FAIC,kBACA,gBACA,uBAID,iDAEC,SAGD,4MAMC,wCAID,8BACC,kBACA,cACA,SACA,UACA,WACA,gBAED,oCACC,iBAED,iGAEC,eAED,2CACC,WACA,qBACA,sBACA,WACA,eACA,sBACA,kBACA,YACA,WACA,2BAED,kDACC,kBAED,6IAEC,kBAED,0DACC,sBACA,kBAED,2DACC,iCACA,6BAED,mEACC,kBACA,sBAED,0DACC,0CACA,6BACA,+DAID,qBACC,qBACA,kBACA,UACA,YACA,0BACA,gBACA,WAED,eACC,iBACA,gBACA,kBAID,yBACC,kBACA,UACA,SACA,aACA,uBACA,WACA,qBACA,aAGD,2CACC,6BACA,UAED,qBACC,YACA,iBACA,WACA,cAED,gBACC,iBAID,8GAKC,kBAGD,uIAGC,mDAGD,iCACC,gBACA,mBAED,qBACC,aACA,kBACA,cACA,+BACA,gBACA,mBACA,gCAEA,kFAGC,sBAED,yBACC,WACA,YACA,eAED,yBACC,cAED,wBACC,SAED,uBACC,mBAGF,iBACC,YACA,cACA,cAED,mBACC,WACA,aACA,iBACA,oBACA,eAED,oBAEC,wBACA,YAED,sBACC,qBACA,aAKD,gBACC,kCAKD,uBACC,gBACA,mBAID,mBACC,kBACA,mBACA,SACA,aACA,yBACC,mBAED,yBACC,YACA,kBACA,eACA,yCACA,6BACA,eACA,qCACA,kBAED,iFAEC,mBACA,0CACA,6BAED,8BACC,aAMF,oCAGC,kBACA,iBAED,uBACC,6BAED,aACC,mBAED,gCACC,2BAED,4BACC,6BACA,wBAKD,sBACC,aACA,sBACA,gBACA,qBACA,mBACA,eACA,sBACA,yBACA,qBACA,iBAGA,gCACC,qBACA,YAGD,2BACC,cAGD,yCACC,mBAMF,WACC,aAED,sBACC,gBAED,OACC,iBACA,yBACA,sBACA,qBACA,iBAID,QACC,wBACA,kBAEA,iBACC,gBACA,gBACA,iBACA,kBAGD,0BACC,WAGD,+BACC,sBAGF,0BACC,gBACA,mBAED,sBACC,aACA,cACA,YAEA,wCACC,qBACA,sBAIF,sBACC,YACA,YACA,qBAKD,iBACC,0DAED,kBACC,2DAED,kBACC,2DAED,cACC,uDAED,oBACC,6DAED,sBACC,+DAKD,eACC,iBACA,iBACA,YACA,aAED,iCACC,4BACA,2BACA,eACA,gBAED,sGACC,kBACA,wCAED,0IACC,UACA,WACA,YACA,WACA,uBACA,kBACA,QACA,SACA,mBACA,6CACA,qCACA,gCACA,4BACA,wBAED,wTACI,uCAEJ,0IACC,sCACA,yBAED,wDACC,sCACA,sBAED,yDACC,YACA,WACA,qBAGD,gLACC,2CAED,wNACC,gDAED,gOACC,iDAED,wQACC,sDAED,0BACC,KACA,+BACA,uBAEA,GACA,iCACA,0BAGD,kBACC,KACA,+BACA,uBAEA,GACA,iCACA,0BAKD,OACC,gBACA,gBACA,0BACC,iBAKF,+BAEC,kBACA,cACA,aACA,UACA,WACA,gBAGD,QACC,kBAGD,UACC,8BACA,wCACA,wCACA,mCACA,cACA,aACA,gBAEA,kBACC,uDACA,mCAGD,gBACC,qDACA,iCAGD,kBACC,uDACA,mCAGD,qBACC,gBAGD,cACC,8CACA,gBACA,kBACA,mCAIF,iCACC,6BACA,8CACA,QAvxByB,KAwxBzB,yCACA,4CACA,qBAIA,gBACC,cACA,gBAGD,oBACC,aAGD,gBACC,kBAIF,uBACC,+BACA,eACA,YAID,YACC,2BAGD,WACC,2BAGD,QACC","file":"guest.css"}
\ No newline at end of file diff --git a/core/css/guest.scss b/core/css/guest.scss index f917105d268..08137f1c630 100644 --- a/core/css/guest.scss +++ b/core/css/guest.scss @@ -28,7 +28,7 @@ body { color: var(--color-text); text-align: center; /* As guest, there is no color-background-plain */ - background-color: var(--color-background-plain, var(--color-primary-default, #0082c9)); + background-color: var(--color-background-plain, var(--color-primary-element-default, #0082c9)); /* As guest, there is no user background (--image-background) 1. User background if logged in ('no' if removed, that way the variable is _defined_) 2. Empty background if enabled ('yes' is used, that way the variable is _defined_) @@ -309,7 +309,7 @@ button.primary:not(:disabled):hover, button.primary:not(:disabled):focus, a.primary:not(:disabled):hover, a.primary:not(:disabled):focus { - color: var(--color-primary-text); + color: var(--color-primary-element-text); } /* Checkboxes - white only for login */ @@ -419,7 +419,7 @@ form input[type='checkbox']+label { form .warning input[type='checkbox']:hover+label, form .warning input[type='checkbox']:focus+label, form .warning input[type='checkbox']+label { - color: var(--color-primary-text) !important; + color: var(--color-primary-element-text) !important; } .body-login-container.two-factor { diff --git a/core/css/header.css b/core/css/header.css index 28aa8ea4884..cace937252c 100644 --- a/core/css/header.css +++ b/core/css/header.css @@ -1 +1 @@ -#header,#expanddiv{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#header a:not(.button):focus-visible,#header button:not(.button-vue):focus-visible,#header div[role=button]:focus-visible,#expanddiv a:not(.button):focus-visible,#expanddiv button:not(.button-vue):focus-visible,#expanddiv div[role=button]:focus-visible{outline:none}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#header div[role=button]:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after,#expanddiv div[role=button]:focus-visible::after{content:" ";position:absolute;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-primary-text);left:50%;opacity:1}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after{bottom:2px}#header .header-right a:not(.button):focus-visible::after,#header .header-right div[role=button]:focus-visible::after,#expanddiv .header-right a:not(.button):focus-visible::after,#expanddiv .header-right div[role=button]:focus-visible::after{bottom:4px}#header .header-right #expand.menutoggle:focus-visible::after,#expanddiv .header-right #expand.menutoggle:focus-visible::after{left:40%}#body-user #header,#body-settings #header,#body-public #header{display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:50px;box-sizing:border-box;justify-content:space-between}#nextcloud{padding:5px 0;padding-left:86px;position:relative;height:calc(100% - 4px);box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#nextcloud:hover,#nextcloud:active{opacity:1}#header .header-right>div>.menu{background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));border-radius:var(--border-radius-large);box-sizing:border-box;z-index:2000;position:absolute;max-width:350px;min-height:66px;max-height:calc(100vh - 50px - 8px);right:8px;top:50px;margin:0;overflow-y:auto}#header .header-right>div>.menu:not(.popovermenu){display:none}#header .header-right>div>.menu:after{border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background);bottom:100%;content:" ";height:0;width:0;position:absolute;pointer-events:none;right:10px}#header .header-right>div>.menu>div,#header .header-right>div>.menu>ul{-webkit-overflow-scrolling:touch;min-height:66px;max-height:calc(100vh - 50px - 8px)}#header .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;left:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header .header-appname-container{display:none;padding-right:10px;flex-shrink:0}#header #header-left,#header .header-left,#header #header-right,#header .header-right{display:inline-flex;align-items:center}#header #header-left,#header .header-left{flex:1 0;white-space:nowrap;min-width:0}#header #header-right,#header .header-right{justify-content:flex-end;flex-shrink:1}#header .header-right>div,#header .header-right>form{height:100%;position:relative}#header .header-right>div>.menutoggle,#header .header-right>form>.menutoggle{display:flex;justify-content:center;align-items:center;width:50px;height:44px;cursor:pointer;opacity:.85;padding:0;margin:2px 0}#header .header-right>div>.menutoggle:focus,#header .header-right>form>.menutoggle:focus{opacity:1}#header .header-right>div>.menutoggle:focus-visible,#header .header-right>form>.menutoggle:focus-visible{outline:none}.header-appname-container .header-appname{opacity:.75}.header-appname{color:var(--color-primary-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-right:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}.header-shared-by{color:var(--color-primary-text);position:relative;font-weight:300;font-size:11px;line-height:11px;overflow:hidden;text-overflow:ellipsis}#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;left:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:50px}header #emptycontent h2,header .emptycontent h2{font-weight:normal;font-size:16px}header #emptycontent [class^=icon-],header #emptycontent [class*=icon-],header .emptycontent [class^=icon-],header .emptycontent [class*=icon-]{background-size:48px;height:48px;width:48px}/*# sourceMappingURL=header.css.map */ +#header,#expanddiv{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#header a:not(.button):focus-visible,#header button:not(.button-vue):focus-visible,#header div[role=button]:focus-visible,#expanddiv a:not(.button):focus-visible,#expanddiv button:not(.button-vue):focus-visible,#expanddiv div[role=button]:focus-visible{outline:none}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#header div[role=button]:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after,#expanddiv div[role=button]:focus-visible::after{content:" ";position:absolute;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-primary-element-text);left:50%;opacity:1}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after{bottom:2px}#header .header-right a:not(.button):focus-visible::after,#header .header-right div[role=button]:focus-visible::after,#expanddiv .header-right a:not(.button):focus-visible::after,#expanddiv .header-right div[role=button]:focus-visible::after{bottom:4px}#header .header-right #expand.menutoggle:focus-visible::after,#expanddiv .header-right #expand.menutoggle:focus-visible::after{left:40%}#body-user #header,#body-settings #header,#body-public #header{display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:50px;box-sizing:border-box;justify-content:space-between}#nextcloud{padding:5px 0;padding-left:86px;position:relative;height:calc(100% - 4px);box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#nextcloud:hover,#nextcloud:active{opacity:1}#header .header-right>div>.menu{background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));border-radius:var(--border-radius-large);box-sizing:border-box;z-index:2000;position:absolute;max-width:350px;min-height:66px;max-height:calc(100vh - 50px - 8px);right:8px;top:50px;margin:0;overflow-y:auto}#header .header-right>div>.menu:not(.popovermenu){display:none}#header .header-right>div>.menu:after{border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background);bottom:100%;content:" ";height:0;width:0;position:absolute;pointer-events:none;right:10px}#header .header-right>div>.menu>div,#header .header-right>div>.menu>ul{-webkit-overflow-scrolling:touch;min-height:66px;max-height:calc(100vh - 50px - 8px)}#header .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;left:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header .header-appname-container{display:none;padding-right:10px;flex-shrink:0}#header #header-left,#header .header-left,#header #header-right,#header .header-right{display:inline-flex;align-items:center}#header #header-left,#header .header-left{flex:1 0;white-space:nowrap;min-width:0}#header #header-right,#header .header-right{justify-content:flex-end;flex-shrink:1}#header .header-right>div,#header .header-right>form{height:100%;position:relative}#header .header-right>div>.menutoggle,#header .header-right>form>.menutoggle{display:flex;justify-content:center;align-items:center;width:50px;height:44px;cursor:pointer;opacity:.85;padding:0;margin:2px 0}#header .header-right>div>.menutoggle:focus,#header .header-right>form>.menutoggle:focus{opacity:1}#header .header-right>div>.menutoggle:focus-visible,#header .header-right>form>.menutoggle:focus-visible{outline:none}.header-appname-container .header-appname{opacity:.75}.header-appname{color:var(--color-primary-element-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-right:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}.header-shared-by{color:var(--color-primary-element-text);position:relative;font-weight:300;font-size:11px;line-height:11px;overflow:hidden;text-overflow:ellipsis}#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;left:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:50px}header #emptycontent h2,header .emptycontent h2{font-weight:normal;font-size:16px}header #emptycontent [class^=icon-],header #emptycontent [class*=icon-],header .emptycontent [class^=icon-],header .emptycontent [class*=icon-]{background-size:48px;height:48px;width:48px}/*# sourceMappingURL=header.css.map */ diff --git a/core/css/header.css.map b/core/css/header.css.map index a8df4a6421a..0566eb00a24 100644 --- a/core/css/header.css.map +++ b/core/css/header.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["header.scss","variables.scss"],"names":[],"mappings":"AAiBA,mBAEC,yBACA,sBACA,qBACA,6PACC,aAGD,+QACC,YACA,kBACA,2BACA,WACA,WACA,kBACA,2CACA,SACA,UAGD,gLACC,WAIA,kPACC,WAGD,+HACC,SAOH,+DAGC,oBACA,kBACA,MACA,WACA,aACA,OC2Ce,KD1Cf,sBACA,8BAID,WACC,cACA,kBACA,kBACA,wBACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mCACC,UAaD,gCACC,8CACA,sDACA,yCACA,sBACA,aACA,kBACA,gBAfD,gBACA,oCAgBC,UACA,SACA,SACA,gBAEA,kDACC,aAID,sCACC,gCACA,iDACA,YACA,YACA,SACA,QACA,kBACA,oBACA,WAGD,uEAEC,iCAzCF,gBACA,oCA4CA,cACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,UACA,QACA,WAEA,gFAGD,kCACC,aACA,mBACA,cAGD,sFAEC,oBACA,mBAGD,0CACC,SACA,mBACA,YAGD,4CACC,yBACA,cAKA,qDAEC,YACA,kBACA,6EACC,aACA,uBACA,mBACA,MC3EY,KD4EZ,YACA,eACA,YACA,UACA,aAEA,yFACC,UAGD,yGACC,aASL,0CACC,YAKD,gBACC,gCACA,eACA,iBACA,SACA,UACA,kBACA,gBACA,uBAEA,cAGD,kBACC,gCACA,kBACA,gBACA,eACA,iBACA,gBACA,uBAID,cACC,kBACA,gBACA,aACA,WACA,SACA,aACA,aACA,eACA,SAEA,2BACC,IC1Ic,KDiJf,gDACC,mBACA,eAED,gJAEC,qBACA,YACA","file":"header.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["header.scss","variables.scss"],"names":[],"mappings":"AAiBA,mBAEC,yBACA,sBACA,qBACA,6PACC,aAGD,+QACC,YACA,kBACA,2BACA,WACA,WACA,kBACA,mDACA,SACA,UAGD,gLACC,WAIA,kPACC,WAGD,+HACC,SAOH,+DAGC,oBACA,kBACA,MACA,WACA,aACA,OC2Ce,KD1Cf,sBACA,8BAID,WACC,cACA,kBACA,kBACA,wBACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mCACC,UAaD,gCACC,8CACA,sDACA,yCACA,sBACA,aACA,kBACA,gBAfD,gBACA,oCAgBC,UACA,SACA,SACA,gBAEA,kDACC,aAID,sCACC,gCACA,iDACA,YACA,YACA,SACA,QACA,kBACA,oBACA,WAGD,uEAEC,iCAzCF,gBACA,oCA4CA,cACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,UACA,QACA,WAEA,gFAGD,kCACC,aACA,mBACA,cAGD,sFAEC,oBACA,mBAGD,0CACC,SACA,mBACA,YAGD,4CACC,yBACA,cAKA,qDAEC,YACA,kBACA,6EACC,aACA,uBACA,mBACA,MC3EY,KD4EZ,YACA,eACA,YACA,UACA,aAEA,yFACC,UAGD,yGACC,aASL,0CACC,YAKD,gBACC,wCACA,eACA,iBACA,SACA,UACA,kBACA,gBACA,uBAEA,cAGD,kBACC,wCACA,kBACA,gBACA,eACA,iBACA,gBACA,uBAID,cACC,kBACA,gBACA,aACA,WACA,SACA,aACA,aACA,eACA,SAEA,2BACC,IC1Ic,KDiJf,gDACC,mBACA,eAED,gJAEC,qBACA,YACA","file":"header.css"}
\ No newline at end of file diff --git a/core/css/header.scss b/core/css/header.scss index a457959bbc9..b2307fce215 100644 --- a/core/css/header.scss +++ b/core/css/header.scss @@ -31,7 +31,7 @@ width: 12px; height: 2px; border-radius: 3px; - background-color: var(--color-primary-text); + background-color: var(--color-primary-element-text); left: 50%; opacity: 1; } @@ -207,7 +207,7 @@ /* TODO: move into minimal css file for public shared template */ /* only used for public share pages now as we have the app icons when logged in */ .header-appname { - color: var(--color-primary-text); + color: var(--color-primary-element-text); font-size: 16px; font-weight: bold; margin: 0; @@ -220,7 +220,7 @@ } .header-shared-by { - color: var(--color-primary-text); + color: var(--color-primary-element-text); position: relative; font-weight: 300; font-size: 11px; diff --git a/core/css/inputs.css b/core/css/inputs.css index bd52bd0ddef..ede71c907ca 100644 --- a/core/css/inputs.css +++ b/core/css/inputs.css @@ -1 +1 @@ -input,textarea,select,button,div[contenteditable=true],div[contenteditable=false]{font-family:var(--font-face)}.select2-container-multi .select2-choices .select2-search-field input,.select2-search input,.ui-widget{font-family:var(--font-face) !important}.select2-container.select2-drop-above .select2-choice{background-image:unset !important}select,button:not(.button-vue,[class^=vs__]),input,textarea,div[contenteditable=true],div[contenteditable=false]{width:130px;min-height:36px;box-sizing:border-box}input:not([type=range]){outline:none}div.select2-drop .select2-search input,input[type=submit],input[type=button],input[type=reset],button:not(.button-vue,[class^=vs__]),.button,.pager li a{margin:3px 3px 3px 0;padding:7px 14px;font-size:13px;background-color:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border-dark);font-size:var(--default-font-size);outline:none;border-radius:var(--border-radius);cursor:text}div.select2-drop .select2-search input:not(:disabled):not(.primary):hover,div.select2-drop .select2-search input:not(:disabled):not(.primary):focus,div.select2-drop .select2-search input:not(:disabled):not(.primary).active,input[type=submit]:not(:disabled):not(.primary):hover,input[type=submit]:not(:disabled):not(.primary):focus,input[type=submit]:not(:disabled):not(.primary).active,input[type=button]:not(:disabled):not(.primary):hover,input[type=button]:not(:disabled):not(.primary):focus,input[type=button]:not(:disabled):not(.primary).active,input[type=reset]:not(:disabled):not(.primary):hover,input[type=reset]:not(:disabled):not(.primary):focus,input[type=reset]:not(:disabled):not(.primary).active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):hover,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary).active,.button:not(:disabled):not(.primary):hover,.button:not(:disabled):not(.primary):focus,.button:not(:disabled):not(.primary).active,.pager li a:not(:disabled):not(.primary):hover,.pager li a:not(:disabled):not(.primary):focus,.pager li a:not(:disabled):not(.primary).active{border-color:var(--color-primary-element);outline:none}div.select2-drop .select2-search input:not(:disabled):not(.primary):active,input[type=submit]:not(:disabled):not(.primary):active,input[type=button]:not(:disabled):not(.primary):active,input[type=reset]:not(:disabled):not(.primary):active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):active,.button:not(:disabled):not(.primary):active,.pager li a:not(:disabled):not(.primary):active{outline:none;background-color:var(--color-main-background);color:var(--color-text-light)}div.select2-drop .select2-search input:not(:disabled):not(.primary):focus-visible,input[type=submit]:not(:disabled):not(.primary):focus-visible,input[type=button]:not(:disabled):not(.primary):focus-visible,input[type=reset]:not(:disabled):not(.primary):focus-visible,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus-visible,.button:not(:disabled):not(.primary):focus-visible,.pager li a:not(:disabled):not(.primary):focus-visible{box-shadow:0 0 0 2px var(--color-primary)}div.select2-drop .select2-search input:disabled,input[type=submit]:disabled,input[type=button]:disabled,input[type=reset]:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,.pager li a:disabled{background-color:var(--color-background-dark);color:var(--color-main-text);cursor:default;opacity:.5}div.select2-drop .select2-search input:required,input[type=submit]:required,input[type=button]:required,input[type=reset]:required,button:not(.button-vue,[class^=vs__]):required,.button:required,.pager li a:required{box-shadow:none}div.select2-drop .select2-search input:user-invalid,input[type=submit]:user-invalid,input[type=button]:user-invalid,input[type=reset]:user-invalid,button:not(.button-vue,[class^=vs__]):user-invalid,.button:user-invalid,.pager li a:user-invalid{box-shadow:0 0 0 2px var(--color-error) !important}div.select2-drop .select2-search input.primary,input[type=submit].primary,input[type=button].primary,input[type=reset].primary,button:not(.button-vue,[class^=vs__]).primary,.button.primary,.pager li a.primary{background-color:var(--color-primary-element);border-color:var(--color-primary-element);color:var(--color-primary-text);cursor:pointer}#body-login :not(.body-login-container) div.select2-drop .select2-search input.primary,#header div.select2-drop .select2-search input.primary,#body-login :not(.body-login-container) input[type=submit].primary,#header input[type=submit].primary,#body-login :not(.body-login-container) input[type=button].primary,#header input[type=button].primary,#body-login :not(.body-login-container) input[type=reset].primary,#header input[type=reset].primary,#body-login :not(.body-login-container) button:not(.button-vue,[class^=vs__]).primary,#header button:not(.button-vue,[class^=vs__]).primary,#body-login :not(.body-login-container) .button.primary,#header .button.primary,#body-login :not(.body-login-container) .pager li a.primary,#header .pager li a.primary{border-color:var(--color-primary-text)}div.select2-drop .select2-search input.primary:not(:disabled):hover,div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):hover,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):hover,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):hover,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):hover,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):hover,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):hover,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):active{background-color:var(--color-primary-element-hover);border-color:var(--color-primary-element-hover)}div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):focus-visible,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):focus-visible,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):focus-visible,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):focus-visible,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus-visible,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):focus-visible,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--color-main-text)}div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):active{color:var(--color-primary-element-text-dark)}div.select2-drop .select2-search input.primary:disabled,input[type=submit].primary:disabled,input[type=button].primary:disabled,input[type=reset].primary:disabled,button:not(.button-vue,[class^=vs__]).primary:disabled,.button.primary:disabled,.pager li a.primary:disabled{background-color:var(--color-primary-element);color:var(--color-primary-element-text-dark);cursor:default}div[contenteditable=false]{margin:3px 3px 3px 0;padding:7px 6px;font-size:13px;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-background-darker);outline:none;border-radius:var(--border-radius);background-color:var(--color-background-dark);color:var(--color-text-lighter);cursor:default;opacity:.5}input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=submit]):not([type=button]):not([type=reset]):not([type=color]):not([type=file]):not([type=image]){-webkit-appearance:textfield;-moz-appearance:textfield;height:36px}input[type=radio],input[type=checkbox],input[type=file],input[type=image]{height:auto;width:auto}input[type=color]{margin:3px;padding:0 2px;min-height:30px;width:40px;cursor:pointer}input[type=hidden]{height:0;width:0}input[type=time]{width:initial}select,button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{padding:8px 14px;font-size:var(--default-font-size);width:auto;min-height:36px;cursor:pointer;box-sizing:border-box;background-color:var(--color-background-dark)}select:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,input[type=button]:disabled,input[type=submit]:disabled,input[type=reset]:disabled{cursor:default}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]),select,div[contenteditable=true],textarea{margin:3px 3px 3px 0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px;outline:none;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):hover,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):active,select:not(:disabled):hover,select:not(:disabled):focus,select:not(:disabled):active,div[contenteditable=true]:not(:disabled):hover,div[contenteditable=true]:not(:disabled):focus,div[contenteditable=true]:not(:disabled):active,textarea:not(:disabled):hover,textarea:not(:disabled):focus,textarea:not(:disabled):active{border-color:var(--color-primary-element)}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,select:not(:disabled):focus,div[contenteditable=true]:not(:disabled):focus,textarea:not(:disabled):focus{cursor:text}.multiselect__input,.select2-input{background-color:var(--color-main-background);color:var(--color-main-text)}textarea,div[contenteditable=true]{padding:12px;height:auto}select{background:var(--icon-triangle-s-dark) no-repeat right 8px center;appearance:none;background-color:var(--color-main-background);padding-right:28px !important}select *,button:not(.button-vue,[class^=vs__]) *,.button *{cursor:pointer}select:disabled *,button:not(.button-vue,[class^=vs__]):disabled *,.button:disabled *{cursor:default}button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{font-weight:bold;border-radius:var(--border-radius-pill)}button:not(.button-vue,[class^=vs__])::-moz-focus-inner,.button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=submit]::-moz-focus-inner,input[type=reset]::-moz-focus-inner{border:0}button:not(.button-vue,[class^=vs__]).error,.button.error,input[type=button].error,input[type=submit].error,input[type=reset].error{background-color:var(--color-error) !important;border-color:var(--color-error) !important;color:#fff !important}button:not(.button-vue,.action-button,[class^=vs__])>span[class^=icon-],button:not(.button-vue,.action-button,[class^=vs__])>span[class*=" icon-"],.button>span[class^=icon-],.button>span[class*=" icon-"]{display:inline-block;vertical-align:text-bottom;opacity:.5}input[type=text]+.icon-confirm,input[type=password]+.icon-confirm,input[type=email]+.icon-confirm{margin-left:-13px !important;border-left-color:rgba(0,0,0,0) !important;border-radius:0 var(--border-radius-large) var(--border-radius-large) 0 !important;border-width:2px;background-clip:padding-box;background-color:var(--color-main-background) !important;opacity:1;height:36px;width:36px;padding:7px 6px;cursor:pointer;margin-right:0}input[type=text]+.icon-confirm:disabled,input[type=password]+.icon-confirm:disabled,input[type=email]+.icon-confirm:disabled{cursor:default;background-image:var(--icon-confirm-fade-dark)}input[type=text]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=password]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=email]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm{border-color:var(--color-error)}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus{border-color:var(--color-primary-element) !important;border-radius:var(--border-radius) !important}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled{border-color:var(--color-background-darker) !important}input[type=text]:active+.icon-confirm,input[type=text]:hover+.icon-confirm,input[type=text]:focus+.icon-confirm,input[type=password]:active+.icon-confirm,input[type=password]:hover+.icon-confirm,input[type=password]:focus+.icon-confirm,input[type=email]:active+.icon-confirm,input[type=email]:hover+.icon-confirm,input[type=email]:focus+.icon-confirm{border-color:var(--color-primary-element) !important;border-left-color:rgba(0,0,0,0) !important;z-index:2}button img,.button img{cursor:pointer}select,.button.multiselect{font-weight:normal}input[type=checkbox].radio,input[type=checkbox].checkbox,input[type=radio].radio,input[type=radio].checkbox{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}input[type=checkbox].radio+label,input[type=checkbox].checkbox+label,input[type=radio].radio+label,input[type=radio].checkbox+label{user-select:none}input[type=checkbox].radio:disabled+label,input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label,input[type=radio].checkbox:disabled+label:before{cursor:default}input[type=checkbox].radio+label:before,input[type=checkbox].checkbox+label:before,input[type=radio].radio+label:before,input[type=radio].checkbox+label:before{content:"";display:inline-block;height:14px;width:14px;vertical-align:middle;border-radius:50%;margin:0 6px 3px 3px;border:1px solid var(--color-text-lighter)}input[type=checkbox].radio:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].radio:focus+label:before,input[type=checkbox].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox:focus+label:before,input[type=radio].radio:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio:focus+label:before,input[type=radio].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox:focus+label:before{border-color:var(--color-primary-element)}input[type=checkbox].radio:focus-visible+label,input[type=checkbox].checkbox:focus-visible+label,input[type=radio].radio:focus-visible+label,input[type=radio].checkbox:focus-visible+label{outline-style:solid;outline-color:var(--color-main-text);outline-width:1px;outline-offset:2px}input[type=checkbox].radio:checked+label:before,input[type=checkbox].radio.checkbox:indeterminate+label:before,input[type=checkbox].checkbox:checked+label:before,input[type=checkbox].checkbox.checkbox:indeterminate+label:before,input[type=radio].radio:checked+label:before,input[type=radio].radio.checkbox:indeterminate+label:before,input[type=radio].checkbox:checked+label:before,input[type=radio].checkbox.checkbox:indeterminate+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:var(--color-primary-element);border-color:var(--color-primary-element)}input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label:before{border:1px solid var(--color-text-lighter);background-color:var(--color-text-maxcontrast) !important}input[type=checkbox].radio:checked:disabled+label:before,input[type=checkbox].checkbox:checked:disabled+label:before,input[type=radio].radio:checked:disabled+label:before,input[type=radio].checkbox:checked:disabled+label:before{background-color:var(--color-text-maxcontrast)}input[type=checkbox].radio+label~em,input[type=checkbox].checkbox+label~em,input[type=radio].radio+label~em,input[type=radio].checkbox+label~em{display:inline-block;margin-left:25px}input[type=checkbox].radio+label~em:last-of-type,input[type=checkbox].checkbox+label~em:last-of-type,input[type=radio].radio+label~em:last-of-type,input[type=radio].checkbox+label~em:last-of-type{margin-bottom:14px}input[type=checkbox].checkbox+label:before,input[type=radio].checkbox+label:before{border-radius:1px;height:14px;width:14px;box-shadow:none !important;background-position:center}input[type=checkbox].checkbox:checked+label:before,input[type=radio].checkbox:checked+label:before{background-image:url("../img/actions/checkbox-mark.svg")}input[type=checkbox].checkbox:indeterminate+label:before,input[type=radio].checkbox:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed.svg")}input[type=checkbox].radio--white+label:before,input[type=checkbox].radio--white:focus+label:before,input[type=checkbox].checkbox--white+label:before,input[type=checkbox].checkbox--white:focus+label:before,input[type=radio].radio--white+label:before,input[type=radio].radio--white:focus+label:before,input[type=radio].checkbox--white+label:before,input[type=radio].checkbox--white:focus+label:before{border-color:#bababa}input[type=checkbox].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox--white:not(:disabled):not(:checked)+label:hover:before{border-color:#fff}input[type=checkbox].radio--white:checked+label:before,input[type=checkbox].checkbox--white:checked+label:before,input[type=radio].radio--white:checked+label:before,input[type=radio].checkbox--white:checked+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:#dbdbdb;border-color:#dbdbdb}input[type=checkbox].radio--white:disabled+label:before,input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].radio--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{background-color:#bababa !important;border-color:rgba(255,255,255,.4) !important}input[type=checkbox].radio--white:checked:disabled+label:before,input[type=checkbox].checkbox--white:checked:disabled+label:before,input[type=radio].radio--white:checked:disabled+label:before,input[type=radio].checkbox--white:checked:disabled+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);border-color:rgba(255,255,255,.4) !important;background-color:#bababa}input[type=checkbox].checkbox--white:checked+label:before,input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:checked+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-color:rgba(0,0,0,0) !important;border-color:#fff !important;background-image:url("../img/actions/checkbox-mark-white.svg")}input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed-white.svg")}input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{opacity:.7}div.select2-drop{margin-top:-2px;background-color:var(--color-main-background)}div.select2-drop.select2-drop-active{border-color:var(--color-border-dark)}div.select2-drop .avatar{display:inline-block;margin-right:8px;vertical-align:middle}div.select2-drop .avatar img{cursor:pointer}div.select2-drop .select2-search input{min-height:auto;background:var(--icon-search-dark) no-repeat right center !important;background-origin:content-box !important}div.select2-drop .select2-results{max-height:250px;margin:0;padding:0}div.select2-drop .select2-results .select2-result-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.select2-drop .select2-results .select2-result-label span{cursor:pointer}div.select2-drop .select2-results .select2-result-label span em{cursor:inherit;background:unset}div.select2-drop .select2-results .select2-result,div.select2-drop .select2-results .select2-no-results,div.select2-drop .select2-results .select2-searching{position:relative;display:list-item;padding:12px;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}div.select2-drop .select2-results .select2-result.select2-selected{background-color:var(--color-background-dark)}div.select2-drop .select2-results .select2-highlighted{background-color:var(--color-background-dark);color:var(--color-main-text)}.select2-chosen .avatar,.select2-chosen .avatar img,#select2-drop .avatar,#select2-drop .avatar img{cursor:pointer}div.select2-container-multi .select2-choices,div.select2-container-multi.select2-container-active .select2-choices{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px;min-height:44px}div.select2-container-multi .select2-choices:focus-within,div.select2-container-multi.select2-container-active .select2-choices:focus-within{border-color:var(--color-primary)}div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{line-height:20px;padding-left:5px}div.select2-container-multi .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi .select2-choices .select2-search-choice:hover,div.select2-container-multi .select2-choices .select2-search-choice:active,div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:hover,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark)}div.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice .select2-search-choice-close{display:none}div.select2-container-multi .select2-choices .select2-search-field input,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input{line-height:20px;min-height:28px;max-height:28px;color:var(--color-main-text)}div.select2-container-multi .select2-choices .select2-search-field input.select2-active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input.select2-active{background:none !important}div.select2-container{margin:3px 3px 3px 0}div.select2-container.select2-container-multi .select2-choices{display:flex;flex-wrap:wrap}div.select2-container.select2-container-multi .select2-choices li{float:none}div.select2-container a.select2-choice{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px 12px;min-height:44px}div.select2-container a.select2-choice:focus-within{border-color:var(--color-primary)}div.select2-container a.select2-choice .select2-search-choice{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-background-dark);border-color:var(--color-background-dark)}div.select2-container a.select2-choice .select2-search-choice .select2-search-choice-close{display:none}div.select2-container a.select2-choice .select2-search-choice.select2-search-choice-focus,div.select2-container a.select2-choice .select2-search-choice:hover{background-color:var(--color-border);border-color:var(--color-border)}div.select2-container a.select2-choice .select2-arrow{background:none;border-radius:0;border:none}div.select2-container a.select2-choice .select2-arrow b{background:var(--icon-triangle-s-dark) no-repeat center !important;opacity:.5}div.select2-container a.select2-choice:hover .select2-arrow b,div.select2-container a.select2-choice:focus .select2-arrow b,div.select2-container a.select2-choice:active .select2-arrow b{opacity:.7}div.select2-container a.select2-choice .select2-search-field input{line-height:20px}.v-select{margin:3px 3px 3px 0;display:inline-block}.v-select .dropdown-toggle{display:flex !important;flex-wrap:wrap}.v-select .dropdown-toggle .selected-tag{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center}.v-select .dropdown-toggle .selected-tag .close{margin-left:3px}.v-select .dropdown-menu{padding:0}.v-select .dropdown-menu li{padding:5px;position:relative;display:list-item;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}.v-select .dropdown-menu li a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:25px;padding:3px 7px 4px 2px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:rgba(0,0,0,0) !important;color:inherit !important}.v-select .dropdown-menu li a::before{content:" ";background-image:var(--icon-checkmark-dark);background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.v-select .dropdown-menu li.highlight{color:var(--color-main-text)}.v-select .dropdown-menu li.active>a{background-color:var(--color-background-dark);color:var(--color-main-text)}.v-select .dropdown-menu li.active>a::before{visibility:visible}progress:not(.vue){display:block;width:100%;padding:0;border:0 none;background-color:var(--color-background-dark);border-radius:var(--border-radius);flex-basis:100%;height:5px;overflow:hidden}progress:not(.vue).warn::-moz-progress-bar{background:var(--color-error)}progress:not(.vue).warn::-webkit-progress-value{background:var(--color-error)}progress:not(.vue)::-webkit-progress-bar{background:rgba(0,0,0,0)}progress:not(.vue)::-moz-progress-bar{border-radius:var(--border-radius);background:var(--color-primary);transition:250ms all ease-in-out}progress:not(.vue)::-webkit-progress-value{border-radius:var(--border-radius);background:var(--color-primary);transition:250ms all ease-in-out}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.shake{animation-name:shake;animation-duration:.7s;animation-timing-function:ease-out}label.infield{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}::placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-ms-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-webkit-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}/*# sourceMappingURL=inputs.css.map */ +input,textarea,select,button,div[contenteditable=true],div[contenteditable=false]{font-family:var(--font-face)}.select2-container-multi .select2-choices .select2-search-field input,.select2-search input,.ui-widget{font-family:var(--font-face) !important}.select2-container.select2-drop-above .select2-choice{background-image:unset !important}select,button:not(.button-vue,[class^=vs__]),input,textarea,div[contenteditable=true],div[contenteditable=false]{width:130px;min-height:36px;box-sizing:border-box}input:not([type=range]){outline:none}div.select2-drop .select2-search input,input[type=submit],input[type=button],input[type=reset],button:not(.button-vue,[class^=vs__]),.button,.pager li a{margin:3px 3px 3px 0;padding:7px 14px;font-size:13px;background-color:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border-dark);font-size:var(--default-font-size);outline:none;border-radius:var(--border-radius);cursor:text}div.select2-drop .select2-search input:not(:disabled):not(.primary):hover,div.select2-drop .select2-search input:not(:disabled):not(.primary):focus,div.select2-drop .select2-search input:not(:disabled):not(.primary).active,input[type=submit]:not(:disabled):not(.primary):hover,input[type=submit]:not(:disabled):not(.primary):focus,input[type=submit]:not(:disabled):not(.primary).active,input[type=button]:not(:disabled):not(.primary):hover,input[type=button]:not(:disabled):not(.primary):focus,input[type=button]:not(:disabled):not(.primary).active,input[type=reset]:not(:disabled):not(.primary):hover,input[type=reset]:not(:disabled):not(.primary):focus,input[type=reset]:not(:disabled):not(.primary).active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):hover,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary).active,.button:not(:disabled):not(.primary):hover,.button:not(:disabled):not(.primary):focus,.button:not(:disabled):not(.primary).active,.pager li a:not(:disabled):not(.primary):hover,.pager li a:not(:disabled):not(.primary):focus,.pager li a:not(:disabled):not(.primary).active{border-color:var(--color-primary-element);outline:none}div.select2-drop .select2-search input:not(:disabled):not(.primary):active,input[type=submit]:not(:disabled):not(.primary):active,input[type=button]:not(:disabled):not(.primary):active,input[type=reset]:not(:disabled):not(.primary):active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):active,.button:not(:disabled):not(.primary):active,.pager li a:not(:disabled):not(.primary):active{outline:none;background-color:var(--color-main-background);color:var(--color-text-light)}div.select2-drop .select2-search input:not(:disabled):not(.primary):focus-visible,input[type=submit]:not(:disabled):not(.primary):focus-visible,input[type=button]:not(:disabled):not(.primary):focus-visible,input[type=reset]:not(:disabled):not(.primary):focus-visible,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus-visible,.button:not(:disabled):not(.primary):focus-visible,.pager li a:not(:disabled):not(.primary):focus-visible{box-shadow:0 0 0 2px var(--color-primary-element)}div.select2-drop .select2-search input:disabled,input[type=submit]:disabled,input[type=button]:disabled,input[type=reset]:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,.pager li a:disabled{background-color:var(--color-background-dark);color:var(--color-main-text);cursor:default;opacity:.5}div.select2-drop .select2-search input:required,input[type=submit]:required,input[type=button]:required,input[type=reset]:required,button:not(.button-vue,[class^=vs__]):required,.button:required,.pager li a:required{box-shadow:none}div.select2-drop .select2-search input:user-invalid,input[type=submit]:user-invalid,input[type=button]:user-invalid,input[type=reset]:user-invalid,button:not(.button-vue,[class^=vs__]):user-invalid,.button:user-invalid,.pager li a:user-invalid{box-shadow:0 0 0 2px var(--color-error) !important}div.select2-drop .select2-search input.primary,input[type=submit].primary,input[type=button].primary,input[type=reset].primary,button:not(.button-vue,[class^=vs__]).primary,.button.primary,.pager li a.primary{background-color:var(--color-primary-element);border-color:var(--color-primary-element);color:var(--color-primary-element-text);cursor:pointer}#body-login :not(.body-login-container) div.select2-drop .select2-search input.primary,#header div.select2-drop .select2-search input.primary,#body-login :not(.body-login-container) input[type=submit].primary,#header input[type=submit].primary,#body-login :not(.body-login-container) input[type=button].primary,#header input[type=button].primary,#body-login :not(.body-login-container) input[type=reset].primary,#header input[type=reset].primary,#body-login :not(.body-login-container) button:not(.button-vue,[class^=vs__]).primary,#header button:not(.button-vue,[class^=vs__]).primary,#body-login :not(.body-login-container) .button.primary,#header .button.primary,#body-login :not(.body-login-container) .pager li a.primary,#header .pager li a.primary{border-color:var(--color-primary-element-text)}div.select2-drop .select2-search input.primary:not(:disabled):hover,div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):hover,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):hover,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):hover,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):hover,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):hover,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):hover,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):active{background-color:var(--color-primary-element-hover);border-color:var(--color-primary-element-hover)}div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):focus-visible,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):focus-visible,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):focus-visible,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):focus-visible,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus-visible,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):focus-visible,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--color-main-text)}div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):active{color:var(--color-primary-element-text-dark)}div.select2-drop .select2-search input.primary:disabled,input[type=submit].primary:disabled,input[type=button].primary:disabled,input[type=reset].primary:disabled,button:not(.button-vue,[class^=vs__]).primary:disabled,.button.primary:disabled,.pager li a.primary:disabled{background-color:var(--color-primary-element);color:var(--color-primary-element-text-dark);cursor:default}div[contenteditable=false]{margin:3px 3px 3px 0;padding:7px 6px;font-size:13px;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-background-darker);outline:none;border-radius:var(--border-radius);background-color:var(--color-background-dark);color:var(--color-text-lighter);cursor:default;opacity:.5}input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=submit]):not([type=button]):not([type=reset]):not([type=color]):not([type=file]):not([type=image]){-webkit-appearance:textfield;-moz-appearance:textfield;height:36px}input[type=radio],input[type=checkbox],input[type=file],input[type=image]{height:auto;width:auto}input[type=color]{margin:3px;padding:0 2px;min-height:30px;width:40px;cursor:pointer}input[type=hidden]{height:0;width:0}input[type=time]{width:initial}select,button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{padding:8px 14px;font-size:var(--default-font-size);width:auto;min-height:36px;cursor:pointer;box-sizing:border-box;background-color:var(--color-background-dark)}select:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,input[type=button]:disabled,input[type=submit]:disabled,input[type=reset]:disabled{cursor:default}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]),select,div[contenteditable=true],textarea{margin:3px 3px 3px 0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px;outline:none;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):hover,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):active,select:not(:disabled):hover,select:not(:disabled):focus,select:not(:disabled):active,div[contenteditable=true]:not(:disabled):hover,div[contenteditable=true]:not(:disabled):focus,div[contenteditable=true]:not(:disabled):active,textarea:not(:disabled):hover,textarea:not(:disabled):focus,textarea:not(:disabled):active{border-color:var(--color-primary-element)}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,select:not(:disabled):focus,div[contenteditable=true]:not(:disabled):focus,textarea:not(:disabled):focus{cursor:text}.multiselect__input,.select2-input{background-color:var(--color-main-background);color:var(--color-main-text)}textarea,div[contenteditable=true]{padding:12px;height:auto}select{background:var(--icon-triangle-s-dark) no-repeat right 8px center;appearance:none;background-color:var(--color-main-background);padding-right:28px !important}select *,button:not(.button-vue,[class^=vs__]) *,.button *{cursor:pointer}select:disabled *,button:not(.button-vue,[class^=vs__]):disabled *,.button:disabled *{cursor:default}button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{font-weight:bold;border-radius:var(--border-radius-pill)}button:not(.button-vue,[class^=vs__])::-moz-focus-inner,.button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=submit]::-moz-focus-inner,input[type=reset]::-moz-focus-inner{border:0}button:not(.button-vue,[class^=vs__]).error,.button.error,input[type=button].error,input[type=submit].error,input[type=reset].error{background-color:var(--color-error) !important;border-color:var(--color-error) !important;color:#fff !important}button:not(.button-vue,.action-button,[class^=vs__])>span[class^=icon-],button:not(.button-vue,.action-button,[class^=vs__])>span[class*=" icon-"],.button>span[class^=icon-],.button>span[class*=" icon-"]{display:inline-block;vertical-align:text-bottom;opacity:.5}input[type=text]+.icon-confirm,input[type=password]+.icon-confirm,input[type=email]+.icon-confirm{margin-left:-13px !important;border-left-color:rgba(0,0,0,0) !important;border-radius:0 var(--border-radius-large) var(--border-radius-large) 0 !important;border-width:2px;background-clip:padding-box;background-color:var(--color-main-background) !important;opacity:1;height:36px;width:36px;padding:7px 6px;cursor:pointer;margin-right:0}input[type=text]+.icon-confirm:disabled,input[type=password]+.icon-confirm:disabled,input[type=email]+.icon-confirm:disabled{cursor:default;background-image:var(--icon-confirm-fade-dark)}input[type=text]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=password]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=email]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm{border-color:var(--color-error)}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus{border-color:var(--color-primary-element) !important;border-radius:var(--border-radius) !important}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled{border-color:var(--color-background-darker) !important}input[type=text]:active+.icon-confirm,input[type=text]:hover+.icon-confirm,input[type=text]:focus+.icon-confirm,input[type=password]:active+.icon-confirm,input[type=password]:hover+.icon-confirm,input[type=password]:focus+.icon-confirm,input[type=email]:active+.icon-confirm,input[type=email]:hover+.icon-confirm,input[type=email]:focus+.icon-confirm{border-color:var(--color-primary-element) !important;border-left-color:rgba(0,0,0,0) !important;z-index:2}button img,.button img{cursor:pointer}select,.button.multiselect{font-weight:normal}input[type=checkbox].radio,input[type=checkbox].checkbox,input[type=radio].radio,input[type=radio].checkbox{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}input[type=checkbox].radio+label,input[type=checkbox].checkbox+label,input[type=radio].radio+label,input[type=radio].checkbox+label{user-select:none}input[type=checkbox].radio:disabled+label,input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label,input[type=radio].checkbox:disabled+label:before{cursor:default}input[type=checkbox].radio+label:before,input[type=checkbox].checkbox+label:before,input[type=radio].radio+label:before,input[type=radio].checkbox+label:before{content:"";display:inline-block;height:14px;width:14px;vertical-align:middle;border-radius:50%;margin:0 6px 3px 3px;border:1px solid var(--color-text-lighter)}input[type=checkbox].radio:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].radio:focus+label:before,input[type=checkbox].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox:focus+label:before,input[type=radio].radio:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio:focus+label:before,input[type=radio].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox:focus+label:before{border-color:var(--color-primary-element)}input[type=checkbox].radio:focus-visible+label,input[type=checkbox].checkbox:focus-visible+label,input[type=radio].radio:focus-visible+label,input[type=radio].checkbox:focus-visible+label{outline-style:solid;outline-color:var(--color-main-text);outline-width:1px;outline-offset:2px}input[type=checkbox].radio:checked+label:before,input[type=checkbox].radio.checkbox:indeterminate+label:before,input[type=checkbox].checkbox:checked+label:before,input[type=checkbox].checkbox.checkbox:indeterminate+label:before,input[type=radio].radio:checked+label:before,input[type=radio].radio.checkbox:indeterminate+label:before,input[type=radio].checkbox:checked+label:before,input[type=radio].checkbox.checkbox:indeterminate+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:var(--color-primary-element);border-color:var(--color-primary-element)}input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label:before{border:1px solid var(--color-text-lighter);background-color:var(--color-text-maxcontrast) !important}input[type=checkbox].radio:checked:disabled+label:before,input[type=checkbox].checkbox:checked:disabled+label:before,input[type=radio].radio:checked:disabled+label:before,input[type=radio].checkbox:checked:disabled+label:before{background-color:var(--color-text-maxcontrast)}input[type=checkbox].radio+label~em,input[type=checkbox].checkbox+label~em,input[type=radio].radio+label~em,input[type=radio].checkbox+label~em{display:inline-block;margin-left:25px}input[type=checkbox].radio+label~em:last-of-type,input[type=checkbox].checkbox+label~em:last-of-type,input[type=radio].radio+label~em:last-of-type,input[type=radio].checkbox+label~em:last-of-type{margin-bottom:14px}input[type=checkbox].checkbox+label:before,input[type=radio].checkbox+label:before{border-radius:1px;height:14px;width:14px;box-shadow:none !important;background-position:center}input[type=checkbox].checkbox:checked+label:before,input[type=radio].checkbox:checked+label:before{background-image:url("../img/actions/checkbox-mark.svg")}input[type=checkbox].checkbox:indeterminate+label:before,input[type=radio].checkbox:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed.svg")}input[type=checkbox].radio--white+label:before,input[type=checkbox].radio--white:focus+label:before,input[type=checkbox].checkbox--white+label:before,input[type=checkbox].checkbox--white:focus+label:before,input[type=radio].radio--white+label:before,input[type=radio].radio--white:focus+label:before,input[type=radio].checkbox--white+label:before,input[type=radio].checkbox--white:focus+label:before{border-color:#bababa}input[type=checkbox].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox--white:not(:disabled):not(:checked)+label:hover:before{border-color:#fff}input[type=checkbox].radio--white:checked+label:before,input[type=checkbox].checkbox--white:checked+label:before,input[type=radio].radio--white:checked+label:before,input[type=radio].checkbox--white:checked+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:#dbdbdb;border-color:#dbdbdb}input[type=checkbox].radio--white:disabled+label:before,input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].radio--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{background-color:#bababa !important;border-color:rgba(255,255,255,.4) !important}input[type=checkbox].radio--white:checked:disabled+label:before,input[type=checkbox].checkbox--white:checked:disabled+label:before,input[type=radio].radio--white:checked:disabled+label:before,input[type=radio].checkbox--white:checked:disabled+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);border-color:rgba(255,255,255,.4) !important;background-color:#bababa}input[type=checkbox].checkbox--white:checked+label:before,input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:checked+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-color:rgba(0,0,0,0) !important;border-color:#fff !important;background-image:url("../img/actions/checkbox-mark-white.svg")}input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed-white.svg")}input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{opacity:.7}div.select2-drop{margin-top:-2px;background-color:var(--color-main-background)}div.select2-drop.select2-drop-active{border-color:var(--color-border-dark)}div.select2-drop .avatar{display:inline-block;margin-right:8px;vertical-align:middle}div.select2-drop .avatar img{cursor:pointer}div.select2-drop .select2-search input{min-height:auto;background:var(--icon-search-dark) no-repeat right center !important;background-origin:content-box !important}div.select2-drop .select2-results{max-height:250px;margin:0;padding:0}div.select2-drop .select2-results .select2-result-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.select2-drop .select2-results .select2-result-label span{cursor:pointer}div.select2-drop .select2-results .select2-result-label span em{cursor:inherit;background:unset}div.select2-drop .select2-results .select2-result,div.select2-drop .select2-results .select2-no-results,div.select2-drop .select2-results .select2-searching{position:relative;display:list-item;padding:12px;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}div.select2-drop .select2-results .select2-result.select2-selected{background-color:var(--color-background-dark)}div.select2-drop .select2-results .select2-highlighted{background-color:var(--color-background-dark);color:var(--color-main-text)}.select2-chosen .avatar,.select2-chosen .avatar img,#select2-drop .avatar,#select2-drop .avatar img{cursor:pointer}div.select2-container-multi .select2-choices,div.select2-container-multi.select2-container-active .select2-choices{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px;min-height:44px}div.select2-container-multi .select2-choices:focus-within,div.select2-container-multi.select2-container-active .select2-choices:focus-within{border-color:var(--color-primary-element)}div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{line-height:20px;padding-left:5px}div.select2-container-multi .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi .select2-choices .select2-search-choice:hover,div.select2-container-multi .select2-choices .select2-search-choice:active,div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:hover,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark)}div.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice .select2-search-choice-close{display:none}div.select2-container-multi .select2-choices .select2-search-field input,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input{line-height:20px;min-height:28px;max-height:28px;color:var(--color-main-text)}div.select2-container-multi .select2-choices .select2-search-field input.select2-active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input.select2-active{background:none !important}div.select2-container{margin:3px 3px 3px 0}div.select2-container.select2-container-multi .select2-choices{display:flex;flex-wrap:wrap}div.select2-container.select2-container-multi .select2-choices li{float:none}div.select2-container a.select2-choice{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px 12px;min-height:44px}div.select2-container a.select2-choice:focus-within{border-color:var(--color-primary-element)}div.select2-container a.select2-choice .select2-search-choice{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-background-dark);border-color:var(--color-background-dark)}div.select2-container a.select2-choice .select2-search-choice .select2-search-choice-close{display:none}div.select2-container a.select2-choice .select2-search-choice.select2-search-choice-focus,div.select2-container a.select2-choice .select2-search-choice:hover{background-color:var(--color-border);border-color:var(--color-border)}div.select2-container a.select2-choice .select2-arrow{background:none;border-radius:0;border:none}div.select2-container a.select2-choice .select2-arrow b{background:var(--icon-triangle-s-dark) no-repeat center !important;opacity:.5}div.select2-container a.select2-choice:hover .select2-arrow b,div.select2-container a.select2-choice:focus .select2-arrow b,div.select2-container a.select2-choice:active .select2-arrow b{opacity:.7}div.select2-container a.select2-choice .select2-search-field input{line-height:20px}.v-select{margin:3px 3px 3px 0;display:inline-block}.v-select .dropdown-toggle{display:flex !important;flex-wrap:wrap}.v-select .dropdown-toggle .selected-tag{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center}.v-select .dropdown-toggle .selected-tag .close{margin-left:3px}.v-select .dropdown-menu{padding:0}.v-select .dropdown-menu li{padding:5px;position:relative;display:list-item;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}.v-select .dropdown-menu li a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:25px;padding:3px 7px 4px 2px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:rgba(0,0,0,0) !important;color:inherit !important}.v-select .dropdown-menu li a::before{content:" ";background-image:var(--icon-checkmark-dark);background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.v-select .dropdown-menu li.highlight{color:var(--color-main-text)}.v-select .dropdown-menu li.active>a{background-color:var(--color-background-dark);color:var(--color-main-text)}.v-select .dropdown-menu li.active>a::before{visibility:visible}progress:not(.vue){display:block;width:100%;padding:0;border:0 none;background-color:var(--color-background-dark);border-radius:var(--border-radius);flex-basis:100%;height:5px;overflow:hidden}progress:not(.vue).warn::-moz-progress-bar{background:var(--color-error)}progress:not(.vue).warn::-webkit-progress-value{background:var(--color-error)}progress:not(.vue)::-webkit-progress-bar{background:rgba(0,0,0,0)}progress:not(.vue)::-moz-progress-bar{border-radius:var(--border-radius);background:var(--color-primary-element);transition:250ms all ease-in-out}progress:not(.vue)::-webkit-progress-value{border-radius:var(--border-radius);background:var(--color-primary-element);transition:250ms all ease-in-out}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.shake{animation-name:shake;animation-duration:.7s;animation-timing-function:ease-out}label.infield{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}::placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-ms-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-webkit-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}/*# sourceMappingURL=inputs.css.map */ diff --git a/core/css/inputs.css.map b/core/css/inputs.css.map index 47a7fffbc16..50b33647b3d 100644 --- a/core/css/inputs.css.map +++ b/core/css/inputs.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["inputs.scss","functions.scss"],"names":[],"mappings":"AAiBA,kFACC,6BAED,uGACC,wCAED,sDACI,kCAMJ,iHAUC,YACA,WAdgB,KAehB,sBASD,wBACI,aAIJ,yJAUC,qBACA,iBACA,eACA,8CACA,6BACA,0CACA,mCACA,aACA,mCACA,YAEC,irCAIC,0CACA,aAED,qZACC,aACA,8CACA,8BAED,scACC,0CAGF,wNACC,8CACA,6BACA,eACA,WAED,wNACC,gBAED,oPACC,mDAGD,iNACC,8CACA,0CACA,gCACA,eAGA,kvBAEC,uCAIA,mjCAGC,oDACA,gDAED,gwBAEC,4CAED,2WACC,6CAGF,gRAEC,8CACA,6CACA,eAKH,2BACC,qBACA,gBACA,eACA,8CACA,gCACA,gDACA,aACA,mCAEA,8CACA,gCACA,eACA,WAKA,4KACC,6BACA,0BAEA,OAzIe,KA2IhB,0EAIC,YACA,WAID,kBACC,WACA,cACA,gBACA,WACA,eAED,mBACC,SACA,QAED,iBACC,cAKF,6GASC,iBACA,mCACA,WACA,WAjLgB,KAkLhB,eACA,sBACA,8CAEA,mKACC,eAIF,qMAcC,qBACA,eACA,mCACA,8CACA,6BACA,iDACA,YACA,aACA,yCACA,uBACA,eACA,+0BACC,0CAED,yRACC,YAIF,mCACC,8CACA,6BAGD,mCACC,aACA,YAID,OACC,kEACA,gBACA,8CACA,8BASA,2DACC,eAIA,sFACC,eAMH,sGAQC,iBACA,wCAGA,gMACC,SAGD,oIACC,+CACA,2CACA,sBAWA,4MAEC,qBACA,2BACA,WAUD,kGACC,6BACA,2CACA,mFACA,iBACA,4BAEA,yDACA,UACA,OArTc,KAsTd,MAtTc,KAuTd,gBACA,eACA,eACA,6HACC,eCrRH,+CD6RG,yOACC,gCAID,4qBAGC,qDACA,8CACA,6vBACC,uDAQH,+VACC,qDACA,2CAEA,UAQJ,uBAEC,eAED,2BAEC,mBAUC,4GAEC,kBACA,cACA,SACA,UACA,WACA,gBACA,oIACC,iBAED,4WAEC,eAED,gKACC,WACA,qBACA,OAxBkB,KAyBlB,MAzBkB,KA0BlB,sBACA,kBACA,qBACA,2CAED,oeAEC,0CAED,4LACC,oBACA,qCACA,kBACA,mBAED,4bAIC,8DACA,8CACA,0CAED,oMACC,2CACA,0DAED,oOACC,+CAID,gJACC,qBACA,iBAED,oMACC,cA/DkB,KAmEnB,mFACC,kBACA,OArEkB,KAsElB,MAtEkB,KAuElB,2BACA,2BAED,mGACC,yDAED,+GACC,0DAOD,gZAEC,qBAED,wUACC,aAzFyB,KA2F1B,4NACC,8DACA,yBACA,qBAED,gOACC,oCACA,6CAED,gQACC,8DACA,6CACA,yBAID,8OAEC,0CACA,6BACA,+DAED,6HACC,gEAED,mHACC,WAOJ,iBACC,gBACA,8CACA,qCACC,sCAED,yBACC,qBACA,iBACA,sBACA,6BACC,eAGF,uCACC,gBACA,qEACA,yCAED,kCACC,iBACA,SACA,UACA,wDACC,mBACA,gBACA,uBACA,6DACC,eACA,gEACC,eACA,iBAIH,6JAGC,kBACA,kBACA,aACA,+BACA,eACA,gCAGA,mEACC,8CAGF,uDACE,8CACA,6BAMH,oGAEC,eAID,mHAEC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,YACA,gBACA,6IACC,kCAED,iKACC,iBACA,iBACA,stBAIC,sBACA,8CACA,gCACA,0CAED,2NACC,aAGF,2KACC,iBACA,gBACA,gBACA,6BACA,yMACC,2BAKJ,sBACC,qBACA,+DACC,aACA,eACA,kEACC,WAGF,uCACC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,iBACA,gBACA,oDACC,kCAED,8DACC,iBACA,iBACA,sBACA,8CACA,0CACA,2FACC,aAED,8JAEC,qCACA,iCAGF,sDACC,gBACA,gBACA,YACA,wDACC,mEACA,WAGF,2LAGC,WAED,mEACC,iBAMH,UACC,qBACA,qBACA,2BACC,wBACA,eACA,yCACC,iBACA,iBACA,sBACA,8CACA,gCACA,0CACA,oBACA,mBACA,gDACC,gBAIH,yBACC,UACA,4BACC,YACA,kBACA,kBACA,+BACA,eACA,gCACA,8BACC,mBACA,gBACA,uBACA,YACA,wBACA,SACA,eACA,eACA,2BACA,yBACA,sBACA,qBACA,iBACA,oBACA,mBACA,0CACA,yBACA,sCACC,YACA,4CACA,4BACA,2BACA,eACA,gBACA,cACA,WACA,iBACA,kBAGF,sCACC,6BAED,qCACC,8CACA,6BACA,6CACC,mBAQL,mBACC,cACA,WACA,UACA,cACA,8CACA,mCACA,gBACA,WACA,gBAEC,2CACC,8BAED,gDACC,8BAGF,yCACC,yBAED,sCACC,mCACA,gCACA,iCAED,2CACC,mCACA,gCACA,iCAKF,iBACC,QAEC,0BAED,QAEC,yBAED,YAGC,0BAED,QAEC,0BAGF,OACC,qBACA,uBACA,mCAKD,cACC,kBACA,cACA,aACA,UACA,WACA,gBAWD,cAJC,oCACA,mCAOD,wBARC,oCACA,mCAWD,4BAZC,oCACA","file":"inputs.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["inputs.scss","functions.scss"],"names":[],"mappings":"AAiBA,kFACC,6BAED,uGACC,wCAED,sDACI,kCAMJ,iHAUC,YACA,WAdgB,KAehB,sBASD,wBACI,aAIJ,yJAUC,qBACA,iBACA,eACA,8CACA,6BACA,0CACA,mCACA,aACA,mCACA,YAEC,irCAIC,0CACA,aAED,qZACC,aACA,8CACA,8BAED,scACC,kDAGF,wNACC,8CACA,6BACA,eACA,WAED,wNACC,gBAED,oPACC,mDAGD,iNACC,8CACA,0CACA,wCACA,eAGA,kvBAEC,+CAIA,mjCAGC,oDACA,gDAED,gwBAEC,4CAED,2WACC,6CAGF,gRAEC,8CACA,6CACA,eAKH,2BACC,qBACA,gBACA,eACA,8CACA,gCACA,gDACA,aACA,mCAEA,8CACA,gCACA,eACA,WAKA,4KACC,6BACA,0BAEA,OAzIe,KA2IhB,0EAIC,YACA,WAID,kBACC,WACA,cACA,gBACA,WACA,eAED,mBACC,SACA,QAED,iBACC,cAKF,6GASC,iBACA,mCACA,WACA,WAjLgB,KAkLhB,eACA,sBACA,8CAEA,mKACC,eAIF,qMAcC,qBACA,eACA,mCACA,8CACA,6BACA,iDACA,YACA,aACA,yCACA,uBACA,eACA,+0BACC,0CAED,yRACC,YAIF,mCACC,8CACA,6BAGD,mCACC,aACA,YAID,OACC,kEACA,gBACA,8CACA,8BASA,2DACC,eAIA,sFACC,eAMH,sGAQC,iBACA,wCAGA,gMACC,SAGD,oIACC,+CACA,2CACA,sBAWA,4MAEC,qBACA,2BACA,WAUD,kGACC,6BACA,2CACA,mFACA,iBACA,4BAEA,yDACA,UACA,OArTc,KAsTd,MAtTc,KAuTd,gBACA,eACA,eACA,6HACC,eCrRH,+CD6RG,yOACC,gCAID,4qBAGC,qDACA,8CACA,6vBACC,uDAQH,+VACC,qDACA,2CAEA,UAQJ,uBAEC,eAED,2BAEC,mBAUC,4GAEC,kBACA,cACA,SACA,UACA,WACA,gBACA,oIACC,iBAED,4WAEC,eAED,gKACC,WACA,qBACA,OAxBkB,KAyBlB,MAzBkB,KA0BlB,sBACA,kBACA,qBACA,2CAED,oeAEC,0CAED,4LACC,oBACA,qCACA,kBACA,mBAED,4bAIC,8DACA,8CACA,0CAED,oMACC,2CACA,0DAED,oOACC,+CAID,gJACC,qBACA,iBAED,oMACC,cA/DkB,KAmEnB,mFACC,kBACA,OArEkB,KAsElB,MAtEkB,KAuElB,2BACA,2BAED,mGACC,yDAED,+GACC,0DAOD,gZAEC,qBAED,wUACC,aAzFyB,KA2F1B,4NACC,8DACA,yBACA,qBAED,gOACC,oCACA,6CAED,gQACC,8DACA,6CACA,yBAID,8OAEC,0CACA,6BACA,+DAED,6HACC,gEAED,mHACC,WAOJ,iBACC,gBACA,8CACA,qCACC,sCAED,yBACC,qBACA,iBACA,sBACA,6BACC,eAGF,uCACC,gBACA,qEACA,yCAED,kCACC,iBACA,SACA,UACA,wDACC,mBACA,gBACA,uBACA,6DACC,eACA,gEACC,eACA,iBAIH,6JAGC,kBACA,kBACA,aACA,+BACA,eACA,gCAGA,mEACC,8CAGF,uDACE,8CACA,6BAMH,oGAEC,eAID,mHAEC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,YACA,gBACA,6IACC,0CAED,iKACC,iBACA,iBACA,stBAIC,sBACA,8CACA,gCACA,0CAED,2NACC,aAGF,2KACC,iBACA,gBACA,gBACA,6BACA,yMACC,2BAKJ,sBACC,qBACA,+DACC,aACA,eACA,kEACC,WAGF,uCACC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,iBACA,gBACA,oDACC,0CAED,8DACC,iBACA,iBACA,sBACA,8CACA,0CACA,2FACC,aAED,8JAEC,qCACA,iCAGF,sDACC,gBACA,gBACA,YACA,wDACC,mEACA,WAGF,2LAGC,WAED,mEACC,iBAMH,UACC,qBACA,qBACA,2BACC,wBACA,eACA,yCACC,iBACA,iBACA,sBACA,8CACA,gCACA,0CACA,oBACA,mBACA,gDACC,gBAIH,yBACC,UACA,4BACC,YACA,kBACA,kBACA,+BACA,eACA,gCACA,8BACC,mBACA,gBACA,uBACA,YACA,wBACA,SACA,eACA,eACA,2BACA,yBACA,sBACA,qBACA,iBACA,oBACA,mBACA,0CACA,yBACA,sCACC,YACA,4CACA,4BACA,2BACA,eACA,gBACA,cACA,WACA,iBACA,kBAGF,sCACC,6BAED,qCACC,8CACA,6BACA,6CACC,mBAQL,mBACC,cACA,WACA,UACA,cACA,8CACA,mCACA,gBACA,WACA,gBAEC,2CACC,8BAED,gDACC,8BAGF,yCACC,yBAED,sCACC,mCACA,wCACA,iCAED,2CACC,mCACA,wCACA,iCAKF,iBACC,QAEC,0BAED,QAEC,yBAED,YAGC,0BAED,QAEC,0BAGF,OACC,qBACA,uBACA,mCAKD,cACC,kBACA,cACA,aACA,UACA,WACA,gBAWD,cAJC,oCACA,mCAOD,wBARC,oCACA,mCAWD,4BAZC,oCACA","file":"inputs.css"}
\ No newline at end of file diff --git a/core/css/inputs.scss b/core/css/inputs.scss index 78569cf474d..8f40690fac5 100644 --- a/core/css/inputs.scss +++ b/core/css/inputs.scss @@ -88,7 +88,7 @@ button:not( color: var(--color-text-light); } &:focus-visible { - box-shadow: 0 0 0 2px var(--color-primary); + box-shadow: 0 0 0 2px var(--color-primary-element); } } &:disabled { @@ -107,13 +107,13 @@ button:not( &.primary { background-color: var(--color-primary-element); border-color: var(--color-primary-element); - color: var(--color-primary-text); + color: var(--color-primary-element-text); cursor: pointer; /* Apply border to primary button if on log in page (and not in a dark container) or if in header */ #body-login :not(.body-login-container) &, #header & { - border-color: var(--color-primary-text); + border-color: var(--color-primary-element-text); } &:not(:disabled) { @@ -592,7 +592,7 @@ div.select2-container-multi { padding: 6px; min-height: 44px; &:focus-within { - border-color: var(--color-primary) + border-color: var(--color-primary-element) } .select2-search-choice { line-height: 20px; @@ -643,7 +643,7 @@ div.select2-container { padding: 6px 12px; min-height: 44px; &:focus-within { - border-color: var(--color-primary) + border-color: var(--color-primary-element) } .select2-search-choice { line-height: 20px; @@ -779,12 +779,12 @@ progress:not(.vue) { } &::-moz-progress-bar { border-radius: var(--border-radius); - background: var(--color-primary); + background: var(--color-primary-element); transition: 250ms all ease-in-out; } &::-webkit-progress-value { border-radius: var(--border-radius); - background: var(--color-primary); + background: var(--color-primary-element); transition: 250ms all ease-in-out; } } diff --git a/core/css/public.css b/core/css/public.css index 88e97d9a695..3e61d20a5c1 100644 --- a/core/css/public.css +++ b/core/css/public.css @@ -1 +1 @@ -#body-public .header-right #header-primary-action a{color:var(--color-primary-text)}#body-public .header-right #header-secondary-action ul li{min-width:270px}#body-public .header-right #header-secondary-action #header-actions-toggle{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);filter:var(--background-invert-if-dark)}#body-public .header-right #header-secondary-action #header-actions-toggle:hover,#body-public .header-right #header-secondary-action #header-actions-toggle:focus,#body-public .header-right #header-secondary-action #header-actions-toggle:active{opacity:1}#body-public .header-right #header-secondary-action #external-share-menu-item form{display:flex}#body-public .header-right #header-secondary-action #external-share-menu-item .hidden{display:none}#body-public .header-right #header-secondary-action #external-share-menu-item #save-button-confirm{flex-grow:0}#body-public #content{min-height:calc(100% - 65px)}#body-public.layout-base #content{padding-top:0}#body-public p.info{margin:20px auto;text-shadow:0 0 2px rgba(0,0,0,.4);-moz-user-select:none;-ms-user-select:none;user-select:none}#body-public p.info,#body-public form fieldset legend,#body-public #datadirContent label,#body-public form fieldset .warning-info,#body-public form input[type=checkbox]+label{text-align:center}#body-public footer{position:fixed;display:flex;align-items:center;justify-content:center;height:65px;flex-direction:column;bottom:0;width:calc(100% - 16px);margin:8px;background-color:var(--color-main-background);border-radius:var(--border-radius-large)}#body-public footer p{text-align:center;color:var(--color-text-lighter)}#body-public footer p a{color:var(--color-text-lighter);font-weight:bold;white-space:nowrap;padding:10px;margin:-10px;line-height:200%}/*# sourceMappingURL=public.css.map */ +#body-public .header-right #header-primary-action a{color:var(--color-primary-element-text)}#body-public .header-right #header-secondary-action ul li{min-width:270px}#body-public .header-right #header-secondary-action #header-actions-toggle{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);filter:var(--background-invert-if-dark)}#body-public .header-right #header-secondary-action #header-actions-toggle:hover,#body-public .header-right #header-secondary-action #header-actions-toggle:focus,#body-public .header-right #header-secondary-action #header-actions-toggle:active{opacity:1}#body-public .header-right #header-secondary-action #external-share-menu-item form{display:flex}#body-public .header-right #header-secondary-action #external-share-menu-item .hidden{display:none}#body-public .header-right #header-secondary-action #external-share-menu-item #save-button-confirm{flex-grow:0}#body-public #content{min-height:calc(100% - 65px)}#body-public.layout-base #content{padding-top:0}#body-public p.info{margin:20px auto;text-shadow:0 0 2px rgba(0,0,0,.4);-moz-user-select:none;-ms-user-select:none;user-select:none}#body-public p.info,#body-public form fieldset legend,#body-public #datadirContent label,#body-public form fieldset .warning-info,#body-public form input[type=checkbox]+label{text-align:center}#body-public footer{position:fixed;display:flex;align-items:center;justify-content:center;height:65px;flex-direction:column;bottom:0;width:calc(100% - 16px);margin:8px;background-color:var(--color-main-background);border-radius:var(--border-radius-large)}#body-public footer p{text-align:center;color:var(--color-text-lighter)}#body-public footer p a{color:var(--color-text-lighter);font-weight:bold;white-space:nowrap;padding:10px;margin:-10px;line-height:200%}/*# sourceMappingURL=public.css.map */ diff --git a/core/css/public.css.map b/core/css/public.css.map index fcc33807759..1afc8c12133 100644 --- a/core/css/public.css.map +++ b/core/css/public.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["public.scss"],"names":[],"mappings":"AAKE,oDACC,gCAIA,0DACC,gBAED,2EACC,+BACA,2BACA,wCAEA,oPAGC,UAID,mFACC,aAED,sFACC,aAED,mGACC,YAMJ,sBAEC,6BAKD,kCACC,cAGD,oBACC,iBACA,mCACA,sBACA,qBACA,iBAED,+KAIC,kBAID,oBACC,eACA,aACA,mBACA,uBACA,OArEc,KAsEd,sBACA,SACA,wBACA,WACA,8CACA,yCACA,sBACC,kBACA,gCACA,wBACC,gCACA,iBACA,mBAEA,aACA,aACA","file":"public.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["public.scss"],"names":[],"mappings":"AAKE,oDACC,wCAIA,0DACC,gBAED,2EACC,+BACA,2BACA,wCAEA,oPAGC,UAID,mFACC,aAED,sFACC,aAED,mGACC,YAMJ,sBAEC,6BAKD,kCACC,cAGD,oBACC,iBACA,mCACA,sBACA,qBACA,iBAED,+KAIC,kBAID,oBACC,eACA,aACA,mBACA,uBACA,OArEc,KAsEd,sBACA,SACA,wBACA,WACA,8CACA,yCACA,sBACC,kBACA,gCACA,wBACC,gCACA,iBACA,mBAEA,aACA,aACA","file":"public.css"}
\ No newline at end of file diff --git a/core/css/public.scss b/core/css/public.scss index ddeb444970d..11f72dc10f0 100644 --- a/core/css/public.scss +++ b/core/css/public.scss @@ -4,7 +4,7 @@ $footer-height: 65px; .header-right { #header-primary-action a { - color: var(--color-primary-text); + color: var(--color-primary-element-text); } #header-secondary-action { diff --git a/core/css/server.css b/core/css/server.css index f685c5ac455..8bb51bef964 100644 --- a/core/css/server.css +++ b/core/css/server.css @@ -1 +1 @@ -@import"../../dist/icons.css";html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section,main{margin:0;padding:0;border:0;font-weight:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;cursor:default;scrollbar-color:var(--color-border-dark) rgba(0,0,0,0);scrollbar-width:thin}.js-focus-visible :focus:not(.focus-visible){outline:none}.content:not(#content-vue) :focus-visible,.app-navigation:not(#app-navigation-vue) :focus-visible{box-shadow:inset 0 0 0 2px var(--color-primary);outline:none}html,body{height:100%}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5}table{border-collapse:separate;border-spacing:0;white-space:nowrap}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}a{border:0;color:var(--color-main-text);text-decoration:none;cursor:pointer}a *{cursor:pointer}a.external{margin:0 3px;text-decoration:underline}input{cursor:pointer}input *{cursor:pointer}select,.button span,label{cursor:pointer}ul{list-style:none}body{font-weight:normal;font-size:var(--default-font-size);line-height:var(--default-line-height);font-family:var(--font-face);color:var(--color-main-text)}.two-factor-header{text-align:center}.two-factor-provider{text-align:center;width:100% !important;display:inline-block;margin-bottom:0 !important;background-color:var(--color-background-darker) !important;border:none !important}.two-factor-link{display:inline-block;padding:12px;color:var(--color-text-lighter)}.float-spinner{height:32px;display:none}#nojavascript{position:fixed;top:0;bottom:0;left:0;height:100%;width:100%;z-index:9000;text-align:center;background-color:var(--color-background-darker);color:var(--color-primary-text);line-height:125%;font-size:24px}#nojavascript div{display:block;position:relative;width:50%;top:35%;margin:0px auto}#nojavascript a{color:var(--color-primary-text);border-bottom:2px dotted var(--color-main-background)}#nojavascript a:hover,#nojavascript a:focus{color:var(--color-primary-element-text-dark)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:var(--border-radius-large);border:2px solid rgba(0,0,0,0);background-clip:content-box}::selection{background-color:var(--color-primary-element);color:var(--color-primary-text)}#app-navigation *{box-sizing:border-box}#emptycontent,.emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:30vh;width:100%}#app-sidebar #emptycontent,#app-sidebar .emptycontent{margin-top:10vh}#emptycontent .emptycontent-search,.emptycontent .emptycontent-search{position:static}#emptycontent h2,.emptycontent h2{margin-bottom:10px}#emptycontent [class^=icon-],#emptycontent [class*=icon-],.emptycontent [class^=icon-],.emptycontent [class*=icon-]{background-size:64px;height:64px;width:64px;margin:0 auto 15px}#emptycontent [class^=icon-]:not([class^=icon-loading]),#emptycontent [class^=icon-]:not([class*=icon-loading]),#emptycontent [class*=icon-]:not([class^=icon-loading]),#emptycontent [class*=icon-]:not([class*=icon-loading]),.emptycontent [class^=icon-]:not([class^=icon-loading]),.emptycontent [class^=icon-]:not([class*=icon-loading]),.emptycontent [class*=icon-]:not([class^=icon-loading]),.emptycontent [class*=icon-]:not([class*=icon-loading]){opacity:.4}#datadirContent label{width:100%}.grouptop,.groupmiddle,.groupbottom{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#show,#dbpassword{position:absolute;right:1em;top:.8em;float:right}#show+label,#dbpassword+label{right:21px;top:15px !important;margin:-14px !important;padding:14px !important}#show:checked+label,#dbpassword:checked+label,#personal-show:checked+label{opacity:.8}#show:focus-visible+label,#dbpassword-toggle:focus-visible+label,#personal-show:focus-visible+label{box-shadow:var(--color-primary) 0 0 0 2px;opacity:1;border-radius:9999px}#show+label,#dbpassword+label,#personal-show+label{position:absolute !important;height:20px;width:24px;background-image:var(--icon-toggle-dark);background-repeat:no-repeat;background-position:center;opacity:.3}#show:focus+label,#dbpassword:focus+label,#personal-show:focus+label{opacity:1}#show+label:hover,#dbpassword+label:hover,#personal-show+label:hover{opacity:1}#show+label:before,#dbpassword+label:before,#personal-show+label:before{display:none}#pass2,input[name=personal-password-clone]{padding-right:30px}.personal-show-container{position:relative;display:inline-block;margin-right:6px}#personal-show+label{display:block;right:0;margin-top:-43px;margin-right:-4px;padding:22px}#body-user .warning,#body-settings .warning{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-main-text);background-color:rgba(var(--color-warning-rgb), 0.2)}.warning legend,.warning a{font-weight:bold !important}.error:not(.toastify) a{color:#fff !important;font-weight:bold !important}.error:not(.toastify) a.button{color:var(--color-text-lighter) !important;display:inline-block;text-align:center}.error:not(.toastify) pre{white-space:pre-wrap;text-align:left}.error-wide{width:700px;margin-left:-200px !important}.error-wide .button{color:#000 !important}.warning-input{border-color:var(--color-error) !important}.avatar,.avatardiv{border-radius:50%;flex-shrink:0}.avatar>img,.avatardiv>img{border-radius:50%;flex-shrink:0}td.avatar{border-radius:0}tr .action:not(.permanent),.selectedActions>a{opacity:0}tr:hover .action:not(.menuitem),tr:focus .action:not(.menuitem),tr .action.permanent:not(.menuitem){opacity:.5}.selectedActions>a{opacity:.5;position:relative;top:2px}.selectedActions>a:hover,.selectedActions>a:focus{opacity:1}tr .action{width:16px;height:16px}.header-action{opacity:.8}tr:hover .action:hover,tr:focus .action:focus{opacity:1}.selectedActions a:hover,.selectedActions a:focus{opacity:1}.header-action:hover,.header-action:focus{opacity:1}tbody tr:hover,tbody tr:focus,tbody tr:active{background-color:var(--color-background-dark)}code{font-family:"Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono",monospace}.pager{list-style:none;float:right;display:inline;margin:.7em 13em 0 0}.pager li{display:inline-block}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{overflow:hidden;text-overflow:ellipsis}.ui-icon-circle-triangle-e{background-image:url("../img/actions/play-next.svg?v=1")}.ui-icon-circle-triangle-w{background-image:url("../img/actions/play-previous.svg?v=1")}.ui-widget.ui-datepicker{margin-top:10px;padding:4px 8px;width:auto;border-radius:var(--border-radius);border:none;z-index:1600 !important}.ui-widget.ui-datepicker .ui-state-default,.ui-widget.ui-datepicker .ui-widget-content .ui-state-default,.ui-widget.ui-datepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-datepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-datepicker .ui-widget-header .ui-datepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-datepicker .ui-widget-header .ui-icon{opacity:.5}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e{background:url("../img/actions/arrow-right.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{background:url("../img/actions/arrow-left.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-state-hover .ui-icon{opacity:1}.ui-widget.ui-datepicker .ui-datepicker-calendar th{font-weight:normal;color:var(--color-text-lighter);opacity:.8;width:26px;padding:2px}.ui-widget.ui-datepicker .ui-datepicker-calendar tr:hover{background-color:inherit}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-today a:not(.ui-state-hover){background-color:var(--color-background-darker)}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-current-day a.ui-state-active,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-hover,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-focus{background-color:var(--color-primary);color:var(--color-primary-text);font-weight:bold}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-priority-secondary:not(.ui-state-hover){color:var(--color-text-lighter);opacity:.8}.ui-datepicker-prev,.ui-datepicker-next{border:var(--color-border-dark);background:var(--color-main-background)}.ui-widget.ui-timepicker{margin-top:10px !important;width:auto !important;border-radius:var(--border-radius);z-index:1600 !important}.ui-widget.ui-timepicker .ui-widget-content{border:none !important}.ui-widget.ui-timepicker .ui-state-default,.ui-widget.ui-timepicker .ui-widget-content .ui-state-default,.ui-widget.ui-timepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-timepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-timepicker .ui-widget-header .ui-timepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-timepicker table.ui-timepicker tr .ui-timepicker-hour-cell:first-child{margin-left:30px}.ui-widget.ui-timepicker .ui-timepicker-table th{font-weight:normal;color:var(--color-text-lighter);opacity:.8}.ui-widget.ui-timepicker .ui-timepicker-table th.periods{padding:0;width:30px;line-height:30px}.ui-widget.ui-timepicker .ui-timepicker-table tr:hover{background-color:inherit}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hour-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minute-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-hover,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-focus{background-color:var(--color-primary);color:var(--color-primary-text);font-weight:bold}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minutes:not(.ui-state-hover){color:var(--color-text-lighter)}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hours{border-right:1px solid var(--color-border)}.ui-widget.ui-datepicker .ui-datepicker-calendar tr,.ui-widget.ui-timepicker table.ui-timepicker tr{display:flex;flex-wrap:nowrap;justify-content:space-between}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td,.ui-widget.ui-timepicker table.ui-timepicker tr td{flex:1 1 auto;margin:0;padding:2px;height:26px;width:26px;display:flex;align-items:center;justify-content:center}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td>*,.ui-widget.ui-timepicker table.ui-timepicker tr td>*{border-radius:50%;text-align:center;font-weight:normal;color:var(--color-main-text);display:block;line-height:18px;width:18px;height:18px;padding:3px;font-size:.9em}#oc-dialog-filepicker-content{position:relative;display:flex;flex-direction:column}#oc-dialog-filepicker-content .dirtree{flex-wrap:wrap;box-sizing:border-box;padding-right:140px;display:flex}#oc-dialog-filepicker-content .dirtree div:first-child a{font-size:0px;background-image:var(--icon-home-dark);background-repeat:no-repeat;background-position:left center}#oc-dialog-filepicker-content .dirtree span:not(:last-child){cursor:pointer}#oc-dialog-filepicker-content .dirtree span:last-child{font-weight:bold}#oc-dialog-filepicker-content .dirtree span:not(:last-child)::after{content:">";padding:3px}#oc-dialog-filepicker-content #picker-showgridview{position:absolute;background-color:rgba(0,0,0,0);border:none;margin:0;padding:22px;opacity:.5;right:0;top:0}#oc-dialog-filepicker-content #picker-showgridview:hover,#oc-dialog-filepicker-content #picker-showgridview:active,#oc-dialog-filepicker-content #picker-showgridview:focus{box-shadow:0 0 0 2px var(--color-primary);opacity:1}#oc-dialog-filepicker-content .actions.creatable{flex-wrap:wrap;padding:0px;box-sizing:border-box;display:inline-flex;float:none;max-height:36px;max-width:36px;background-color:var(--color-background-dark);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-pill);position:relative;left:15px;top:3px;order:1}#oc-dialog-filepicker-content .actions.creatable .icon.icon-add{background-image:var(--icon-add-dark);background-size:16px 16px;width:34px;height:34px;margin:0px;opacity:.5}#oc-dialog-filepicker-content .actions.creatable a{width:36px;padding:0px;position:static}#oc-dialog-filepicker-content .actions.creatable .menu{top:100%;margin-top:10px}#oc-dialog-filepicker-content .actions.creatable .menu form{display:flex;margin:10px}#oc-dialog-filepicker-content .filelist-container{box-sizing:border-box;display:inline-block;overflow-y:auto;flex:1;width:100%;overflow-x:hidden}#oc-dialog-filepicker-content .emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:80px;width:100%;display:none}#oc-dialog-filepicker-content .filelist{background-color:var(--color-main-background);width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist{min-width:initial;margin-bottom:50px}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr{border-bottom:1px solid var(--color-border);background-color:var(--color-main-background)}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr th{width:80%;border:none}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle.name{padding-left:5px;margin-left:50px}#oc-dialog-filepicker-content #picker-filestable.filelist th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}#oc-dialog-filepicker-content #picker-filestable.filelist .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:hidden}#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:visible}#oc-dialog-filepicker-content #picker-filestable.filelist td{padding:14px;border-bottom:1px solid var(--color-border)}#oc-dialog-filepicker-content #picker-filestable.filelist tr:last-child td{border-bottom:none}#oc-dialog-filepicker-content #picker-filestable.filelist .filename{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background-size:32px;background-repeat:no-repeat;padding-left:51px;background-position:7px 7px;cursor:pointer;max-width:0}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts{display:flex}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__first{overflow:hidden;white-space:pre;text-overflow:ellipsis}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__last{white-space:pre}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize,#oc-dialog-filepicker-content #picker-filestable.filelist .date{width:80px}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize{text-align:right}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid{display:flex;flex-direction:column}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody{display:grid;grid-template-columns:repeat(auto-fill, 120px);justify-content:space-around;row-gap:15px;margin:15px 0}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr{display:block;position:relative;border-radius:var(--border-radius);padding:10px;display:flex;flex-direction:column;width:100px}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td{border:none;padding:0;text-align:center;border-radius:var(--border-radius)}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename{padding:100px 0 0 0;background-position:center top;background-size:contain;line-height:30px;max-width:none}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename .filename-parts{justify-content:center}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filesize{line-height:10px;width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.date{align-self:center;overflow:hidden;text-overflow:ellipsis;min-width:110px}#oc-dialog-filepicker-content .filepicker_element_selected{background-color:var(--color-background-darker)}.ui-dialog{position:fixed !important}span.ui-icon{float:left;margin:3px 7px 30px 0}.extra-data{padding-right:5px !important}#tagsdialog .content{width:100%;height:280px}#tagsdialog .scrollarea{overflow:auto;border:1px solid var(--color-background-darker);width:100%;height:240px}#tagsdialog .bottombuttons{width:100%;height:30px}#tagsdialog .bottombuttons *{float:left}#tagsdialog .taglist li{background:var(--color-background-dark);padding:.3em .8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:background-color 500ms;transition:background-color 500ms}#tagsdialog .taglist li:hover,#tagsdialog .taglist li:active{background:var(--color-background-darker)}#tagsdialog .addinput{width:90%;clear:both}.breadcrumb{display:inline-flex;height:50px}li.crumb{display:inline-flex;background-image:url("../img/breadcrumb.svg?v=1");background-repeat:no-repeat;background-position:right center;height:44px;background-size:auto 24px;flex:0 0 auto;order:1;padding-right:7px}li.crumb.crumbmenu{order:2;position:relative}li.crumb.crumbmenu a{opacity:.5}li.crumb.crumbmenu.canDropChildren .popovermenu,li.crumb.crumbmenu.canDrop .popovermenu{display:block}li.crumb.crumbmenu .popovermenu{top:100%;margin-right:3px}li.crumb.crumbmenu .popovermenu ul{max-height:345px;overflow-y:auto;overflow-x:hidden;padding-right:5px}li.crumb.crumbmenu .popovermenu ul li.canDrop span:first-child{background-image:url("../img/filetypes/folder-drag-accept.svg?v=1") !important}li.crumb.crumbmenu .popovermenu .in-breadcrumb{display:none}li.crumb.hidden{display:none}li.crumb.hidden~.crumb{order:3}li.crumb>a,li.crumb>span{position:relative;padding:12px;opacity:.5;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:0 0 auto;max-width:200px}li.crumb>a.icon-home,li.crumb>a.icon-delete,li.crumb>span.icon-home,li.crumb>span.icon-delete{text-indent:-9999px}li.crumb>a[class^=icon-]{padding:0;width:44px}li.crumb:last-child{font-weight:bold;margin-right:10px}li.crumb:last-child a~span{padding-left:0}li.crumb:hover,li.crumb:focus,li.crumb a:focus,li.crumb:active{opacity:1}li.crumb:hover>a,li.crumb:hover>span,li.crumb:focus>a,li.crumb:focus>span,li.crumb a:focus>a,li.crumb a:focus>span,li.crumb:active>a,li.crumb:active>span{opacity:.7}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}fieldset.warning legend,fieldset.update legend{top:18px;position:relative}fieldset.warning legend+p,fieldset.update legend+p{margin-top:12px}@-ms-viewport{width:device-width}.hiddenuploadfield{display:none;width:0;height:0;opacity:0}input,textarea,select,button,div[contenteditable=true],div[contenteditable=false]{font-family:var(--font-face)}.select2-container-multi .select2-choices .select2-search-field input,.select2-search input,.ui-widget{font-family:var(--font-face) !important}.select2-container.select2-drop-above .select2-choice{background-image:unset !important}select,button:not(.button-vue,[class^=vs__]),input,textarea,div[contenteditable=true],div[contenteditable=false]{width:130px;min-height:36px;box-sizing:border-box}input:not([type=range]){outline:none}div.select2-drop .select2-search input,input[type=submit],input[type=button],input[type=reset],button:not(.button-vue,[class^=vs__]),.button,.pager li a{margin:3px 3px 3px 0;padding:7px 14px;font-size:13px;background-color:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border-dark);font-size:var(--default-font-size);outline:none;border-radius:var(--border-radius);cursor:text}div.select2-drop .select2-search input:not(:disabled):not(.primary):hover,div.select2-drop .select2-search input:not(:disabled):not(.primary):focus,div.select2-drop .select2-search input:not(:disabled):not(.primary).active,input[type=submit]:not(:disabled):not(.primary):hover,input[type=submit]:not(:disabled):not(.primary):focus,input[type=submit]:not(:disabled):not(.primary).active,input[type=button]:not(:disabled):not(.primary):hover,input[type=button]:not(:disabled):not(.primary):focus,input[type=button]:not(:disabled):not(.primary).active,input[type=reset]:not(:disabled):not(.primary):hover,input[type=reset]:not(:disabled):not(.primary):focus,input[type=reset]:not(:disabled):not(.primary).active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):hover,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary).active,.button:not(:disabled):not(.primary):hover,.button:not(:disabled):not(.primary):focus,.button:not(:disabled):not(.primary).active,.pager li a:not(:disabled):not(.primary):hover,.pager li a:not(:disabled):not(.primary):focus,.pager li a:not(:disabled):not(.primary).active{border-color:var(--color-primary-element);outline:none}div.select2-drop .select2-search input:not(:disabled):not(.primary):active,input[type=submit]:not(:disabled):not(.primary):active,input[type=button]:not(:disabled):not(.primary):active,input[type=reset]:not(:disabled):not(.primary):active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):active,.button:not(:disabled):not(.primary):active,.pager li a:not(:disabled):not(.primary):active{outline:none;background-color:var(--color-main-background);color:var(--color-text-light)}div.select2-drop .select2-search input:not(:disabled):not(.primary):focus-visible,input[type=submit]:not(:disabled):not(.primary):focus-visible,input[type=button]:not(:disabled):not(.primary):focus-visible,input[type=reset]:not(:disabled):not(.primary):focus-visible,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus-visible,.button:not(:disabled):not(.primary):focus-visible,.pager li a:not(:disabled):not(.primary):focus-visible{box-shadow:0 0 0 2px var(--color-primary)}div.select2-drop .select2-search input:disabled,input[type=submit]:disabled,input[type=button]:disabled,input[type=reset]:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,.pager li a:disabled{background-color:var(--color-background-dark);color:var(--color-main-text);cursor:default;opacity:.5}div.select2-drop .select2-search input:required,input[type=submit]:required,input[type=button]:required,input[type=reset]:required,button:not(.button-vue,[class^=vs__]):required,.button:required,.pager li a:required{box-shadow:none}div.select2-drop .select2-search input:user-invalid,input[type=submit]:user-invalid,input[type=button]:user-invalid,input[type=reset]:user-invalid,button:not(.button-vue,[class^=vs__]):user-invalid,.button:user-invalid,.pager li a:user-invalid{box-shadow:0 0 0 2px var(--color-error) !important}div.select2-drop .select2-search input.primary,input[type=submit].primary,input[type=button].primary,input[type=reset].primary,button:not(.button-vue,[class^=vs__]).primary,.button.primary,.pager li a.primary{background-color:var(--color-primary-element);border-color:var(--color-primary-element);color:var(--color-primary-text);cursor:pointer}#body-login :not(.body-login-container) div.select2-drop .select2-search input.primary,#header div.select2-drop .select2-search input.primary,#body-login :not(.body-login-container) input[type=submit].primary,#header input[type=submit].primary,#body-login :not(.body-login-container) input[type=button].primary,#header input[type=button].primary,#body-login :not(.body-login-container) input[type=reset].primary,#header input[type=reset].primary,#body-login :not(.body-login-container) button:not(.button-vue,[class^=vs__]).primary,#header button:not(.button-vue,[class^=vs__]).primary,#body-login :not(.body-login-container) .button.primary,#header .button.primary,#body-login :not(.body-login-container) .pager li a.primary,#header .pager li a.primary{border-color:var(--color-primary-text)}div.select2-drop .select2-search input.primary:not(:disabled):hover,div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):hover,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):hover,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):hover,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):hover,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):hover,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):hover,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):active{background-color:var(--color-primary-element-hover);border-color:var(--color-primary-element-hover)}div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):focus-visible,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):focus-visible,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):focus-visible,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):focus-visible,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus-visible,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):focus-visible,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--color-main-text)}div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):active{color:var(--color-primary-element-text-dark)}div.select2-drop .select2-search input.primary:disabled,input[type=submit].primary:disabled,input[type=button].primary:disabled,input[type=reset].primary:disabled,button:not(.button-vue,[class^=vs__]).primary:disabled,.button.primary:disabled,.pager li a.primary:disabled{background-color:var(--color-primary-element);color:var(--color-primary-element-text-dark);cursor:default}div[contenteditable=false]{margin:3px 3px 3px 0;padding:7px 6px;font-size:13px;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-background-darker);outline:none;border-radius:var(--border-radius);background-color:var(--color-background-dark);color:var(--color-text-lighter);cursor:default;opacity:.5}input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=submit]):not([type=button]):not([type=reset]):not([type=color]):not([type=file]):not([type=image]){-webkit-appearance:textfield;-moz-appearance:textfield;height:36px}input[type=radio],input[type=checkbox],input[type=file],input[type=image]{height:auto;width:auto}input[type=color]{margin:3px;padding:0 2px;min-height:30px;width:40px;cursor:pointer}input[type=hidden]{height:0;width:0}input[type=time]{width:initial}select,button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{padding:8px 14px;font-size:var(--default-font-size);width:auto;min-height:36px;cursor:pointer;box-sizing:border-box;background-color:var(--color-background-dark)}select:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,input[type=button]:disabled,input[type=submit]:disabled,input[type=reset]:disabled{cursor:default}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]),select,div[contenteditable=true],textarea{margin:3px 3px 3px 0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px;outline:none;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):hover,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):active,select:not(:disabled):hover,select:not(:disabled):focus,select:not(:disabled):active,div[contenteditable=true]:not(:disabled):hover,div[contenteditable=true]:not(:disabled):focus,div[contenteditable=true]:not(:disabled):active,textarea:not(:disabled):hover,textarea:not(:disabled):focus,textarea:not(:disabled):active{border-color:var(--color-primary-element)}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,select:not(:disabled):focus,div[contenteditable=true]:not(:disabled):focus,textarea:not(:disabled):focus{cursor:text}.multiselect__input,.select2-input{background-color:var(--color-main-background);color:var(--color-main-text)}textarea,div[contenteditable=true]{padding:12px;height:auto}select{background:var(--icon-triangle-s-dark) no-repeat right 8px center;appearance:none;background-color:var(--color-main-background);padding-right:28px !important}select *,button:not(.button-vue,[class^=vs__]) *,.button *{cursor:pointer}select:disabled *,button:not(.button-vue,[class^=vs__]):disabled *,.button:disabled *{cursor:default}button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{font-weight:bold;border-radius:var(--border-radius-pill)}button:not(.button-vue,[class^=vs__])::-moz-focus-inner,.button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=submit]::-moz-focus-inner,input[type=reset]::-moz-focus-inner{border:0}button:not(.button-vue,[class^=vs__]).error,.button.error,input[type=button].error,input[type=submit].error,input[type=reset].error{background-color:var(--color-error) !important;border-color:var(--color-error) !important;color:#fff !important}button:not(.button-vue,.action-button,[class^=vs__])>span[class^=icon-],button:not(.button-vue,.action-button,[class^=vs__])>span[class*=" icon-"],.button>span[class^=icon-],.button>span[class*=" icon-"]{display:inline-block;vertical-align:text-bottom;opacity:.5}input[type=text]+.icon-confirm,input[type=password]+.icon-confirm,input[type=email]+.icon-confirm{margin-left:-13px !important;border-left-color:rgba(0,0,0,0) !important;border-radius:0 var(--border-radius-large) var(--border-radius-large) 0 !important;border-width:2px;background-clip:padding-box;background-color:var(--color-main-background) !important;opacity:1;height:36px;width:36px;padding:7px 6px;cursor:pointer;margin-right:0}input[type=text]+.icon-confirm:disabled,input[type=password]+.icon-confirm:disabled,input[type=email]+.icon-confirm:disabled{cursor:default;background-image:var(--icon-confirm-fade-dark)}input[type=text]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=password]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=email]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm{border-color:var(--color-error)}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus{border-color:var(--color-primary-element) !important;border-radius:var(--border-radius) !important}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled{border-color:var(--color-background-darker) !important}input[type=text]:active+.icon-confirm,input[type=text]:hover+.icon-confirm,input[type=text]:focus+.icon-confirm,input[type=password]:active+.icon-confirm,input[type=password]:hover+.icon-confirm,input[type=password]:focus+.icon-confirm,input[type=email]:active+.icon-confirm,input[type=email]:hover+.icon-confirm,input[type=email]:focus+.icon-confirm{border-color:var(--color-primary-element) !important;border-left-color:rgba(0,0,0,0) !important;z-index:2}button img,.button img{cursor:pointer}select,.button.multiselect{font-weight:normal}input[type=checkbox].radio,input[type=checkbox].checkbox,input[type=radio].radio,input[type=radio].checkbox{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}input[type=checkbox].radio+label,input[type=checkbox].checkbox+label,input[type=radio].radio+label,input[type=radio].checkbox+label{user-select:none}input[type=checkbox].radio:disabled+label,input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label,input[type=radio].checkbox:disabled+label:before{cursor:default}input[type=checkbox].radio+label:before,input[type=checkbox].checkbox+label:before,input[type=radio].radio+label:before,input[type=radio].checkbox+label:before{content:"";display:inline-block;height:14px;width:14px;vertical-align:middle;border-radius:50%;margin:0 6px 3px 3px;border:1px solid var(--color-text-lighter)}input[type=checkbox].radio:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].radio:focus+label:before,input[type=checkbox].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox:focus+label:before,input[type=radio].radio:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio:focus+label:before,input[type=radio].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox:focus+label:before{border-color:var(--color-primary-element)}input[type=checkbox].radio:focus-visible+label,input[type=checkbox].checkbox:focus-visible+label,input[type=radio].radio:focus-visible+label,input[type=radio].checkbox:focus-visible+label{outline-style:solid;outline-color:var(--color-main-text);outline-width:1px;outline-offset:2px}input[type=checkbox].radio:checked+label:before,input[type=checkbox].radio.checkbox:indeterminate+label:before,input[type=checkbox].checkbox:checked+label:before,input[type=checkbox].checkbox.checkbox:indeterminate+label:before,input[type=radio].radio:checked+label:before,input[type=radio].radio.checkbox:indeterminate+label:before,input[type=radio].checkbox:checked+label:before,input[type=radio].checkbox.checkbox:indeterminate+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:var(--color-primary-element);border-color:var(--color-primary-element)}input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label:before{border:1px solid var(--color-text-lighter);background-color:var(--color-text-maxcontrast) !important}input[type=checkbox].radio:checked:disabled+label:before,input[type=checkbox].checkbox:checked:disabled+label:before,input[type=radio].radio:checked:disabled+label:before,input[type=radio].checkbox:checked:disabled+label:before{background-color:var(--color-text-maxcontrast)}input[type=checkbox].radio+label~em,input[type=checkbox].checkbox+label~em,input[type=radio].radio+label~em,input[type=radio].checkbox+label~em{display:inline-block;margin-left:25px}input[type=checkbox].radio+label~em:last-of-type,input[type=checkbox].checkbox+label~em:last-of-type,input[type=radio].radio+label~em:last-of-type,input[type=radio].checkbox+label~em:last-of-type{margin-bottom:14px}input[type=checkbox].checkbox+label:before,input[type=radio].checkbox+label:before{border-radius:1px;height:14px;width:14px;box-shadow:none !important;background-position:center}input[type=checkbox].checkbox:checked+label:before,input[type=radio].checkbox:checked+label:before{background-image:url("../img/actions/checkbox-mark.svg")}input[type=checkbox].checkbox:indeterminate+label:before,input[type=radio].checkbox:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed.svg")}input[type=checkbox].radio--white+label:before,input[type=checkbox].radio--white:focus+label:before,input[type=checkbox].checkbox--white+label:before,input[type=checkbox].checkbox--white:focus+label:before,input[type=radio].radio--white+label:before,input[type=radio].radio--white:focus+label:before,input[type=radio].checkbox--white+label:before,input[type=radio].checkbox--white:focus+label:before{border-color:#bababa}input[type=checkbox].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox--white:not(:disabled):not(:checked)+label:hover:before{border-color:#fff}input[type=checkbox].radio--white:checked+label:before,input[type=checkbox].checkbox--white:checked+label:before,input[type=radio].radio--white:checked+label:before,input[type=radio].checkbox--white:checked+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:#dbdbdb;border-color:#dbdbdb}input[type=checkbox].radio--white:disabled+label:before,input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].radio--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{background-color:#bababa !important;border-color:rgba(255,255,255,.4) !important}input[type=checkbox].radio--white:checked:disabled+label:before,input[type=checkbox].checkbox--white:checked:disabled+label:before,input[type=radio].radio--white:checked:disabled+label:before,input[type=radio].checkbox--white:checked:disabled+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);border-color:rgba(255,255,255,.4) !important;background-color:#bababa}input[type=checkbox].checkbox--white:checked+label:before,input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:checked+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-color:rgba(0,0,0,0) !important;border-color:#fff !important;background-image:url("../img/actions/checkbox-mark-white.svg")}input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed-white.svg")}input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{opacity:.7}div.select2-drop{margin-top:-2px;background-color:var(--color-main-background)}div.select2-drop.select2-drop-active{border-color:var(--color-border-dark)}div.select2-drop .avatar{display:inline-block;margin-right:8px;vertical-align:middle}div.select2-drop .avatar img{cursor:pointer}div.select2-drop .select2-search input{min-height:auto;background:var(--icon-search-dark) no-repeat right center !important;background-origin:content-box !important}div.select2-drop .select2-results{max-height:250px;margin:0;padding:0}div.select2-drop .select2-results .select2-result-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.select2-drop .select2-results .select2-result-label span{cursor:pointer}div.select2-drop .select2-results .select2-result-label span em{cursor:inherit;background:unset}div.select2-drop .select2-results .select2-result,div.select2-drop .select2-results .select2-no-results,div.select2-drop .select2-results .select2-searching{position:relative;display:list-item;padding:12px;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}div.select2-drop .select2-results .select2-result.select2-selected{background-color:var(--color-background-dark)}div.select2-drop .select2-results .select2-highlighted{background-color:var(--color-background-dark);color:var(--color-main-text)}.select2-chosen .avatar,.select2-chosen .avatar img,#select2-drop .avatar,#select2-drop .avatar img{cursor:pointer}div.select2-container-multi .select2-choices,div.select2-container-multi.select2-container-active .select2-choices{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px;min-height:44px}div.select2-container-multi .select2-choices:focus-within,div.select2-container-multi.select2-container-active .select2-choices:focus-within{border-color:var(--color-primary)}div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{line-height:20px;padding-left:5px}div.select2-container-multi .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi .select2-choices .select2-search-choice:hover,div.select2-container-multi .select2-choices .select2-search-choice:active,div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:hover,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark)}div.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice .select2-search-choice-close{display:none}div.select2-container-multi .select2-choices .select2-search-field input,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input{line-height:20px;min-height:28px;max-height:28px;color:var(--color-main-text)}div.select2-container-multi .select2-choices .select2-search-field input.select2-active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input.select2-active{background:none !important}div.select2-container{margin:3px 3px 3px 0}div.select2-container.select2-container-multi .select2-choices{display:flex;flex-wrap:wrap}div.select2-container.select2-container-multi .select2-choices li{float:none}div.select2-container a.select2-choice{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px 12px;min-height:44px}div.select2-container a.select2-choice:focus-within{border-color:var(--color-primary)}div.select2-container a.select2-choice .select2-search-choice{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-background-dark);border-color:var(--color-background-dark)}div.select2-container a.select2-choice .select2-search-choice .select2-search-choice-close{display:none}div.select2-container a.select2-choice .select2-search-choice.select2-search-choice-focus,div.select2-container a.select2-choice .select2-search-choice:hover{background-color:var(--color-border);border-color:var(--color-border)}div.select2-container a.select2-choice .select2-arrow{background:none;border-radius:0;border:none}div.select2-container a.select2-choice .select2-arrow b{background:var(--icon-triangle-s-dark) no-repeat center !important;opacity:.5}div.select2-container a.select2-choice:hover .select2-arrow b,div.select2-container a.select2-choice:focus .select2-arrow b,div.select2-container a.select2-choice:active .select2-arrow b{opacity:.7}div.select2-container a.select2-choice .select2-search-field input{line-height:20px}.v-select{margin:3px 3px 3px 0;display:inline-block}.v-select .dropdown-toggle{display:flex !important;flex-wrap:wrap}.v-select .dropdown-toggle .selected-tag{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center}.v-select .dropdown-toggle .selected-tag .close{margin-left:3px}.v-select .dropdown-menu{padding:0}.v-select .dropdown-menu li{padding:5px;position:relative;display:list-item;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}.v-select .dropdown-menu li a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:25px;padding:3px 7px 4px 2px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:rgba(0,0,0,0) !important;color:inherit !important}.v-select .dropdown-menu li a::before{content:" ";background-image:var(--icon-checkmark-dark);background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.v-select .dropdown-menu li.highlight{color:var(--color-main-text)}.v-select .dropdown-menu li.active>a{background-color:var(--color-background-dark);color:var(--color-main-text)}.v-select .dropdown-menu li.active>a::before{visibility:visible}progress:not(.vue){display:block;width:100%;padding:0;border:0 none;background-color:var(--color-background-dark);border-radius:var(--border-radius);flex-basis:100%;height:5px;overflow:hidden}progress:not(.vue).warn::-moz-progress-bar{background:var(--color-error)}progress:not(.vue).warn::-webkit-progress-value{background:var(--color-error)}progress:not(.vue)::-webkit-progress-bar{background:rgba(0,0,0,0)}progress:not(.vue)::-moz-progress-bar{border-radius:var(--border-radius);background:var(--color-primary);transition:250ms all ease-in-out}progress:not(.vue)::-webkit-progress-value{border-radius:var(--border-radius);background:var(--color-primary);transition:250ms all ease-in-out}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.shake{animation-name:shake;animation-duration:.7s;animation-timing-function:ease-out}label.infield{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}::placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-ms-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-webkit-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}#header,#expanddiv{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#header a:not(.button):focus-visible,#header button:not(.button-vue):focus-visible,#header div[role=button]:focus-visible,#expanddiv a:not(.button):focus-visible,#expanddiv button:not(.button-vue):focus-visible,#expanddiv div[role=button]:focus-visible{outline:none}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#header div[role=button]:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after,#expanddiv div[role=button]:focus-visible::after{content:" ";position:absolute;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-primary-text);left:50%;opacity:1}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after{bottom:2px}#header .header-right a:not(.button):focus-visible::after,#header .header-right div[role=button]:focus-visible::after,#expanddiv .header-right a:not(.button):focus-visible::after,#expanddiv .header-right div[role=button]:focus-visible::after{bottom:4px}#header .header-right #expand.menutoggle:focus-visible::after,#expanddiv .header-right #expand.menutoggle:focus-visible::after{left:40%}#body-user #header,#body-settings #header,#body-public #header{display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:50px;box-sizing:border-box;justify-content:space-between}#nextcloud{padding:5px 0;padding-left:86px;position:relative;height:calc(100% - 4px);box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#nextcloud:hover,#nextcloud:active{opacity:1}#header .header-right>div>.menu{background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));border-radius:var(--border-radius-large);box-sizing:border-box;z-index:2000;position:absolute;max-width:350px;min-height:66px;max-height:calc(100vh - 50px - 8px);right:8px;top:50px;margin:0;overflow-y:auto}#header .header-right>div>.menu:not(.popovermenu){display:none}#header .header-right>div>.menu:after{border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background);bottom:100%;content:" ";height:0;width:0;position:absolute;pointer-events:none;right:10px}#header .header-right>div>.menu>div,#header .header-right>div>.menu>ul{-webkit-overflow-scrolling:touch;min-height:66px;max-height:calc(100vh - 50px - 8px)}#header .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;left:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header .header-appname-container{display:none;padding-right:10px;flex-shrink:0}#header #header-left,#header .header-left,#header #header-right,#header .header-right{display:inline-flex;align-items:center}#header #header-left,#header .header-left{flex:1 0;white-space:nowrap;min-width:0}#header #header-right,#header .header-right{justify-content:flex-end;flex-shrink:1}#header .header-right>div,#header .header-right>form{height:100%;position:relative}#header .header-right>div>.menutoggle,#header .header-right>form>.menutoggle{display:flex;justify-content:center;align-items:center;width:50px;height:44px;cursor:pointer;opacity:.85;padding:0;margin:2px 0}#header .header-right>div>.menutoggle:focus,#header .header-right>form>.menutoggle:focus{opacity:1}#header .header-right>div>.menutoggle:focus-visible,#header .header-right>form>.menutoggle:focus-visible{outline:none}.header-appname-container .header-appname{opacity:.75}.header-appname{color:var(--color-primary-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-right:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}.header-shared-by{color:var(--color-primary-text);position:relative;font-weight:300;font-size:11px;line-height:11px;overflow:hidden;text-overflow:ellipsis}#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;left:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:50px}header #emptycontent h2,header .emptycontent h2{font-weight:normal;font-size:16px}header #emptycontent [class^=icon-],header #emptycontent [class*=icon-],header .emptycontent [class^=icon-],header .emptycontent [class*=icon-]{background-size:48px;height:48px;width:48px}[class^=icon-],[class*=" icon-"]{background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px}.icon-breadcrumb{background-image:url("../img/breadcrumb.svg?v=1")}.loading,.loading-small,.icon-loading,.icon-loading-dark,.icon-loading-small,.icon-loading-small-dark{position:relative}.loading:after,.loading-small:after,.icon-loading:after,.icon-loading-dark:after,.icon-loading-small:after,.icon-loading-small-dark:after{z-index:2;content:"";height:28px;width:28px;margin:-16px 0 0 -16px;position:absolute;top:50%;left:50%;border-radius:100%;-webkit-animation:rotate .8s infinite linear;animation:rotate .8s infinite linear;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;border:2px solid var(--color-loading-light);border-top-color:var(--color-loading-dark);filter:var(--background-invert-if-dark)}.primary .loading:after,.primary+.loading:after,.primary .loading-small:after,.primary+.loading-small:after,.primary .icon-loading:after,.primary+.icon-loading:after,.primary .icon-loading-dark:after,.primary+.icon-loading-dark:after,.primary .icon-loading-small:after,.primary+.icon-loading-small:after,.primary .icon-loading-small-dark:after,.primary+.icon-loading-small-dark:after{filter:var(--primary-invert-if-bright)}.icon-loading-dark:after,.icon-loading-small-dark:after{border:2px solid var(--color-loading-dark);border-top-color:var(--color-loading-light)}.icon-loading-small:after,.icon-loading-small-dark:after{height:12px;width:12px;margin:-8px 0 0 -8px}audio.icon-loading,canvas.icon-loading,embed.icon-loading,iframe.icon-loading,img.icon-loading,input.icon-loading,object.icon-loading,video.icon-loading{background-image:url("../img/loading.gif")}audio.icon-loading-dark,canvas.icon-loading-dark,embed.icon-loading-dark,iframe.icon-loading-dark,img.icon-loading-dark,input.icon-loading-dark,object.icon-loading-dark,video.icon-loading-dark{background-image:url("../img/loading-dark.gif")}audio.icon-loading-small,canvas.icon-loading-small,embed.icon-loading-small,iframe.icon-loading-small,img.icon-loading-small,input.icon-loading-small,object.icon-loading-small,video.icon-loading-small{background-image:url("../img/loading-small.gif")}audio.icon-loading-small-dark,canvas.icon-loading-small-dark,embed.icon-loading-small-dark,iframe.icon-loading-small-dark,img.icon-loading-small-dark,input.icon-loading-small-dark,object.icon-loading-small-dark,video.icon-loading-small-dark{background-image:url("../img/loading-small-dark.gif")}@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.icon-32{background-size:32px !important}.icon-white.icon-shadow,.icon-audio-white,.icon-audio-off-white,.icon-fullscreen-white,.icon-screen-white,.icon-screen-off-white,.icon-video-white,.icon-video-off-white{filter:drop-shadow(1px 1px 4px var(--color-box-shadow))}:root{--body-container-margin: calc(var(--default-grid-baseline) * 2);--body-container-radius: calc(var(--default-clickable-area) / 2 + var(--default-grid-baseline) * 2 - 2px);--body-height: calc(100% - env(safe-area-inset-bottom) - 50px - var(--body-container-margin))}@media screen and (max-width: 1024px){:root{--body-container-margin: 0px;--body-container-radius: 0px}}html{width:100%;height:100%;position:absolute;background-color:var(--color-background-plain, var(--color-main-background))}body{background-color:var(--color-background-plain, var(--color-main-background));background-image:var(--image-background, var(--image-background-default));background-size:cover;background-position:center;position:fixed;width:100%;height:calc(100vh - env(safe-area-inset-bottom))}h2{font-weight:bold;font-size:20px;margin-bottom:12px;line-height:30px;color:var(--color-text-light)}h3{font-size:16px;margin:12px 0;color:var(--color-text-light)}h4{font-size:14px}em{font-style:normal;color:var(--color-text-lighter)}dl{padding:12px 0}dt,dd{display:inline-block;padding:12px;padding-left:0}dt{width:130px;white-space:nowrap;text-align:right}kbd{padding:4px 10px;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,.2);border-radius:var(--border-radius);display:inline-block;white-space:nowrap}#content[class*=app-] *{box-sizing:border-box}#app-navigation:not(.vue){--border-radius-pill: calc(var(--default-clickable-area) / 2);width:300px;z-index:500;overflow-y:auto;overflow-x:hidden;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);-webkit-user-select:none;position:sticky;height:100%;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0}#app-navigation:not(.vue) .app-navigation-new{display:block;padding:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue) .app-navigation-new button{display:inline-block;width:100%;padding:10px;padding-left:34px;background-position:10px center;text-align:left;margin:0}#app-navigation:not(.vue) li{position:relative}#app-navigation:not(.vue)>ul{position:relative;height:100%;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;padding:calc(var(--default-grid-baseline)*2);padding-bottom:0}#app-navigation:not(.vue)>ul:last-child{padding-bottom:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue)>ul>li{display:inline-flex;flex-wrap:wrap;order:1;flex-shrink:0;margin:0;margin-bottom:3px;width:100%;border-radius:var(--border-radius-pill)}#app-navigation:not(.vue)>ul>li.pinned{order:2}#app-navigation:not(.vue)>ul>li.pinned.first-pinned{margin-top:auto !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-deleted{padding-left:44px !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-edit{padding-left:38px !important}#app-navigation:not(.vue)>ul>li a:hover,#app-navigation:not(.vue)>ul>li a:hover>a,#app-navigation:not(.vue)>ul>li a:focus,#app-navigation:not(.vue)>ul>li a:focus>a{background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li a:focus-visible{box-shadow:var(--color-primary) inset 0 0 0 2px;outline:none}#app-navigation:not(.vue)>ul>li.active,#app-navigation:not(.vue)>ul>li.active>a,#app-navigation:not(.vue)>ul>li a:active,#app-navigation:not(.vue)>ul>li a:active>a,#app-navigation:not(.vue)>ul>li a.selected,#app-navigation:not(.vue)>ul>li a.selected>a,#app-navigation:not(.vue)>ul>li a.active,#app-navigation:not(.vue)>ul>li a.active>a{background-color:var(--color-primary-light)}#app-navigation:not(.vue)>ul>li.icon-loading-small:after{left:22px;top:22px}#app-navigation:not(.vue)>ul>li.deleted>ul,#app-navigation:not(.vue)>ul>li.collapsible:not(.open)>ul{display:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption{font-weight:bold;line-height:44px;padding:0 44px;white-space:nowrap;text-overflow:ellipsis;box-shadow:none !important;user-select:none;pointer-events:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption:not(:first-child){margin-top:22px}#app-navigation:not(.vue)>ul>li>ul{flex:0 1 auto;width:100%;position:relative}#app-navigation:not(.vue)>ul>li>ul>li{display:inline-flex;flex-wrap:wrap;padding-left:44px;width:100%;margin-bottom:3px}#app-navigation:not(.vue)>ul>li>ul>li:hover,#app-navigation:not(.vue)>ul>li>ul>li:hover>a,#app-navigation:not(.vue)>ul>li>ul>li:focus,#app-navigation:not(.vue)>ul>li>ul>li:focus>a{border-radius:var(--border-radius-pill);background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li>ul>li.active,#app-navigation:not(.vue)>ul>li>ul>li.active>a,#app-navigation:not(.vue)>ul>li>ul>li a.selected,#app-navigation:not(.vue)>ul>li>ul>li a.selected>a{border-radius:var(--border-radius-pill);background-color:var(--color-primary-light)}#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small:after{left:22px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-deleted{margin-left:4px;padding-left:84px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-edit{margin-left:4px;padding-left:78px !important}#app-navigation:not(.vue)>ul>li,#app-navigation:not(.vue)>ul>li>ul>li{position:relative;box-sizing:border-box}#app-navigation:not(.vue)>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li.icon-loading-small>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>a,#app-navigation:not(.vue)>ul>li>ul>li>a{background-size:16px 16px;background-position:14px center;background-repeat:no-repeat;display:block;justify-content:space-between;line-height:44px;min-height:44px;padding:0 12px 0 14px;overflow:hidden;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;border-radius:var(--border-radius-pill);color:var(--color-main-text);flex:1 1 0px;z-index:100}#app-navigation:not(.vue)>ul>li>a.svg,#app-navigation:not(.vue)>ul>li>ul>li>a.svg{padding:0 12px 0 44px}#app-navigation:not(.vue)>ul>li>a.svg :focus-visible,#app-navigation:not(.vue)>ul>li>ul>li>a.svg :focus-visible{padding:0 8px 0 42px}#app-navigation:not(.vue)>ul>li>a:first-child img,#app-navigation:not(.vue)>ul>li>ul>li>a:first-child img{margin-right:11px;width:16px;height:16px;filter:var(--background-invert-if-dark)}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils{display:inline-block;float:right}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter{padding-right:0 !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet{position:absolute;display:block;margin:16px;width:12px;height:12px;border:none;border-radius:50%;cursor:pointer;transition:background 100ms ease-in-out}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet+a,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet+a{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-menu,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-menu{top:44px}#app-navigation:not(.vue)>ul>li.editing .app-navigation-entry-edit,#app-navigation:not(.vue)>ul>li>ul>li.editing .app-navigation-entry-edit{opacity:1;z-index:250}#app-navigation:not(.vue)>ul>li.deleted .app-navigation-entry-deleted,#app-navigation:not(.vue)>ul>li>ul>li.deleted .app-navigation-entry-deleted{transform:translateX(0);z-index:250}#app-navigation:not(.vue).hidden{display:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{border:0;opacity:.5;background-color:rgba(0,0,0,0);background-repeat:no-repeat;background-position:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:hover,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:focus,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .collapsible .collapse{opacity:0;position:absolute;width:44px;height:44px;margin:0;z-index:110;left:0}#app-navigation:not(.vue) .collapsible .collapse:focus-visible{opacity:1;border-width:0;box-shadow:inset 0 0 0 2px var(--color-primary);background:none}#app-navigation:not(.vue) .collapsible:before{position:absolute;height:44px;width:44px;margin:0;padding:0;background:none;background-image:var(--icon-triangle-s-dark);background-size:16px;background-repeat:no-repeat;background-position:center;border:none;border-radius:0;outline:none !important;box-shadow:none;content:" ";opacity:0;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);z-index:105;border-radius:50%;transition:opacity 100ms ease-in-out}#app-navigation:not(.vue) .collapsible>a:first-child{padding-left:44px}#app-navigation:not(.vue) .collapsible:hover:before,#app-navigation:not(.vue) .collapsible:focus:before{opacity:1}#app-navigation:not(.vue) .collapsible:hover>a,#app-navigation:not(.vue) .collapsible:focus>a{background-image:none}#app-navigation:not(.vue) .collapsible:hover>.app-navigation-entry-bullet,#app-navigation:not(.vue) .collapsible:focus>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue) .collapsible.open:before{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}#app-navigation:not(.vue) .app-navigation-entry-utils{flex:0 1 auto}#app-navigation:not(.vue) .app-navigation-entry-utils ul{display:flex !important;align-items:center;justify-content:flex-end}#app-navigation:not(.vue) .app-navigation-entry-utils li{width:44px !important;height:44px}#app-navigation:not(.vue) .app-navigation-entry-utils button{height:100%;width:100%;margin:0;box-shadow:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button button:not([class^=icon-]):not([class*=" icon-"]){background-image:var(--icon-more-dark)}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:hover button,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:focus button{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter{overflow:hidden;text-align:right;font-size:9pt;line-height:44px;padding:0 12px}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted{padding:0;text-align:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted span{padding:2px 5px;border-radius:10px;background-color:var(--color-primary);color:var(--color-primary-text)}#app-navigation:not(.vue) .app-navigation-entry-edit{padding-left:5px;padding-right:5px;display:block;width:calc(100% - 1px);transition:opacity 250ms ease-in-out;opacity:0;position:absolute;background-color:var(--color-main-background);z-index:-1}#app-navigation:not(.vue) .app-navigation-entry-edit form,#app-navigation:not(.vue) .app-navigation-entry-edit div{display:inline-flex;width:100%}#app-navigation:not(.vue) .app-navigation-entry-edit input{padding:5px;margin-right:0;height:38px}#app-navigation:not(.vue) .app-navigation-entry-edit input:hover,#app-navigation:not(.vue) .app-navigation-entry-edit input:focus{z-index:1}#app-navigation:not(.vue) .app-navigation-entry-edit input[type=text]{width:100%;min-width:0;border-bottom-right-radius:0;border-top-right-radius:0}#app-navigation:not(.vue) .app-navigation-entry-edit button,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]){width:36px;height:38px;flex:0 0 36px}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:last-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:last-child){border-radius:0 !important}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:first-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:first-child){margin-left:-1px}#app-navigation:not(.vue) .app-navigation-entry-edit button:last-child,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):last-child{border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-left-radius:0;border-top-left-radius:0}#app-navigation:not(.vue) .app-navigation-entry-deleted{display:inline-flex;padding-left:44px;transform:translateX(300px)}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-description{position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:1 1 0px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{margin:0;height:44px;width:44px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{opacity:1}#app-navigation:not(.vue) .app-navigation-entry-edit,#app-navigation:not(.vue) .app-navigation-entry-deleted{width:calc(100% - 1px);transition:transform 250ms ease-in-out,opacity 250ms ease-in-out,z-index 250ms ease-in-out;position:absolute;left:0;background-color:var(--color-main-background);box-sizing:border-box}#app-navigation:not(.vue) .drag-and-drop{-webkit-transition:padding-bottom 500ms ease 0s;transition:padding-bottom 500ms ease 0s;padding-bottom:40px}#app-navigation:not(.vue) .error{color:var(--color-error)}#app-navigation:not(.vue) .app-navigation-entry-utils ul,#app-navigation:not(.vue) .app-navigation-entry-menu ul{list-style-type:none}#content{box-sizing:border-box;position:static;margin:var(--body-container-margin);margin-top:50px;padding:0;display:flex;width:calc(100% - var(--body-container-margin)*2);height:var(--body-height);border-radius:var(--body-container-radius);overflow:clip}#content:not(.with-sidebar--full){position:fixed}@media only screen and (max-width: 1024px){#content{border-top-left-radius:var(--border-radius-large);border-top-right-radius:var(--border-radius-large)}#app-navigation{border-top-left-radius:var(--border-radius-large)}#app-sidebar{border-top-right-radius:var(--border-radius-large)}}#app-content{z-index:1000;background-color:var(--color-main-background);flex-basis:100vw;overflow:auto;position:initial;height:100%}#app-content>.section:first-child{border-top:none}#app-content #app-content-wrapper{display:flex;position:relative;align-items:stretch;min-height:100%}#app-content #app-content-wrapper .app-content-details{flex:1 1 524px}#app-content #app-content-wrapper .app-content-details #app-navigation-toggle-back{display:none}#app-content::-webkit-scrollbar-button{height:var(--body-container-radius)}#app-sidebar{width:27vw;min-width:300px;max-width:500px;display:block;position:-webkit-sticky;position:sticky;top:50px;right:0;overflow-y:auto;overflow-x:hidden;z-index:1500;opacity:.7px;height:calc(100vh - 50px);background:var(--color-main-background);border-left:1px solid var(--color-border);flex-shrink:0}#app-sidebar.disappear{display:none}#app-settings{margin-top:auto}#app-settings.open #app-settings-content,#app-settings.opened #app-settings-content{display:block}#app-settings-content{display:none;padding:calc(var(--default-grid-baseline)*2);padding-top:0;padding-left:calc(var(--default-grid-baseline)*4);max-height:300px;overflow-y:auto;box-sizing:border-box}#app-settings-content input[type=text]{width:93%}#app-settings-content .info-text{padding:5px 0 7px 22px;color:var(--color-text-lighter)}#app-settings-content input[type=checkbox].radio+label,#app-settings-content input[type=checkbox].checkbox+label,#app-settings-content input[type=radio].radio+label,#app-settings-content input[type=radio].checkbox+label{display:inline-block;width:100%;padding:5px 0}#app-settings-header{box-sizing:border-box;background-color:rgba(0,0,0,0);overflow:hidden;border-radius:calc(var(--default-clickable-area)/2);padding:calc(var(--default-grid-baseline)*2);padding-top:0}#app-settings-header .settings-button{display:flex;align-items:center;height:44px;width:100%;padding:0;margin:0;background-color:rgba(0,0,0,0);box-shadow:none;border:0;border-radius:calc(var(--default-clickable-area)/2);text-align:left;font-weight:normal;font-size:100%;opacity:.8;color:var(--color-main-text)}#app-settings-header .settings-button.opened{border-top:solid 1px var(--color-border);background-color:var(--color-main-background);margin-top:8px}#app-settings-header .settings-button:hover,#app-settings-header .settings-button:focus{background-color:var(--color-background-hover)}#app-settings-header .settings-button::before{background-image:var(--icon-settings-dark);background-position:14px center;background-repeat:no-repeat;content:"";width:44px;height:44px;top:0;left:0;display:block}#app-settings-header .settings-button:focus-visible{box-shadow:0 0 0 2px inset var(--color-primary) !important;background-position:12px center}.section{display:block;padding:30px;margin-bottom:24px}.section.hidden{display:none !important}.section input[type=checkbox],.section input[type=radio]{vertical-align:-2px;margin-right:4px}.sub-section{position:relative;margin-top:10px;margin-left:27px;margin-bottom:10px}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}.tabHeaders{display:flex;margin-bottom:16px}.tabHeaders .tabHeader{display:flex;flex-direction:column;flex-grow:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;color:var(--color-text-lighter);margin-bottom:1px;padding:5px}.tabHeaders .tabHeader.hidden{display:none}.tabHeaders .tabHeader:first-child{padding-left:15px}.tabHeaders .tabHeader:last-child{padding-right:15px}.tabHeaders .tabHeader .icon{display:inline-block;width:100%;height:16px;background-size:16px;vertical-align:middle;margin-top:-2px;margin-right:3px;opacity:.7;cursor:pointer}.tabHeaders .tabHeader a{color:var(--color-text-lighter);margin-bottom:1px;overflow:hidden;text-overflow:ellipsis}.tabHeaders .tabHeader.selected{font-weight:bold}.tabHeaders .tabHeader.selected,.tabHeaders .tabHeader:hover,.tabHeaders .tabHeader:focus{margin-bottom:0px;color:var(--color-main-text);border-bottom:1px solid var(--color-text-lighter)}.tabsContainer{clear:left}.tabsContainer .tab{padding:0 15px 15px}.contact .popovermenu ul>li>a>img,.popover__menu>li>a>img{filter:var(--background-invert-if-dark)}.contact .popovermenu ul>li>a>img[src^=data],.popover__menu>li>a>img[src^=data]{filter:none}.bubble,.app-navigation-entry-menu,.popovermenu{position:absolute;background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-large);padding:3px;z-index:110;margin:5px;margin-top:-5px;right:0;filter:drop-shadow(0 1px 3px var(--color-box-shadow));display:none;will-change:filter}.bubble:after,.app-navigation-entry-menu:after,.popovermenu:after{bottom:100%;right:7px;border:solid rgba(0,0,0,0);content:" ";height:0;width:0;position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);border-width:9px}.bubble.menu-center,.app-navigation-entry-menu.menu-center,.popovermenu.menu-center{transform:translateX(50%);right:50%;margin-right:0}.bubble.menu-center:after,.app-navigation-entry-menu.menu-center:after,.popovermenu.menu-center:after{right:50%;transform:translateX(50%)}.bubble.menu-left,.app-navigation-entry-menu.menu-left,.popovermenu.menu-left{right:auto;left:0;margin-right:0}.bubble.menu-left:after,.app-navigation-entry-menu.menu-left:after,.popovermenu.menu-left:after{left:6px;right:auto}.bubble.open,.app-navigation-entry-menu.open,.popovermenu.open{display:block}.bubble.contactsmenu-popover,.app-navigation-entry-menu.contactsmenu-popover,.popovermenu.contactsmenu-popover{margin:0}.bubble ul,.app-navigation-entry-menu ul,.popovermenu ul{display:flex !important;flex-direction:column}.bubble li,.app-navigation-entry-menu li,.popovermenu li{display:flex;flex:0 0 auto}.bubble li.hidden,.app-navigation-entry-menu li.hidden,.popovermenu li.hidden{display:none}.bubble li>button,.bubble li>a,.bubble li>.menuitem,.app-navigation-entry-menu li>button,.app-navigation-entry-menu li>a,.app-navigation-entry-menu li>.menuitem,.popovermenu li>button,.popovermenu li>a,.popovermenu li>.menuitem{cursor:pointer;line-height:44px;border:0;border-radius:var(--border-radius-large);background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{min-width:0;min-height:0;background-position:14px center;background-size:16px}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"]{padding:22px 0 22px 44px}.bubble li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{padding:0 14px 0 44px !important}.bubble li>button:hover,.bubble li>button:focus,.bubble li>a:hover,.bubble li>a:focus,.bubble li>.menuitem:hover,.bubble li>.menuitem:focus,.app-navigation-entry-menu li>button:hover,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>a:hover,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>.menuitem:hover,.app-navigation-entry-menu li>.menuitem:focus,.popovermenu li>button:hover,.popovermenu li>button:focus,.popovermenu li>a:hover,.popovermenu li>a:focus,.popovermenu li>.menuitem:hover,.popovermenu li>.menuitem:focus{background-color:var(--color-background-hover)}.bubble li>button:focus,.bubble li>button:focus-visible,.bubble li>a:focus,.bubble li>a:focus-visible,.bubble li>.menuitem:focus,.bubble li>.menuitem:focus-visible,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>button:focus-visible,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>a:focus-visible,.app-navigation-entry-menu li>.menuitem:focus,.app-navigation-entry-menu li>.menuitem:focus-visible,.popovermenu li>button:focus,.popovermenu li>button:focus-visible,.popovermenu li>a:focus,.popovermenu li>a:focus-visible,.popovermenu li>.menuitem:focus,.popovermenu li>.menuitem:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element)}.bubble li>button.active,.bubble li>a.active,.bubble li>.menuitem.active,.app-navigation-entry-menu li>button.active,.app-navigation-entry-menu li>a.active,.app-navigation-entry-menu li>.menuitem.active,.popovermenu li>button.active,.popovermenu li>a.active,.popovermenu li>.menuitem.active{border-radius:var(--border-radius-pill);background-color:var(--color-primary-light)}.bubble li>button.action,.bubble li>a.action,.bubble li>.menuitem.action,.app-navigation-entry-menu li>button.action,.app-navigation-entry-menu li>a.action,.app-navigation-entry-menu li>.menuitem.action,.popovermenu li>button.action,.popovermenu li>a.action,.popovermenu li>.menuitem.action{padding:inherit !important}.bubble li>button>span,.bubble li>a>span,.bubble li>.menuitem>span,.app-navigation-entry-menu li>button>span,.app-navigation-entry-menu li>a>span,.app-navigation-entry-menu li>.menuitem>span,.popovermenu li>button>span,.popovermenu li>a>span,.popovermenu li>.menuitem>span{cursor:pointer;white-space:nowrap}.bubble li>button>p,.bubble li>a>p,.bubble li>.menuitem>p,.app-navigation-entry-menu li>button>p,.app-navigation-entry-menu li>a>p,.app-navigation-entry-menu li>.menuitem>p,.popovermenu li>button>p,.popovermenu li>a>p,.popovermenu li>.menuitem>p{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}.bubble li>button>select,.bubble li>a>select,.bubble li>.menuitem>select,.app-navigation-entry-menu li>button>select,.app-navigation-entry-menu li>a>select,.app-navigation-entry-menu li>.menuitem>select,.popovermenu li>button>select,.popovermenu li>a>select,.popovermenu li>.menuitem>select{margin:0;margin-left:6px}.bubble li>button:not(:empty),.bubble li>a:not(:empty),.bubble li>.menuitem:not(:empty),.app-navigation-entry-menu li>button:not(:empty),.app-navigation-entry-menu li>a:not(:empty),.app-navigation-entry-menu li>.menuitem:not(:empty),.popovermenu li>button:not(:empty),.popovermenu li>a:not(:empty),.popovermenu li>.menuitem:not(:empty){padding-right:14px !important}.bubble li>button>img,.bubble li>a>img,.bubble li>.menuitem>img,.app-navigation-entry-menu li>button>img,.app-navigation-entry-menu li>a>img,.app-navigation-entry-menu li>.menuitem>img,.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:16px;padding:14px}.bubble li>button>input.radio+label,.bubble li>button>input.checkbox+label,.bubble li>a>input.radio+label,.bubble li>a>input.checkbox+label,.bubble li>.menuitem>input.radio+label,.bubble li>.menuitem>input.checkbox+label,.app-navigation-entry-menu li>button>input.radio+label,.app-navigation-entry-menu li>button>input.checkbox+label,.app-navigation-entry-menu li>a>input.radio+label,.app-navigation-entry-menu li>a>input.checkbox+label,.app-navigation-entry-menu li>.menuitem>input.radio+label,.app-navigation-entry-menu li>.menuitem>input.checkbox+label,.popovermenu li>button>input.radio+label,.popovermenu li>button>input.checkbox+label,.popovermenu li>a>input.radio+label,.popovermenu li>a>input.checkbox+label,.popovermenu li>.menuitem>input.radio+label,.popovermenu li>.menuitem>input.checkbox+label{padding:0 !important;width:100%}.bubble li>button>input.checkbox+label::before,.bubble li>a>input.checkbox+label::before,.bubble li>.menuitem>input.checkbox+label::before,.app-navigation-entry-menu li>button>input.checkbox+label::before,.app-navigation-entry-menu li>a>input.checkbox+label::before,.app-navigation-entry-menu li>.menuitem>input.checkbox+label::before,.popovermenu li>button>input.checkbox+label::before,.popovermenu li>a>input.checkbox+label::before,.popovermenu li>.menuitem>input.checkbox+label::before{margin:-2px 13px 0}.bubble li>button>input.radio+label::before,.bubble li>a>input.radio+label::before,.bubble li>.menuitem>input.radio+label::before,.app-navigation-entry-menu li>button>input.radio+label::before,.app-navigation-entry-menu li>a>input.radio+label::before,.app-navigation-entry-menu li>.menuitem>input.radio+label::before,.popovermenu li>button>input.radio+label::before,.popovermenu li>a>input.radio+label::before,.popovermenu li>.menuitem>input.radio+label::before{margin:-2px 12px 0}.bubble li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}.bubble li>button form,.bubble li>a form,.bubble li>.menuitem form,.app-navigation-entry-menu li>button form,.app-navigation-entry-menu li>a form,.app-navigation-entry-menu li>.menuitem form,.popovermenu li>button form,.popovermenu li>a form,.popovermenu li>.menuitem form{display:flex;flex:1 1 auto;align-items:center}.bubble li>button form:not(:first-child),.bubble li>a form:not(:first-child),.bubble li>.menuitem form:not(:first-child),.app-navigation-entry-menu li>button form:not(:first-child),.app-navigation-entry-menu li>a form:not(:first-child),.app-navigation-entry-menu li>.menuitem form:not(:first-child),.popovermenu li>button form:not(:first-child),.popovermenu li>a form:not(:first-child),.popovermenu li>.menuitem form:not(:first-child){margin-left:5px}.bubble li>button>span.hidden+form,.bubble li>button>span[style*="display:none"]+form,.bubble li>a>span.hidden+form,.bubble li>a>span[style*="display:none"]+form,.bubble li>.menuitem>span.hidden+form,.bubble li>.menuitem>span[style*="display:none"]+form,.app-navigation-entry-menu li>button>span.hidden+form,.app-navigation-entry-menu li>button>span[style*="display:none"]+form,.app-navigation-entry-menu li>a>span.hidden+form,.app-navigation-entry-menu li>a>span[style*="display:none"]+form,.app-navigation-entry-menu li>.menuitem>span.hidden+form,.app-navigation-entry-menu li>.menuitem>span[style*="display:none"]+form,.popovermenu li>button>span.hidden+form,.popovermenu li>button>span[style*="display:none"]+form,.popovermenu li>a>span.hidden+form,.popovermenu li>a>span[style*="display:none"]+form,.popovermenu li>.menuitem>span.hidden+form,.popovermenu li>.menuitem>span[style*="display:none"]+form{margin-left:0}.bubble li>button input,.bubble li>a input,.bubble li>.menuitem input,.app-navigation-entry-menu li>button input,.app-navigation-entry-menu li>a input,.app-navigation-entry-menu li>.menuitem input,.popovermenu li>button input,.popovermenu li>a input,.popovermenu li>.menuitem input{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}.bubble li>button input:not(:first-child),.bubble li>a input:not(:first-child),.bubble li>.menuitem input:not(:first-child),.app-navigation-entry-menu li>button input:not(:first-child),.app-navigation-entry-menu li>a input:not(:first-child),.app-navigation-entry-menu li>.menuitem input:not(:first-child),.popovermenu li>button input:not(:first-child),.popovermenu li>a input:not(:first-child),.popovermenu li>.menuitem input:not(:first-child){margin-left:5px}.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input{margin-top:12px}.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input{margin-bottom:0px}.bubble li>button,.app-navigation-entry-menu li>button,.popovermenu li>button{padding:0}.bubble li>button span,.app-navigation-entry-menu li>button span,.popovermenu li>button span{opacity:1}.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:44px;height:44px}#contactsmenu .contact .popovermenu li>a>img{width:16px;height:16px}.app-content-list{position:-webkit-sticky;position:relative;top:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:transform 250ms ease-in-out;min-height:100%;max-height:100%;overflow-y:auto;overflow-x:hidden;flex:1 1 200px;min-width:200px;max-width:300px}.app-content-list .app-content-list-item{position:relative;height:68px;cursor:pointer;padding:10px 7px;display:flex;flex-wrap:wrap;align-items:center;flex:0 0 auto}.app-content-list .app-content-list-item>[class^=icon-],.app-content-list .app-content-list-item>[class*=" icon-"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]{order:4;width:24px;height:24px;margin:-7px;padding:22px;opacity:.3;cursor:pointer}.app-content-list .app-content-list-item>[class^=icon-]:hover,.app-content-list .app-content-list-item>[class^=icon-]:focus,.app-content-list .app-content-list-item>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:focus{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:focus{opacity:1}.app-content-list .app-content-list-item>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>[class*=" icon-"].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"].icon-starred{opacity:1}.app-content-list .app-content-list-item:hover,.app-content-list .app-content-list-item:focus,.app-content-list .app-content-list-item.active{background-color:var(--color-background-dark)}.app-content-list .app-content-list-item:hover .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item:focus .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item.active .app-content-list-item-checkbox.checkbox+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item .app-content-list-item-star{position:absolute;height:40px;width:40px;z-index:50}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label+.app-content-list-item-icon{opacity:.7}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label{top:14px;left:7px;display:none}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label::before{margin:0}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label~.app-content-list-item-star{display:none}.app-content-list .app-content-list-item .app-content-list-item-star{display:flex;top:10px;left:32px;background-size:16px;height:20px;width:20px;margin:0;padding:0}.app-content-list .app-content-list-item .app-content-list-item-icon{position:absolute;display:inline-block;height:40px;width:40px;line-height:40px;border-radius:50%;vertical-align:middle;margin-right:10px;color:#fff;text-align:center;font-size:1.5em;text-transform:capitalize;object-fit:cover;user-select:none;cursor:pointer;top:50%;margin-top:-20px}.app-content-list .app-content-list-item .app-content-list-item-line-one,.app-content-list .app-content-list-item .app-content-list-item-line-two{display:block;padding-left:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;order:1;flex:1 1 0px;padding-right:10px;cursor:pointer}.app-content-list .app-content-list-item .app-content-list-item-line-two{opacity:.5;order:3;flex:1 0;flex-basis:calc(100% - 44px)}.app-content-list .app-content-list-item .app-content-list-item-details{order:2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px;opacity:.5;font-size:80%;user-select:none}.app-content-list .app-content-list-item .app-content-list-item-menu{order:4;position:relative}.app-content-list .app-content-list-item .app-content-list-item-menu .popovermenu{margin:0;right:-2px}.app-content-list.selection .app-content-list-item-checkbox.checkbox+label{display:flex}.pull-left{float:left}.pull-right{float:right}.clear-left{clear:left}.clear-right{clear:right}.clear-both{clear:both}.hidden{display:none}.hidden-visually{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}.bold{font-weight:600}.center{text-align:center}.inlineblock{display:inline-block}::-moz-focus-inner{border:0}@media only screen and (width < 1024px){#dropdown{margin-right:10% !important;width:80% !important}.ui-autocomplete{z-index:1000 !important}.error-wide{width:100%;margin-left:0 !important;box-sizing:border-box}#app-navigation:not(.vue){transform:translateX(-300px);position:fixed;height:var(--body-height)}.snapjs-left #app-navigation{transform:translateX(0)}#app-navigation:not(.hidden)+#app-content{margin-left:0}.skip-navigation.skip-content{left:3px;margin-left:0}.app-content-list{background:var(--color-main-background);flex:1 1 100%;max-height:unset;max-width:100%}.app-content-list+.app-content-details{display:none}.app-content-list.showdetails{display:none}.app-content-list.showdetails+.app-content-details{display:initial}#app-content.showdetails #app-navigation-toggle{transform:translateX(-44px)}#app-content.showdetails #app-navigation-toggle-back{position:fixed;display:inline-block !important;top:50px;left:0;width:44px;height:44px;z-index:1050;background-color:rgba(255,255,255,.7);cursor:pointer;opacity:.6;transform:rotate(90deg)}#app-content.showdetails .app-content-list{transform:translateX(-100%)}#app-navigation-toggle{position:fixed;display:inline-block !important;left:0;width:44px;height:44px;z-index:1050;cursor:pointer;opacity:.6}#app-navigation-toggle:hover,#app-navigation-toggle:focus{opacity:1}#app-navigation+#app-content .files-controls{padding-left:44px}#body-user .app-files.viewer-mode .files-controls{padding-left:0 !important}.app-files.viewer-mode #app-navigation-toggle{display:none !important}table.multiselect thead{left:0 !important}#usersearchform{display:none}#body-settings .files-controls{min-width:1024px !important}#oc-dialog-filepicker-content .filelist .column-size,#oc-dialog-filepicker-content .filelist .column-mtime,#oc-dialog-filepicker-content .filelist .filesize,#oc-dialog-filepicker-content .filelist .date{display:none}#oc-dialog-filepicker-content .filelist .filename{max-width:100%}.snapjs-left table.multiselect thead{top:44px}}@media only screen and (max-width: 480px){#header .header-right>div>.menu{max-width:calc(100vw - 10px);position:fixed}#header .header-right>div>.menu::after{display:none !important}#header .header-right>div.openedMenu::after{display:block}#header .header-right>div::after{border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background);bottom:0;content:" ";height:0;width:0;position:absolute;pointer-events:none;right:15px;z-index:2001;display:none}#header .header-right>div#settings::after{right:27px}}.tooltip{position:absolute;display:block;font-family:var(--font-face);font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;overflow-wrap:anywhere;font-size:12px;opacity:0;z-index:100000;margin-top:-3px;padding:10px 0;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.tooltip.in,.tooltip.show,.tooltip.tooltip[aria-hidden=false]{visibility:visible;opacity:1;transition:opacity .15s}.tooltip.top .tooltip-arrow,.tooltip[x-placement^=top]{left:50%;margin-left:-10px}.tooltip.bottom,.tooltip[x-placement^=bottom]{margin-top:3px;padding:10px 0}.tooltip.right,.tooltip[x-placement^=right]{margin-left:3px;padding:0 10px}.tooltip.right .tooltip-arrow,.tooltip[x-placement^=right] .tooltip-arrow{top:50%;left:0;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:var(--color-main-background)}.tooltip.left,.tooltip[x-placement^=left]{margin-left:-3px;padding:0 5px}.tooltip.left .tooltip-arrow,.tooltip[x-placement^=left] .tooltip-arrow{top:50%;right:0;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:var(--color-main-background)}.tooltip.top .tooltip-arrow,.tooltip.top .arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-left .arrow,.tooltip[x-placement^=top] .tooltip-arrow,.tooltip[x-placement^=top] .arrow,.tooltip.top-right .tooltip-arrow,.tooltip.top-right .arrow{bottom:0;border-width:10px 10px 0;border-top-color:var(--color-main-background)}.tooltip.top-left .tooltip-arrow{right:10px;margin-bottom:-10px}.tooltip.top-right .tooltip-arrow{left:10px;margin-bottom:-10px}.tooltip.bottom .tooltip-arrow,.tooltip.bottom .arrow,.tooltip[x-placement^=bottom] .tooltip-arrow,.tooltip[x-placement^=bottom] .arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-left .arrow,.tooltip.bottom-right .tooltip-arrow,.tooltip.bottom-right .arrow{top:0;border-width:0 10px 10px;border-bottom-color:var(--color-main-background)}.tooltip[x-placement^=bottom] .tooltip-arrow,.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-10px}.tooltip.bottom-left .tooltip-arrow{right:10px;margin-top:-10px}.tooltip.bottom-right .tooltip-arrow{left:10px;margin-top:-10px}.tooltip-inner{max-width:350px;padding:5px 8px;background-color:var(--color-main-background);color:var(--color-main-text);text-align:center;border-radius:var(--border-radius)}.tooltip-arrow,.tooltip .arrow{position:absolute;width:0;height:0;border-color:rgba(0,0,0,0);border-style:solid}.toastify.dialogs{min-width:200px;background:none;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 6px 0 var(--color-box-shadow);padding:0 12px;margin-top:45px;position:fixed;z-index:10100;border-radius:var(--border-radius);display:flex;align-items:center}.toastify.dialogs .toast-undo-container{display:flex;align-items:center}.toastify.dialogs .toast-undo-button,.toastify.dialogs .toast-close{position:static;overflow:hidden;box-sizing:border-box;min-width:44px;height:100%;padding:12px;white-space:nowrap;background-repeat:no-repeat;background-position:center;background-color:transparent;min-height:0}.toastify.dialogs .toast-undo-button.toast-close,.toastify.dialogs .toast-close.toast-close{text-indent:0;opacity:.4;border:none;min-height:44px;margin-left:10px;font-size:0}.toastify.dialogs .toast-undo-button.toast-close::before,.toastify.dialogs .toast-close.toast-close::before{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo=");content:" ";filter:var(--background-invert-if-dark);display:inline-block;width:16px;height:16px}.toastify.dialogs .toast-undo-button.toast-undo-button,.toastify.dialogs .toast-close.toast-undo-button{margin:3px;height:calc(100% - 6px);margin-left:12px}.toastify.dialogs .toast-undo-button:hover,.toastify.dialogs .toast-undo-button:focus,.toastify.dialogs .toast-undo-button:active,.toastify.dialogs .toast-close:hover,.toastify.dialogs .toast-close:focus,.toastify.dialogs .toast-close:active{cursor:pointer;opacity:1}.toastify.dialogs.toastify-top{right:10px}.toastify.dialogs.toast-with-click{cursor:pointer}.toastify.dialogs.toast-error{border-left:3px solid var(--color-error)}.toastify.dialogs.toast-info{border-left:3px solid var(--color-primary)}.toastify.dialogs.toast-warning{border-left:3px solid var(--color-warning)}.toastify.dialogs.toast-success{border-left:3px solid var(--color-success)}.toastify.dialogs.toast-undo{border-left:3px solid var(--color-success)}.theme--dark .toastify.dialogs .toast-close.toast-close::before{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo=")}#body-public .header-right #header-primary-action a{color:var(--color-primary-text)}#body-public .header-right #header-secondary-action ul li{min-width:270px}#body-public .header-right #header-secondary-action #header-actions-toggle{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);filter:var(--background-invert-if-dark)}#body-public .header-right #header-secondary-action #header-actions-toggle:hover,#body-public .header-right #header-secondary-action #header-actions-toggle:focus,#body-public .header-right #header-secondary-action #header-actions-toggle:active{opacity:1}#body-public .header-right #header-secondary-action #external-share-menu-item form{display:flex}#body-public .header-right #header-secondary-action #external-share-menu-item .hidden{display:none}#body-public .header-right #header-secondary-action #external-share-menu-item #save-button-confirm{flex-grow:0}#body-public #content{min-height:calc(100% - 65px)}#body-public.layout-base #content{padding-top:0}#body-public p.info{margin:20px auto;text-shadow:0 0 2px rgba(0,0,0,.4);-moz-user-select:none;-ms-user-select:none;user-select:none}#body-public p.info,#body-public form fieldset legend,#body-public #datadirContent label,#body-public form fieldset .warning-info,#body-public form input[type=checkbox]+label{text-align:center}#body-public footer{position:fixed;display:flex;align-items:center;justify-content:center;height:65px;flex-direction:column;bottom:0;width:calc(100% - 16px);margin:8px;background-color:var(--color-main-background);border-radius:var(--border-radius-large)}#body-public footer p{text-align:center;color:var(--color-text-lighter)}#body-public footer p a{color:var(--color-text-lighter);font-weight:bold;white-space:nowrap;padding:10px;margin:-10px;line-height:200%}/*# sourceMappingURL=server.css.map */ +@import"../../dist/icons.css";html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section,main{margin:0;padding:0;border:0;font-weight:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;cursor:default;scrollbar-color:var(--color-border-dark) rgba(0,0,0,0);scrollbar-width:thin}.js-focus-visible :focus:not(.focus-visible){outline:none}.content:not(#content-vue) :focus-visible,.app-navigation:not(#app-navigation-vue) :focus-visible{box-shadow:inset 0 0 0 2px var(--color-primary-element);outline:none}html,body{height:100%}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5}table{border-collapse:separate;border-spacing:0;white-space:nowrap}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}a{border:0;color:var(--color-main-text);text-decoration:none;cursor:pointer}a *{cursor:pointer}a.external{margin:0 3px;text-decoration:underline}input{cursor:pointer}input *{cursor:pointer}select,.button span,label{cursor:pointer}ul{list-style:none}body{font-weight:normal;font-size:var(--default-font-size);line-height:var(--default-line-height);font-family:var(--font-face);color:var(--color-main-text)}.two-factor-header{text-align:center}.two-factor-provider{text-align:center;width:100% !important;display:inline-block;margin-bottom:0 !important;background-color:var(--color-background-darker) !important;border:none !important}.two-factor-link{display:inline-block;padding:12px;color:var(--color-text-lighter)}.float-spinner{height:32px;display:none}#nojavascript{position:fixed;top:0;bottom:0;left:0;height:100%;width:100%;z-index:9000;text-align:center;background-color:var(--color-background-darker);color:var(--color-primary-element-text);line-height:125%;font-size:24px}#nojavascript div{display:block;position:relative;width:50%;top:35%;margin:0px auto}#nojavascript a{color:var(--color-primary-element-text);border-bottom:2px dotted var(--color-main-background)}#nojavascript a:hover,#nojavascript a:focus{color:var(--color-primary-element-text-dark)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:var(--border-radius-large);border:2px solid rgba(0,0,0,0);background-clip:content-box}::selection{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}#app-navigation *{box-sizing:border-box}#emptycontent,.emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:30vh;width:100%}#app-sidebar #emptycontent,#app-sidebar .emptycontent{margin-top:10vh}#emptycontent .emptycontent-search,.emptycontent .emptycontent-search{position:static}#emptycontent h2,.emptycontent h2{margin-bottom:10px}#emptycontent [class^=icon-],#emptycontent [class*=icon-],.emptycontent [class^=icon-],.emptycontent [class*=icon-]{background-size:64px;height:64px;width:64px;margin:0 auto 15px}#emptycontent [class^=icon-]:not([class^=icon-loading]),#emptycontent [class^=icon-]:not([class*=icon-loading]),#emptycontent [class*=icon-]:not([class^=icon-loading]),#emptycontent [class*=icon-]:not([class*=icon-loading]),.emptycontent [class^=icon-]:not([class^=icon-loading]),.emptycontent [class^=icon-]:not([class*=icon-loading]),.emptycontent [class*=icon-]:not([class^=icon-loading]),.emptycontent [class*=icon-]:not([class*=icon-loading]){opacity:.4}#datadirContent label{width:100%}.grouptop,.groupmiddle,.groupbottom{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#show,#dbpassword{position:absolute;right:1em;top:.8em;float:right}#show+label,#dbpassword+label{right:21px;top:15px !important;margin:-14px !important;padding:14px !important}#show:checked+label,#dbpassword:checked+label,#personal-show:checked+label{opacity:.8}#show:focus-visible+label,#dbpassword-toggle:focus-visible+label,#personal-show:focus-visible+label{box-shadow:var(--color-primary-element) 0 0 0 2px;opacity:1;border-radius:9999px}#show+label,#dbpassword+label,#personal-show+label{position:absolute !important;height:20px;width:24px;background-image:var(--icon-toggle-dark);background-repeat:no-repeat;background-position:center;opacity:.3}#show:focus+label,#dbpassword:focus+label,#personal-show:focus+label{opacity:1}#show+label:hover,#dbpassword+label:hover,#personal-show+label:hover{opacity:1}#show+label:before,#dbpassword+label:before,#personal-show+label:before{display:none}#pass2,input[name=personal-password-clone]{padding-right:30px}.personal-show-container{position:relative;display:inline-block;margin-right:6px}#personal-show+label{display:block;right:0;margin-top:-43px;margin-right:-4px;padding:22px}#body-user .warning,#body-settings .warning{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-main-text);background-color:rgba(var(--color-warning-rgb), 0.2)}.warning legend,.warning a{font-weight:bold !important}.error:not(.toastify) a{color:#fff !important;font-weight:bold !important}.error:not(.toastify) a.button{color:var(--color-text-lighter) !important;display:inline-block;text-align:center}.error:not(.toastify) pre{white-space:pre-wrap;text-align:left}.error-wide{width:700px;margin-left:-200px !important}.error-wide .button{color:#000 !important}.warning-input{border-color:var(--color-error) !important}.avatar,.avatardiv{border-radius:50%;flex-shrink:0}.avatar>img,.avatardiv>img{border-radius:50%;flex-shrink:0}td.avatar{border-radius:0}tr .action:not(.permanent),.selectedActions>a{opacity:0}tr:hover .action:not(.menuitem),tr:focus .action:not(.menuitem),tr .action.permanent:not(.menuitem){opacity:.5}.selectedActions>a{opacity:.5;position:relative;top:2px}.selectedActions>a:hover,.selectedActions>a:focus{opacity:1}tr .action{width:16px;height:16px}.header-action{opacity:.8}tr:hover .action:hover,tr:focus .action:focus{opacity:1}.selectedActions a:hover,.selectedActions a:focus{opacity:1}.header-action:hover,.header-action:focus{opacity:1}tbody tr:hover,tbody tr:focus,tbody tr:active{background-color:var(--color-background-dark)}code{font-family:"Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono",monospace}.pager{list-style:none;float:right;display:inline;margin:.7em 13em 0 0}.pager li{display:inline-block}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{overflow:hidden;text-overflow:ellipsis}.ui-icon-circle-triangle-e{background-image:url("../img/actions/play-next.svg?v=1")}.ui-icon-circle-triangle-w{background-image:url("../img/actions/play-previous.svg?v=1")}.ui-widget.ui-datepicker{margin-top:10px;padding:4px 8px;width:auto;border-radius:var(--border-radius);border:none;z-index:1600 !important}.ui-widget.ui-datepicker .ui-state-default,.ui-widget.ui-datepicker .ui-widget-content .ui-state-default,.ui-widget.ui-datepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-datepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-datepicker .ui-widget-header .ui-datepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-datepicker .ui-widget-header .ui-icon{opacity:.5}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e{background:url("../img/actions/arrow-right.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{background:url("../img/actions/arrow-left.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-state-hover .ui-icon{opacity:1}.ui-widget.ui-datepicker .ui-datepicker-calendar th{font-weight:normal;color:var(--color-text-lighter);opacity:.8;width:26px;padding:2px}.ui-widget.ui-datepicker .ui-datepicker-calendar tr:hover{background-color:inherit}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-today a:not(.ui-state-hover){background-color:var(--color-background-darker)}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-current-day a.ui-state-active,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-hover,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text);font-weight:bold}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-priority-secondary:not(.ui-state-hover){color:var(--color-text-lighter);opacity:.8}.ui-datepicker-prev,.ui-datepicker-next{border:var(--color-border-dark);background:var(--color-main-background)}.ui-widget.ui-timepicker{margin-top:10px !important;width:auto !important;border-radius:var(--border-radius);z-index:1600 !important}.ui-widget.ui-timepicker .ui-widget-content{border:none !important}.ui-widget.ui-timepicker .ui-state-default,.ui-widget.ui-timepicker .ui-widget-content .ui-state-default,.ui-widget.ui-timepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-timepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-timepicker .ui-widget-header .ui-timepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-timepicker table.ui-timepicker tr .ui-timepicker-hour-cell:first-child{margin-left:30px}.ui-widget.ui-timepicker .ui-timepicker-table th{font-weight:normal;color:var(--color-text-lighter);opacity:.8}.ui-widget.ui-timepicker .ui-timepicker-table th.periods{padding:0;width:30px;line-height:30px}.ui-widget.ui-timepicker .ui-timepicker-table tr:hover{background-color:inherit}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hour-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minute-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-hover,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text);font-weight:bold}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minutes:not(.ui-state-hover){color:var(--color-text-lighter)}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hours{border-right:1px solid var(--color-border)}.ui-widget.ui-datepicker .ui-datepicker-calendar tr,.ui-widget.ui-timepicker table.ui-timepicker tr{display:flex;flex-wrap:nowrap;justify-content:space-between}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td,.ui-widget.ui-timepicker table.ui-timepicker tr td{flex:1 1 auto;margin:0;padding:2px;height:26px;width:26px;display:flex;align-items:center;justify-content:center}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td>*,.ui-widget.ui-timepicker table.ui-timepicker tr td>*{border-radius:50%;text-align:center;font-weight:normal;color:var(--color-main-text);display:block;line-height:18px;width:18px;height:18px;padding:3px;font-size:.9em}#oc-dialog-filepicker-content{position:relative;display:flex;flex-direction:column}#oc-dialog-filepicker-content .dirtree{flex-wrap:wrap;box-sizing:border-box;padding-right:140px;display:flex}#oc-dialog-filepicker-content .dirtree div:first-child a{font-size:0px;background-image:var(--icon-home-dark);background-repeat:no-repeat;background-position:left center}#oc-dialog-filepicker-content .dirtree span:not(:last-child){cursor:pointer}#oc-dialog-filepicker-content .dirtree span:last-child{font-weight:bold}#oc-dialog-filepicker-content .dirtree span:not(:last-child)::after{content:">";padding:3px}#oc-dialog-filepicker-content #picker-showgridview{position:absolute;background-color:rgba(0,0,0,0);border:none;margin:0;padding:22px;opacity:.5;right:0;top:0}#oc-dialog-filepicker-content #picker-showgridview:hover,#oc-dialog-filepicker-content #picker-showgridview:active,#oc-dialog-filepicker-content #picker-showgridview:focus{box-shadow:0 0 0 2px var(--color-primary-element);opacity:1}#oc-dialog-filepicker-content .actions.creatable{flex-wrap:wrap;padding:0px;box-sizing:border-box;display:inline-flex;float:none;max-height:36px;max-width:36px;background-color:var(--color-background-dark);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-pill);position:relative;left:15px;top:3px;order:1}#oc-dialog-filepicker-content .actions.creatable .icon.icon-add{background-image:var(--icon-add-dark);background-size:16px 16px;width:34px;height:34px;margin:0px;opacity:.5}#oc-dialog-filepicker-content .actions.creatable a{width:36px;padding:0px;position:static}#oc-dialog-filepicker-content .actions.creatable .menu{top:100%;margin-top:10px}#oc-dialog-filepicker-content .actions.creatable .menu form{display:flex;margin:10px}#oc-dialog-filepicker-content .filelist-container{box-sizing:border-box;display:inline-block;overflow-y:auto;flex:1;width:100%;overflow-x:hidden}#oc-dialog-filepicker-content .emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:80px;width:100%;display:none}#oc-dialog-filepicker-content .filelist{background-color:var(--color-main-background);width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist{min-width:initial;margin-bottom:50px}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr{border-bottom:1px solid var(--color-border);background-color:var(--color-main-background)}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr th{width:80%;border:none}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle.name{padding-left:5px;margin-left:50px}#oc-dialog-filepicker-content #picker-filestable.filelist th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}#oc-dialog-filepicker-content #picker-filestable.filelist .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:hidden}#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:visible}#oc-dialog-filepicker-content #picker-filestable.filelist td{padding:14px;border-bottom:1px solid var(--color-border)}#oc-dialog-filepicker-content #picker-filestable.filelist tr:last-child td{border-bottom:none}#oc-dialog-filepicker-content #picker-filestable.filelist .filename{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background-size:32px;background-repeat:no-repeat;padding-left:51px;background-position:7px 7px;cursor:pointer;max-width:0}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts{display:flex}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__first{overflow:hidden;white-space:pre;text-overflow:ellipsis}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__last{white-space:pre}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize,#oc-dialog-filepicker-content #picker-filestable.filelist .date{width:80px}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize{text-align:right}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid{display:flex;flex-direction:column}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody{display:grid;grid-template-columns:repeat(auto-fill, 120px);justify-content:space-around;row-gap:15px;margin:15px 0}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr{display:block;position:relative;border-radius:var(--border-radius);padding:10px;display:flex;flex-direction:column;width:100px}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td{border:none;padding:0;text-align:center;border-radius:var(--border-radius)}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename{padding:100px 0 0 0;background-position:center top;background-size:contain;line-height:30px;max-width:none}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename .filename-parts{justify-content:center}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filesize{line-height:10px;width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.date{align-self:center;overflow:hidden;text-overflow:ellipsis;min-width:110px}#oc-dialog-filepicker-content .filepicker_element_selected{background-color:var(--color-background-darker)}.ui-dialog{position:fixed !important}span.ui-icon{float:left;margin:3px 7px 30px 0}.extra-data{padding-right:5px !important}#tagsdialog .content{width:100%;height:280px}#tagsdialog .scrollarea{overflow:auto;border:1px solid var(--color-background-darker);width:100%;height:240px}#tagsdialog .bottombuttons{width:100%;height:30px}#tagsdialog .bottombuttons *{float:left}#tagsdialog .taglist li{background:var(--color-background-dark);padding:.3em .8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:background-color 500ms;transition:background-color 500ms}#tagsdialog .taglist li:hover,#tagsdialog .taglist li:active{background:var(--color-background-darker)}#tagsdialog .addinput{width:90%;clear:both}.breadcrumb{display:inline-flex;height:50px}li.crumb{display:inline-flex;background-image:url("../img/breadcrumb.svg?v=1");background-repeat:no-repeat;background-position:right center;height:44px;background-size:auto 24px;flex:0 0 auto;order:1;padding-right:7px}li.crumb.crumbmenu{order:2;position:relative}li.crumb.crumbmenu a{opacity:.5}li.crumb.crumbmenu.canDropChildren .popovermenu,li.crumb.crumbmenu.canDrop .popovermenu{display:block}li.crumb.crumbmenu .popovermenu{top:100%;margin-right:3px}li.crumb.crumbmenu .popovermenu ul{max-height:345px;overflow-y:auto;overflow-x:hidden;padding-right:5px}li.crumb.crumbmenu .popovermenu ul li.canDrop span:first-child{background-image:url("../img/filetypes/folder-drag-accept.svg?v=1") !important}li.crumb.crumbmenu .popovermenu .in-breadcrumb{display:none}li.crumb.hidden{display:none}li.crumb.hidden~.crumb{order:3}li.crumb>a,li.crumb>span{position:relative;padding:12px;opacity:.5;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:0 0 auto;max-width:200px}li.crumb>a.icon-home,li.crumb>a.icon-delete,li.crumb>span.icon-home,li.crumb>span.icon-delete{text-indent:-9999px}li.crumb>a[class^=icon-]{padding:0;width:44px}li.crumb:last-child{font-weight:bold;margin-right:10px}li.crumb:last-child a~span{padding-left:0}li.crumb:hover,li.crumb:focus,li.crumb a:focus,li.crumb:active{opacity:1}li.crumb:hover>a,li.crumb:hover>span,li.crumb:focus>a,li.crumb:focus>span,li.crumb a:focus>a,li.crumb a:focus>span,li.crumb:active>a,li.crumb:active>span{opacity:.7}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}fieldset.warning legend,fieldset.update legend{top:18px;position:relative}fieldset.warning legend+p,fieldset.update legend+p{margin-top:12px}@-ms-viewport{width:device-width}.hiddenuploadfield{display:none;width:0;height:0;opacity:0}input,textarea,select,button,div[contenteditable=true],div[contenteditable=false]{font-family:var(--font-face)}.select2-container-multi .select2-choices .select2-search-field input,.select2-search input,.ui-widget{font-family:var(--font-face) !important}.select2-container.select2-drop-above .select2-choice{background-image:unset !important}select,button:not(.button-vue,[class^=vs__]),input,textarea,div[contenteditable=true],div[contenteditable=false]{width:130px;min-height:36px;box-sizing:border-box}input:not([type=range]){outline:none}div.select2-drop .select2-search input,input[type=submit],input[type=button],input[type=reset],button:not(.button-vue,[class^=vs__]),.button,.pager li a{margin:3px 3px 3px 0;padding:7px 14px;font-size:13px;background-color:var(--color-main-background);color:var(--color-main-text);border:1px solid var(--color-border-dark);font-size:var(--default-font-size);outline:none;border-radius:var(--border-radius);cursor:text}div.select2-drop .select2-search input:not(:disabled):not(.primary):hover,div.select2-drop .select2-search input:not(:disabled):not(.primary):focus,div.select2-drop .select2-search input:not(:disabled):not(.primary).active,input[type=submit]:not(:disabled):not(.primary):hover,input[type=submit]:not(:disabled):not(.primary):focus,input[type=submit]:not(:disabled):not(.primary).active,input[type=button]:not(:disabled):not(.primary):hover,input[type=button]:not(:disabled):not(.primary):focus,input[type=button]:not(:disabled):not(.primary).active,input[type=reset]:not(:disabled):not(.primary):hover,input[type=reset]:not(:disabled):not(.primary):focus,input[type=reset]:not(:disabled):not(.primary).active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):hover,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary).active,.button:not(:disabled):not(.primary):hover,.button:not(:disabled):not(.primary):focus,.button:not(:disabled):not(.primary).active,.pager li a:not(:disabled):not(.primary):hover,.pager li a:not(:disabled):not(.primary):focus,.pager li a:not(:disabled):not(.primary).active{border-color:var(--color-primary-element);outline:none}div.select2-drop .select2-search input:not(:disabled):not(.primary):active,input[type=submit]:not(:disabled):not(.primary):active,input[type=button]:not(:disabled):not(.primary):active,input[type=reset]:not(:disabled):not(.primary):active,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):active,.button:not(:disabled):not(.primary):active,.pager li a:not(:disabled):not(.primary):active{outline:none;background-color:var(--color-main-background);color:var(--color-text-light)}div.select2-drop .select2-search input:not(:disabled):not(.primary):focus-visible,input[type=submit]:not(:disabled):not(.primary):focus-visible,input[type=button]:not(:disabled):not(.primary):focus-visible,input[type=reset]:not(:disabled):not(.primary):focus-visible,button:not(.button-vue,[class^=vs__]):not(:disabled):not(.primary):focus-visible,.button:not(:disabled):not(.primary):focus-visible,.pager li a:not(:disabled):not(.primary):focus-visible{box-shadow:0 0 0 2px var(--color-primary-element)}div.select2-drop .select2-search input:disabled,input[type=submit]:disabled,input[type=button]:disabled,input[type=reset]:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,.pager li a:disabled{background-color:var(--color-background-dark);color:var(--color-main-text);cursor:default;opacity:.5}div.select2-drop .select2-search input:required,input[type=submit]:required,input[type=button]:required,input[type=reset]:required,button:not(.button-vue,[class^=vs__]):required,.button:required,.pager li a:required{box-shadow:none}div.select2-drop .select2-search input:user-invalid,input[type=submit]:user-invalid,input[type=button]:user-invalid,input[type=reset]:user-invalid,button:not(.button-vue,[class^=vs__]):user-invalid,.button:user-invalid,.pager li a:user-invalid{box-shadow:0 0 0 2px var(--color-error) !important}div.select2-drop .select2-search input.primary,input[type=submit].primary,input[type=button].primary,input[type=reset].primary,button:not(.button-vue,[class^=vs__]).primary,.button.primary,.pager li a.primary{background-color:var(--color-primary-element);border-color:var(--color-primary-element);color:var(--color-primary-element-text);cursor:pointer}#body-login :not(.body-login-container) div.select2-drop .select2-search input.primary,#header div.select2-drop .select2-search input.primary,#body-login :not(.body-login-container) input[type=submit].primary,#header input[type=submit].primary,#body-login :not(.body-login-container) input[type=button].primary,#header input[type=button].primary,#body-login :not(.body-login-container) input[type=reset].primary,#header input[type=reset].primary,#body-login :not(.body-login-container) button:not(.button-vue,[class^=vs__]).primary,#header button:not(.button-vue,[class^=vs__]).primary,#body-login :not(.body-login-container) .button.primary,#header .button.primary,#body-login :not(.body-login-container) .pager li a.primary,#header .pager li a.primary{border-color:var(--color-primary-element-text)}div.select2-drop .select2-search input.primary:not(:disabled):hover,div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):hover,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):hover,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):hover,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):hover,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):hover,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):hover,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):active{background-color:var(--color-primary-element-hover);border-color:var(--color-primary-element-hover)}div.select2-drop .select2-search input.primary:not(:disabled):focus,div.select2-drop .select2-search input.primary:not(:disabled):focus-visible,input[type=submit].primary:not(:disabled):focus,input[type=submit].primary:not(:disabled):focus-visible,input[type=button].primary:not(:disabled):focus,input[type=button].primary:not(:disabled):focus-visible,input[type=reset].primary:not(:disabled):focus,input[type=reset].primary:not(:disabled):focus-visible,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):focus-visible,.button.primary:not(:disabled):focus,.button.primary:not(:disabled):focus-visible,.pager li a.primary:not(:disabled):focus,.pager li a.primary:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--color-main-text)}div.select2-drop .select2-search input.primary:not(:disabled):active,input[type=submit].primary:not(:disabled):active,input[type=button].primary:not(:disabled):active,input[type=reset].primary:not(:disabled):active,button:not(.button-vue,[class^=vs__]).primary:not(:disabled):active,.button.primary:not(:disabled):active,.pager li a.primary:not(:disabled):active{color:var(--color-primary-element-text-dark)}div.select2-drop .select2-search input.primary:disabled,input[type=submit].primary:disabled,input[type=button].primary:disabled,input[type=reset].primary:disabled,button:not(.button-vue,[class^=vs__]).primary:disabled,.button.primary:disabled,.pager li a.primary:disabled{background-color:var(--color-primary-element);color:var(--color-primary-element-text-dark);cursor:default}div[contenteditable=false]{margin:3px 3px 3px 0;padding:7px 6px;font-size:13px;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-background-darker);outline:none;border-radius:var(--border-radius);background-color:var(--color-background-dark);color:var(--color-text-lighter);cursor:default;opacity:.5}input:not([type=radio]):not([type=checkbox]):not([type=range]):not([type=submit]):not([type=button]):not([type=reset]):not([type=color]):not([type=file]):not([type=image]){-webkit-appearance:textfield;-moz-appearance:textfield;height:36px}input[type=radio],input[type=checkbox],input[type=file],input[type=image]{height:auto;width:auto}input[type=color]{margin:3px;padding:0 2px;min-height:30px;width:40px;cursor:pointer}input[type=hidden]{height:0;width:0}input[type=time]{width:initial}select,button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{padding:8px 14px;font-size:var(--default-font-size);width:auto;min-height:36px;cursor:pointer;box-sizing:border-box;background-color:var(--color-background-dark)}select:disabled,button:not(.button-vue,[class^=vs__]):disabled,.button:disabled,input[type=button]:disabled,input[type=submit]:disabled,input[type=reset]:disabled{cursor:default}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]),select,div[contenteditable=true],textarea{margin:3px 3px 3px 0;padding:0 12px;font-size:var(--default-font-size);background-color:var(--color-main-background);color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);height:36px;outline:none;border-radius:var(--border-radius-large);text-overflow:ellipsis;cursor:pointer}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):hover,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):active,select:not(:disabled):hover,select:not(:disabled):focus,select:not(:disabled):active,div[contenteditable=true]:not(:disabled):hover,div[contenteditable=true]:not(:disabled):focus,div[contenteditable=true]:not(:disabled):active,textarea:not(:disabled):hover,textarea:not(:disabled):focus,textarea:not(:disabled):active{border-color:var(--color-primary-element)}input:not([type=range],.input-field__input,[type=submit],[type=button],[type=reset],.multiselect__input,.select2-input,.action-input__input,[class^=vs__]):not(:disabled):focus,select:not(:disabled):focus,div[contenteditable=true]:not(:disabled):focus,textarea:not(:disabled):focus{cursor:text}.multiselect__input,.select2-input{background-color:var(--color-main-background);color:var(--color-main-text)}textarea,div[contenteditable=true]{padding:12px;height:auto}select{background:var(--icon-triangle-s-dark) no-repeat right 8px center;appearance:none;background-color:var(--color-main-background);padding-right:28px !important}select *,button:not(.button-vue,[class^=vs__]) *,.button *{cursor:pointer}select:disabled *,button:not(.button-vue,[class^=vs__]):disabled *,.button:disabled *{cursor:default}button:not(.button-vue,[class^=vs__]),.button,input[type=button],input[type=submit],input[type=reset]{font-weight:bold;border-radius:var(--border-radius-pill)}button:not(.button-vue,[class^=vs__])::-moz-focus-inner,.button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=submit]::-moz-focus-inner,input[type=reset]::-moz-focus-inner{border:0}button:not(.button-vue,[class^=vs__]).error,.button.error,input[type=button].error,input[type=submit].error,input[type=reset].error{background-color:var(--color-error) !important;border-color:var(--color-error) !important;color:#fff !important}button:not(.button-vue,.action-button,[class^=vs__])>span[class^=icon-],button:not(.button-vue,.action-button,[class^=vs__])>span[class*=" icon-"],.button>span[class^=icon-],.button>span[class*=" icon-"]{display:inline-block;vertical-align:text-bottom;opacity:.5}input[type=text]+.icon-confirm,input[type=password]+.icon-confirm,input[type=email]+.icon-confirm{margin-left:-13px !important;border-left-color:rgba(0,0,0,0) !important;border-radius:0 var(--border-radius-large) var(--border-radius-large) 0 !important;border-width:2px;background-clip:padding-box;background-color:var(--color-main-background) !important;opacity:1;height:36px;width:36px;padding:7px 6px;cursor:pointer;margin-right:0}input[type=text]+.icon-confirm:disabled,input[type=password]+.icon-confirm:disabled,input[type=email]+.icon-confirm:disabled{cursor:default;background-image:var(--icon-confirm-fade-dark)}input[type=text]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=password]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm,input[type=email]:not(:active):not(:hover):not(:focus):invalid+.icon-confirm{border-color:var(--color-error)}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus{border-color:var(--color-primary-element) !important;border-radius:var(--border-radius) !important}input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=text]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=password]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:active:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:hover:disabled,input[type=email]:not(:active):not(:hover):not(:focus)+.icon-confirm:focus:disabled{border-color:var(--color-background-darker) !important}input[type=text]:active+.icon-confirm,input[type=text]:hover+.icon-confirm,input[type=text]:focus+.icon-confirm,input[type=password]:active+.icon-confirm,input[type=password]:hover+.icon-confirm,input[type=password]:focus+.icon-confirm,input[type=email]:active+.icon-confirm,input[type=email]:hover+.icon-confirm,input[type=email]:focus+.icon-confirm{border-color:var(--color-primary-element) !important;border-left-color:rgba(0,0,0,0) !important;z-index:2}button img,.button img{cursor:pointer}select,.button.multiselect{font-weight:normal}input[type=checkbox].radio,input[type=checkbox].checkbox,input[type=radio].radio,input[type=radio].checkbox{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}input[type=checkbox].radio+label,input[type=checkbox].checkbox+label,input[type=radio].radio+label,input[type=radio].checkbox+label{user-select:none}input[type=checkbox].radio:disabled+label,input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label,input[type=radio].checkbox:disabled+label:before{cursor:default}input[type=checkbox].radio+label:before,input[type=checkbox].checkbox+label:before,input[type=radio].radio+label:before,input[type=radio].checkbox+label:before{content:"";display:inline-block;height:14px;width:14px;vertical-align:middle;border-radius:50%;margin:0 6px 3px 3px;border:1px solid var(--color-text-lighter)}input[type=checkbox].radio:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].radio:focus+label:before,input[type=checkbox].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox:focus+label:before,input[type=radio].radio:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio:focus+label:before,input[type=radio].checkbox:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox:focus+label:before{border-color:var(--color-primary-element)}input[type=checkbox].radio:focus-visible+label,input[type=checkbox].checkbox:focus-visible+label,input[type=radio].radio:focus-visible+label,input[type=radio].checkbox:focus-visible+label{outline-style:solid;outline-color:var(--color-main-text);outline-width:1px;outline-offset:2px}input[type=checkbox].radio:checked+label:before,input[type=checkbox].radio.checkbox:indeterminate+label:before,input[type=checkbox].checkbox:checked+label:before,input[type=checkbox].checkbox.checkbox:indeterminate+label:before,input[type=radio].radio:checked+label:before,input[type=radio].radio.checkbox:indeterminate+label:before,input[type=radio].checkbox:checked+label:before,input[type=radio].checkbox.checkbox:indeterminate+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:var(--color-primary-element);border-color:var(--color-primary-element)}input[type=checkbox].radio:disabled+label:before,input[type=checkbox].checkbox:disabled+label:before,input[type=radio].radio:disabled+label:before,input[type=radio].checkbox:disabled+label:before{border:1px solid var(--color-text-lighter);background-color:var(--color-text-maxcontrast) !important}input[type=checkbox].radio:checked:disabled+label:before,input[type=checkbox].checkbox:checked:disabled+label:before,input[type=radio].radio:checked:disabled+label:before,input[type=radio].checkbox:checked:disabled+label:before{background-color:var(--color-text-maxcontrast)}input[type=checkbox].radio+label~em,input[type=checkbox].checkbox+label~em,input[type=radio].radio+label~em,input[type=radio].checkbox+label~em{display:inline-block;margin-left:25px}input[type=checkbox].radio+label~em:last-of-type,input[type=checkbox].checkbox+label~em:last-of-type,input[type=radio].radio+label~em:last-of-type,input[type=radio].checkbox+label~em:last-of-type{margin-bottom:14px}input[type=checkbox].checkbox+label:before,input[type=radio].checkbox+label:before{border-radius:1px;height:14px;width:14px;box-shadow:none !important;background-position:center}input[type=checkbox].checkbox:checked+label:before,input[type=radio].checkbox:checked+label:before{background-image:url("../img/actions/checkbox-mark.svg")}input[type=checkbox].checkbox:indeterminate+label:before,input[type=radio].checkbox:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed.svg")}input[type=checkbox].radio--white+label:before,input[type=checkbox].radio--white:focus+label:before,input[type=checkbox].checkbox--white+label:before,input[type=checkbox].checkbox--white:focus+label:before,input[type=radio].radio--white+label:before,input[type=radio].radio--white:focus+label:before,input[type=radio].checkbox--white+label:before,input[type=radio].checkbox--white:focus+label:before{border-color:#bababa}input[type=checkbox].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=checkbox].checkbox--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].radio--white:not(:disabled):not(:checked)+label:hover:before,input[type=radio].checkbox--white:not(:disabled):not(:checked)+label:hover:before{border-color:#fff}input[type=checkbox].radio--white:checked+label:before,input[type=checkbox].checkbox--white:checked+label:before,input[type=radio].radio--white:checked+label:before,input[type=radio].checkbox--white:checked+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);background-color:#dbdbdb;border-color:#dbdbdb}input[type=checkbox].radio--white:disabled+label:before,input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].radio--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{background-color:#bababa !important;border-color:rgba(255,255,255,.4) !important}input[type=checkbox].radio--white:checked:disabled+label:before,input[type=checkbox].checkbox--white:checked:disabled+label:before,input[type=radio].radio--white:checked:disabled+label:before,input[type=radio].checkbox--white:checked:disabled+label:before{box-shadow:inset 0px 0px 0px 2px var(--color-main-background);border-color:rgba(255,255,255,.4) !important;background-color:#bababa}input[type=checkbox].checkbox--white:checked+label:before,input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:checked+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-color:rgba(0,0,0,0) !important;border-color:#fff !important;background-image:url("../img/actions/checkbox-mark-white.svg")}input[type=checkbox].checkbox--white:indeterminate+label:before,input[type=radio].checkbox--white:indeterminate+label:before{background-image:url("../img/actions/checkbox-mixed-white.svg")}input[type=checkbox].checkbox--white:disabled+label:before,input[type=radio].checkbox--white:disabled+label:before{opacity:.7}div.select2-drop{margin-top:-2px;background-color:var(--color-main-background)}div.select2-drop.select2-drop-active{border-color:var(--color-border-dark)}div.select2-drop .avatar{display:inline-block;margin-right:8px;vertical-align:middle}div.select2-drop .avatar img{cursor:pointer}div.select2-drop .select2-search input{min-height:auto;background:var(--icon-search-dark) no-repeat right center !important;background-origin:content-box !important}div.select2-drop .select2-results{max-height:250px;margin:0;padding:0}div.select2-drop .select2-results .select2-result-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}div.select2-drop .select2-results .select2-result-label span{cursor:pointer}div.select2-drop .select2-results .select2-result-label span em{cursor:inherit;background:unset}div.select2-drop .select2-results .select2-result,div.select2-drop .select2-results .select2-no-results,div.select2-drop .select2-results .select2-searching{position:relative;display:list-item;padding:12px;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}div.select2-drop .select2-results .select2-result.select2-selected{background-color:var(--color-background-dark)}div.select2-drop .select2-results .select2-highlighted{background-color:var(--color-background-dark);color:var(--color-main-text)}.select2-chosen .avatar,.select2-chosen .avatar img,#select2-drop .avatar,#select2-drop .avatar img{cursor:pointer}div.select2-container-multi .select2-choices,div.select2-container-multi.select2-container-active .select2-choices{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px;min-height:44px}div.select2-container-multi .select2-choices:focus-within,div.select2-container-multi.select2-container-active .select2-choices:focus-within{border-color:var(--color-primary-element)}div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{line-height:20px;padding-left:5px}div.select2-container-multi .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi .select2-choices .select2-search-choice:hover,div.select2-container-multi .select2-choices .select2-search-choice:active,div.select2-container-multi .select2-choices .select2-search-choice,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice.select2-search-choice-focus,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:hover,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice:active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice{background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark)}div.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close,div.select2-container-multi.select2-container-active .select2-choices .select2-search-choice .select2-search-choice-close{display:none}div.select2-container-multi .select2-choices .select2-search-field input,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input{line-height:20px;min-height:28px;max-height:28px;color:var(--color-main-text)}div.select2-container-multi .select2-choices .select2-search-field input.select2-active,div.select2-container-multi.select2-container-active .select2-choices .select2-search-field input.select2-active{background:none !important}div.select2-container{margin:3px 3px 3px 0}div.select2-container.select2-container-multi .select2-choices{display:flex;flex-wrap:wrap}div.select2-container.select2-container-multi .select2-choices li{float:none}div.select2-container a.select2-choice{box-shadow:none;white-space:nowrap;text-overflow:ellipsis;background:var(--color-main-background);color:var(--color-text-lighter) !important;box-sizing:content-box;border-radius:var(--border-radius-large);border:2px solid var(--color-border-dark);margin:0;padding:6px 12px;min-height:44px}div.select2-container a.select2-choice:focus-within{border-color:var(--color-primary-element)}div.select2-container a.select2-choice .select2-search-choice{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-background-dark);border-color:var(--color-background-dark)}div.select2-container a.select2-choice .select2-search-choice .select2-search-choice-close{display:none}div.select2-container a.select2-choice .select2-search-choice.select2-search-choice-focus,div.select2-container a.select2-choice .select2-search-choice:hover{background-color:var(--color-border);border-color:var(--color-border)}div.select2-container a.select2-choice .select2-arrow{background:none;border-radius:0;border:none}div.select2-container a.select2-choice .select2-arrow b{background:var(--icon-triangle-s-dark) no-repeat center !important;opacity:.5}div.select2-container a.select2-choice:hover .select2-arrow b,div.select2-container a.select2-choice:focus .select2-arrow b,div.select2-container a.select2-choice:active .select2-arrow b{opacity:.7}div.select2-container a.select2-choice .select2-search-field input{line-height:20px}.v-select{margin:3px 3px 3px 0;display:inline-block}.v-select .dropdown-toggle{display:flex !important;flex-wrap:wrap}.v-select .dropdown-toggle .selected-tag{line-height:20px;padding-left:5px;background-image:none;background-color:var(--color-main-background);color:var(--color-text-lighter);border:1px solid var(--color-border-dark);display:inline-flex;align-items:center}.v-select .dropdown-toggle .selected-tag .close{margin-left:3px}.v-select .dropdown-menu{padding:0}.v-select .dropdown-menu li{padding:5px;position:relative;display:list-item;background-color:rgba(0,0,0,0);cursor:pointer;color:var(--color-text-lighter)}.v-select .dropdown-menu li a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:25px;padding:3px 7px 4px 2px;margin:0;cursor:pointer;min-height:1em;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-flex;align-items:center;background-color:rgba(0,0,0,0) !important;color:inherit !important}.v-select .dropdown-menu li a::before{content:" ";background-image:var(--icon-checkmark-dark);background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px;display:block;opacity:.5;margin-right:5px;visibility:hidden}.v-select .dropdown-menu li.highlight{color:var(--color-main-text)}.v-select .dropdown-menu li.active>a{background-color:var(--color-background-dark);color:var(--color-main-text)}.v-select .dropdown-menu li.active>a::before{visibility:visible}progress:not(.vue){display:block;width:100%;padding:0;border:0 none;background-color:var(--color-background-dark);border-radius:var(--border-radius);flex-basis:100%;height:5px;overflow:hidden}progress:not(.vue).warn::-moz-progress-bar{background:var(--color-error)}progress:not(.vue).warn::-webkit-progress-value{background:var(--color-error)}progress:not(.vue)::-webkit-progress-bar{background:rgba(0,0,0,0)}progress:not(.vue)::-moz-progress-bar{border-radius:var(--border-radius);background:var(--color-primary-element);transition:250ms all ease-in-out}progress:not(.vue)::-webkit-progress-value{border-radius:var(--border-radius);background:var(--color-primary-element);transition:250ms all ease-in-out}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-4px)}40%,60%{transform:translate(4px)}}.shake{animation-name:shake;animation-duration:.7s;animation-timing-function:ease-out}label.infield{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}::placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-ms-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}::-webkit-input-placeholder{color:var(--color-text-maxcontrast);font-size:var(--default-font-size)}#header,#expanddiv{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#header a:not(.button):focus-visible,#header button:not(.button-vue):focus-visible,#header div[role=button]:focus-visible,#expanddiv a:not(.button):focus-visible,#expanddiv button:not(.button-vue):focus-visible,#expanddiv div[role=button]:focus-visible{outline:none}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#header div[role=button]:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after,#expanddiv div[role=button]:focus-visible::after{content:" ";position:absolute;transform:translateX(-50%);width:12px;height:2px;border-radius:3px;background-color:var(--color-primary-element-text);left:50%;opacity:1}#header a:not(.button):focus-visible::after,#header .button-vue:focus-visible::after,#expanddiv a:not(.button):focus-visible::after,#expanddiv .button-vue:focus-visible::after{bottom:2px}#header .header-right a:not(.button):focus-visible::after,#header .header-right div[role=button]:focus-visible::after,#expanddiv .header-right a:not(.button):focus-visible::after,#expanddiv .header-right div[role=button]:focus-visible::after{bottom:4px}#header .header-right #expand.menutoggle:focus-visible::after,#expanddiv .header-right #expand.menutoggle:focus-visible::after{left:40%}#body-user #header,#body-settings #header,#body-public #header{display:inline-flex;position:absolute;top:0;width:100%;z-index:2000;height:50px;box-sizing:border-box;justify-content:space-between}#nextcloud{padding:5px 0;padding-left:86px;position:relative;height:calc(100% - 4px);box-sizing:border-box;opacity:1;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;margin:2px}#nextcloud:hover,#nextcloud:active{opacity:1}#header .header-right>div>.menu{background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));border-radius:var(--border-radius-large);box-sizing:border-box;z-index:2000;position:absolute;max-width:350px;min-height:66px;max-height:calc(100vh - 50px - 8px);right:8px;top:50px;margin:0;overflow-y:auto}#header .header-right>div>.menu:not(.popovermenu){display:none}#header .header-right>div>.menu:after{border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background);bottom:100%;content:" ";height:0;width:0;position:absolute;pointer-events:none;right:10px}#header .header-right>div>.menu>div,#header .header-right>div>.menu>ul{-webkit-overflow-scrolling:touch;min-height:66px;max-height:calc(100vh - 50px - 8px)}#header .logo{display:inline-flex;background-image:var(--image-logoheader, var(--image-logo, url("../img/logo/logo.svg")));background-repeat:no-repeat;background-size:contain;background-position:center;width:62px;position:absolute;left:12px;top:1px;bottom:1px;filter:var(--image-logoheader-custom, var(--background-image-invert-if-bright))}#header .header-appname-container{display:none;padding-right:10px;flex-shrink:0}#header #header-left,#header .header-left,#header #header-right,#header .header-right{display:inline-flex;align-items:center}#header #header-left,#header .header-left{flex:1 0;white-space:nowrap;min-width:0}#header #header-right,#header .header-right{justify-content:flex-end;flex-shrink:1}#header .header-right>div,#header .header-right>form{height:100%;position:relative}#header .header-right>div>.menutoggle,#header .header-right>form>.menutoggle{display:flex;justify-content:center;align-items:center;width:50px;height:44px;cursor:pointer;opacity:.85;padding:0;margin:2px 0}#header .header-right>div>.menutoggle:focus,#header .header-right>form>.menutoggle:focus{opacity:1}#header .header-right>div>.menutoggle:focus-visible,#header .header-right>form>.menutoggle:focus-visible{outline:none}.header-appname-container .header-appname{opacity:.75}.header-appname{color:var(--color-primary-element-text);font-size:16px;font-weight:bold;margin:0;padding:0;padding-right:5px;overflow:hidden;text-overflow:ellipsis;flex:1 1 100%}.header-shared-by{color:var(--color-primary-element-text);position:relative;font-weight:300;font-size:11px;line-height:11px;overflow:hidden;text-overflow:ellipsis}#skip-actions{position:absolute;overflow:hidden;z-index:9999;top:-999px;left:3px;padding:11px;display:flex;flex-wrap:wrap;gap:11px}#skip-actions:focus-within{top:50px}header #emptycontent h2,header .emptycontent h2{font-weight:normal;font-size:16px}header #emptycontent [class^=icon-],header #emptycontent [class*=icon-],header .emptycontent [class^=icon-],header .emptycontent [class*=icon-]{background-size:48px;height:48px;width:48px}[class^=icon-],[class*=" icon-"]{background-repeat:no-repeat;background-position:center;min-width:16px;min-height:16px}.icon-breadcrumb{background-image:url("../img/breadcrumb.svg?v=1")}.loading,.loading-small,.icon-loading,.icon-loading-dark,.icon-loading-small,.icon-loading-small-dark{position:relative}.loading:after,.loading-small:after,.icon-loading:after,.icon-loading-dark:after,.icon-loading-small:after,.icon-loading-small-dark:after{z-index:2;content:"";height:28px;width:28px;margin:-16px 0 0 -16px;position:absolute;top:50%;left:50%;border-radius:100%;-webkit-animation:rotate .8s infinite linear;animation:rotate .8s infinite linear;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;border:2px solid var(--color-loading-light);border-top-color:var(--color-loading-dark);filter:var(--background-invert-if-dark)}.primary .loading:after,.primary+.loading:after,.primary .loading-small:after,.primary+.loading-small:after,.primary .icon-loading:after,.primary+.icon-loading:after,.primary .icon-loading-dark:after,.primary+.icon-loading-dark:after,.primary .icon-loading-small:after,.primary+.icon-loading-small:after,.primary .icon-loading-small-dark:after,.primary+.icon-loading-small-dark:after{filter:var(--primary-invert-if-bright)}.icon-loading-dark:after,.icon-loading-small-dark:after{border:2px solid var(--color-loading-dark);border-top-color:var(--color-loading-light)}.icon-loading-small:after,.icon-loading-small-dark:after{height:12px;width:12px;margin:-8px 0 0 -8px}audio.icon-loading,canvas.icon-loading,embed.icon-loading,iframe.icon-loading,img.icon-loading,input.icon-loading,object.icon-loading,video.icon-loading{background-image:url("../img/loading.gif")}audio.icon-loading-dark,canvas.icon-loading-dark,embed.icon-loading-dark,iframe.icon-loading-dark,img.icon-loading-dark,input.icon-loading-dark,object.icon-loading-dark,video.icon-loading-dark{background-image:url("../img/loading-dark.gif")}audio.icon-loading-small,canvas.icon-loading-small,embed.icon-loading-small,iframe.icon-loading-small,img.icon-loading-small,input.icon-loading-small,object.icon-loading-small,video.icon-loading-small{background-image:url("../img/loading-small.gif")}audio.icon-loading-small-dark,canvas.icon-loading-small-dark,embed.icon-loading-small-dark,iframe.icon-loading-small-dark,img.icon-loading-small-dark,input.icon-loading-small-dark,object.icon-loading-small-dark,video.icon-loading-small-dark{background-image:url("../img/loading-small-dark.gif")}@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.icon-32{background-size:32px !important}.icon-white.icon-shadow,.icon-audio-white,.icon-audio-off-white,.icon-fullscreen-white,.icon-screen-white,.icon-screen-off-white,.icon-video-white,.icon-video-off-white{filter:drop-shadow(1px 1px 4px var(--color-box-shadow))}:root{--body-container-margin: calc(var(--default-grid-baseline) * 2);--body-container-radius: calc(var(--default-clickable-area) / 2 + var(--default-grid-baseline) * 2 - 2px);--body-height: calc(100% - env(safe-area-inset-bottom) - 50px - var(--body-container-margin))}@media screen and (max-width: 1024px){:root{--body-container-margin: 0px;--body-container-radius: 0px}}html{width:100%;height:100%;position:absolute;background-color:var(--color-background-plain, var(--color-main-background))}body{background-color:var(--color-background-plain, var(--color-main-background));background-image:var(--image-background, var(--image-background-default));background-size:cover;background-position:center;position:fixed;width:100%;height:calc(100vh - env(safe-area-inset-bottom))}h2{font-weight:bold;font-size:20px;margin-bottom:12px;line-height:30px;color:var(--color-text-light)}h3{font-size:16px;margin:12px 0;color:var(--color-text-light)}h4{font-size:14px}em{font-style:normal;color:var(--color-text-lighter)}dl{padding:12px 0}dt,dd{display:inline-block;padding:12px;padding-left:0}dt{width:130px;white-space:nowrap;text-align:right}kbd{padding:4px 10px;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,.2);border-radius:var(--border-radius);display:inline-block;white-space:nowrap}#content[class*=app-] *{box-sizing:border-box}#app-navigation:not(.vue){--border-radius-pill: calc(var(--default-clickable-area) / 2);width:300px;z-index:500;overflow-y:auto;overflow-x:hidden;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);-webkit-user-select:none;position:sticky;height:100%;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0}#app-navigation:not(.vue) .app-navigation-new{display:block;padding:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue) .app-navigation-new button{display:inline-block;width:100%;padding:10px;padding-left:34px;background-position:10px center;text-align:left;margin:0}#app-navigation:not(.vue) li{position:relative}#app-navigation:not(.vue)>ul{position:relative;height:100%;width:100%;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;display:flex;flex-direction:column;padding:calc(var(--default-grid-baseline)*2);padding-bottom:0}#app-navigation:not(.vue)>ul:last-child{padding-bottom:calc(var(--default-grid-baseline)*2)}#app-navigation:not(.vue)>ul>li{display:inline-flex;flex-wrap:wrap;order:1;flex-shrink:0;margin:0;margin-bottom:3px;width:100%;border-radius:var(--border-radius-pill)}#app-navigation:not(.vue)>ul>li.pinned{order:2}#app-navigation:not(.vue)>ul>li.pinned.first-pinned{margin-top:auto !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-deleted{padding-left:44px !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-edit{padding-left:38px !important}#app-navigation:not(.vue)>ul>li a:hover,#app-navigation:not(.vue)>ul>li a:hover>a,#app-navigation:not(.vue)>ul>li a:focus,#app-navigation:not(.vue)>ul>li a:focus>a{background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li a:focus-visible{box-shadow:var(--color-primary-element) inset 0 0 0 2px;outline:none}#app-navigation:not(.vue)>ul>li.active,#app-navigation:not(.vue)>ul>li.active>a,#app-navigation:not(.vue)>ul>li a:active,#app-navigation:not(.vue)>ul>li a:active>a,#app-navigation:not(.vue)>ul>li a.selected,#app-navigation:not(.vue)>ul>li a.selected>a,#app-navigation:not(.vue)>ul>li a.active,#app-navigation:not(.vue)>ul>li a.active>a{background-color:var(--color-primary-element-light)}#app-navigation:not(.vue)>ul>li.icon-loading-small:after{left:22px;top:22px}#app-navigation:not(.vue)>ul>li.deleted>ul,#app-navigation:not(.vue)>ul>li.collapsible:not(.open)>ul{display:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption{font-weight:bold;line-height:44px;padding:0 44px;white-space:nowrap;text-overflow:ellipsis;box-shadow:none !important;user-select:none;pointer-events:none}#app-navigation:not(.vue)>ul>li.app-navigation-caption:not(:first-child){margin-top:22px}#app-navigation:not(.vue)>ul>li>ul{flex:0 1 auto;width:100%;position:relative}#app-navigation:not(.vue)>ul>li>ul>li{display:inline-flex;flex-wrap:wrap;padding-left:44px;width:100%;margin-bottom:3px}#app-navigation:not(.vue)>ul>li>ul>li:hover,#app-navigation:not(.vue)>ul>li>ul>li:hover>a,#app-navigation:not(.vue)>ul>li>ul>li:focus,#app-navigation:not(.vue)>ul>li>ul>li:focus>a{border-radius:var(--border-radius-pill);background-color:var(--color-background-hover)}#app-navigation:not(.vue)>ul>li>ul>li.active,#app-navigation:not(.vue)>ul>li>ul>li.active>a,#app-navigation:not(.vue)>ul>li>ul>li a.selected,#app-navigation:not(.vue)>ul>li>ul>li a.selected>a{border-radius:var(--border-radius-pill);background-color:var(--color-primary-element-light)}#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small:after{left:22px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-deleted{margin-left:4px;padding-left:84px}#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-edit{margin-left:4px;padding-left:78px !important}#app-navigation:not(.vue)>ul>li,#app-navigation:not(.vue)>ul>li>ul>li{position:relative;box-sizing:border-box}#app-navigation:not(.vue)>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li.icon-loading-small>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>a,#app-navigation:not(.vue)>ul>li>ul>li.icon-loading-small>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>a,#app-navigation:not(.vue)>ul>li>ul>li>a{background-size:16px 16px;background-position:14px center;background-repeat:no-repeat;display:block;justify-content:space-between;line-height:44px;min-height:44px;padding:0 12px 0 14px;overflow:hidden;box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;border-radius:var(--border-radius-pill);color:var(--color-main-text);flex:1 1 0px;z-index:100}#app-navigation:not(.vue)>ul>li>a.svg,#app-navigation:not(.vue)>ul>li>ul>li>a.svg{padding:0 12px 0 44px}#app-navigation:not(.vue)>ul>li>a.svg :focus-visible,#app-navigation:not(.vue)>ul>li>ul>li>a.svg :focus-visible{padding:0 8px 0 42px}#app-navigation:not(.vue)>ul>li>a:first-child img,#app-navigation:not(.vue)>ul>li>ul>li>a:first-child img{margin-right:11px;width:16px;height:16px;filter:var(--background-invert-if-dark)}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils{display:inline-block;float:right}#app-navigation:not(.vue)>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter,#app-navigation:not(.vue)>ul>li>ul>li>a>.app-navigation-entry-utils .app-navigation-entry-utils-counter{padding-right:0 !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet{position:absolute;display:block;margin:16px;width:12px;height:12px;border:none;border-radius:50%;cursor:pointer;transition:background 100ms ease-in-out}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-bullet+a,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-bullet+a{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue)>ul>li>.app-navigation-entry-menu,#app-navigation:not(.vue)>ul>li>ul>li>.app-navigation-entry-menu{top:44px}#app-navigation:not(.vue)>ul>li.editing .app-navigation-entry-edit,#app-navigation:not(.vue)>ul>li>ul>li.editing .app-navigation-entry-edit{opacity:1;z-index:250}#app-navigation:not(.vue)>ul>li.deleted .app-navigation-entry-deleted,#app-navigation:not(.vue)>ul>li>ul>li.deleted .app-navigation-entry-deleted{transform:translateX(0);z-index:250}#app-navigation:not(.vue).hidden{display:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{border:0;opacity:.5;background-color:rgba(0,0,0,0);background-repeat:no-repeat;background-position:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:hover,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button>button:focus,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .collapsible .collapse{opacity:0;position:absolute;width:44px;height:44px;margin:0;z-index:110;left:0}#app-navigation:not(.vue) .collapsible .collapse:focus-visible{opacity:1;border-width:0;box-shadow:inset 0 0 0 2px var(--color-primary-element);background:none}#app-navigation:not(.vue) .collapsible:before{position:absolute;height:44px;width:44px;margin:0;padding:0;background:none;background-image:var(--icon-triangle-s-dark);background-size:16px;background-repeat:no-repeat;background-position:center;border:none;border-radius:0;outline:none !important;box-shadow:none;content:" ";opacity:0;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);z-index:105;border-radius:50%;transition:opacity 100ms ease-in-out}#app-navigation:not(.vue) .collapsible>a:first-child{padding-left:44px}#app-navigation:not(.vue) .collapsible:hover:before,#app-navigation:not(.vue) .collapsible:focus:before{opacity:1}#app-navigation:not(.vue) .collapsible:hover>a,#app-navigation:not(.vue) .collapsible:focus>a{background-image:none}#app-navigation:not(.vue) .collapsible:hover>.app-navigation-entry-bullet,#app-navigation:not(.vue) .collapsible:focus>.app-navigation-entry-bullet{background:rgba(0,0,0,0) !important}#app-navigation:not(.vue) .collapsible.open:before{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}#app-navigation:not(.vue) .app-navigation-entry-utils{flex:0 1 auto}#app-navigation:not(.vue) .app-navigation-entry-utils ul{display:flex !important;align-items:center;justify-content:flex-end}#app-navigation:not(.vue) .app-navigation-entry-utils li{width:44px !important;height:44px}#app-navigation:not(.vue) .app-navigation-entry-utils button{height:100%;width:100%;margin:0;box-shadow:none}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button button:not([class^=icon-]):not([class*=" icon-"]){background-image:var(--icon-more-dark)}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:hover button,#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-menu-button:focus button{background-color:rgba(0,0,0,0);opacity:1}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter{overflow:hidden;text-align:right;font-size:9pt;line-height:44px;padding:0 12px}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted{padding:0;text-align:center}#app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted span{padding:2px 5px;border-radius:10px;background-color:var(--color-primary-element);color:var(--color-primary-element-text)}#app-navigation:not(.vue) .app-navigation-entry-edit{padding-left:5px;padding-right:5px;display:block;width:calc(100% - 1px);transition:opacity 250ms ease-in-out;opacity:0;position:absolute;background-color:var(--color-main-background);z-index:-1}#app-navigation:not(.vue) .app-navigation-entry-edit form,#app-navigation:not(.vue) .app-navigation-entry-edit div{display:inline-flex;width:100%}#app-navigation:not(.vue) .app-navigation-entry-edit input{padding:5px;margin-right:0;height:38px}#app-navigation:not(.vue) .app-navigation-entry-edit input:hover,#app-navigation:not(.vue) .app-navigation-entry-edit input:focus{z-index:1}#app-navigation:not(.vue) .app-navigation-entry-edit input[type=text]{width:100%;min-width:0;border-bottom-right-radius:0;border-top-right-radius:0}#app-navigation:not(.vue) .app-navigation-entry-edit button,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]){width:36px;height:38px;flex:0 0 36px}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:last-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:last-child){border-radius:0 !important}#app-navigation:not(.vue) .app-navigation-entry-edit button:not(:first-child),#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):not(:first-child){margin-left:-1px}#app-navigation:not(.vue) .app-navigation-entry-edit button:last-child,#app-navigation:not(.vue) .app-navigation-entry-edit input:not([type=text]):last-child{border-bottom-right-radius:var(--border-radius);border-top-right-radius:var(--border-radius);border-bottom-left-radius:0;border-top-left-radius:0}#app-navigation:not(.vue) .app-navigation-entry-deleted{display:inline-flex;padding-left:44px;transform:translateX(300px)}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-description{position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:1 1 0px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button{margin:0;height:44px;width:44px;line-height:44px}#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:hover,#app-navigation:not(.vue) .app-navigation-entry-deleted .app-navigation-entry-deleted-button:focus{opacity:1}#app-navigation:not(.vue) .app-navigation-entry-edit,#app-navigation:not(.vue) .app-navigation-entry-deleted{width:calc(100% - 1px);transition:transform 250ms ease-in-out,opacity 250ms ease-in-out,z-index 250ms ease-in-out;position:absolute;left:0;background-color:var(--color-main-background);box-sizing:border-box}#app-navigation:not(.vue) .drag-and-drop{-webkit-transition:padding-bottom 500ms ease 0s;transition:padding-bottom 500ms ease 0s;padding-bottom:40px}#app-navigation:not(.vue) .error{color:var(--color-error)}#app-navigation:not(.vue) .app-navigation-entry-utils ul,#app-navigation:not(.vue) .app-navigation-entry-menu ul{list-style-type:none}#content{box-sizing:border-box;position:static;margin:var(--body-container-margin);margin-top:50px;padding:0;display:flex;width:calc(100% - var(--body-container-margin)*2);height:var(--body-height);border-radius:var(--body-container-radius);overflow:clip}#content:not(.with-sidebar--full){position:fixed}@media only screen and (max-width: 1024px){#content{border-top-left-radius:var(--border-radius-large);border-top-right-radius:var(--border-radius-large)}#app-navigation{border-top-left-radius:var(--border-radius-large)}#app-sidebar{border-top-right-radius:var(--border-radius-large)}}#app-content{z-index:1000;background-color:var(--color-main-background);flex-basis:100vw;overflow:auto;position:initial;height:100%}#app-content>.section:first-child{border-top:none}#app-content #app-content-wrapper{display:flex;position:relative;align-items:stretch;min-height:100%}#app-content #app-content-wrapper .app-content-details{flex:1 1 524px}#app-content #app-content-wrapper .app-content-details #app-navigation-toggle-back{display:none}#app-content::-webkit-scrollbar-button{height:var(--body-container-radius)}#app-sidebar{width:27vw;min-width:300px;max-width:500px;display:block;position:-webkit-sticky;position:sticky;top:50px;right:0;overflow-y:auto;overflow-x:hidden;z-index:1500;opacity:.7px;height:calc(100vh - 50px);background:var(--color-main-background);border-left:1px solid var(--color-border);flex-shrink:0}#app-sidebar.disappear{display:none}#app-settings{margin-top:auto}#app-settings.open #app-settings-content,#app-settings.opened #app-settings-content{display:block}#app-settings-content{display:none;padding:calc(var(--default-grid-baseline)*2);padding-top:0;padding-left:calc(var(--default-grid-baseline)*4);max-height:300px;overflow-y:auto;box-sizing:border-box}#app-settings-content input[type=text]{width:93%}#app-settings-content .info-text{padding:5px 0 7px 22px;color:var(--color-text-lighter)}#app-settings-content input[type=checkbox].radio+label,#app-settings-content input[type=checkbox].checkbox+label,#app-settings-content input[type=radio].radio+label,#app-settings-content input[type=radio].checkbox+label{display:inline-block;width:100%;padding:5px 0}#app-settings-header{box-sizing:border-box;background-color:rgba(0,0,0,0);overflow:hidden;border-radius:calc(var(--default-clickable-area)/2);padding:calc(var(--default-grid-baseline)*2);padding-top:0}#app-settings-header .settings-button{display:flex;align-items:center;height:44px;width:100%;padding:0;margin:0;background-color:rgba(0,0,0,0);box-shadow:none;border:0;border-radius:calc(var(--default-clickable-area)/2);text-align:left;font-weight:normal;font-size:100%;opacity:.8;color:var(--color-main-text)}#app-settings-header .settings-button.opened{border-top:solid 1px var(--color-border);background-color:var(--color-main-background);margin-top:8px}#app-settings-header .settings-button:hover,#app-settings-header .settings-button:focus{background-color:var(--color-background-hover)}#app-settings-header .settings-button::before{background-image:var(--icon-settings-dark);background-position:14px center;background-repeat:no-repeat;content:"";width:44px;height:44px;top:0;left:0;display:block}#app-settings-header .settings-button:focus-visible{box-shadow:0 0 0 2px inset var(--color-primary-element) !important;background-position:12px center}.section{display:block;padding:30px;margin-bottom:24px}.section.hidden{display:none !important}.section input[type=checkbox],.section input[type=radio]{vertical-align:-2px;margin-right:4px}.sub-section{position:relative;margin-top:10px;margin-left:27px;margin-bottom:10px}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}.tabHeaders{display:flex;margin-bottom:16px}.tabHeaders .tabHeader{display:flex;flex-direction:column;flex-grow:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;color:var(--color-text-lighter);margin-bottom:1px;padding:5px}.tabHeaders .tabHeader.hidden{display:none}.tabHeaders .tabHeader:first-child{padding-left:15px}.tabHeaders .tabHeader:last-child{padding-right:15px}.tabHeaders .tabHeader .icon{display:inline-block;width:100%;height:16px;background-size:16px;vertical-align:middle;margin-top:-2px;margin-right:3px;opacity:.7;cursor:pointer}.tabHeaders .tabHeader a{color:var(--color-text-lighter);margin-bottom:1px;overflow:hidden;text-overflow:ellipsis}.tabHeaders .tabHeader.selected{font-weight:bold}.tabHeaders .tabHeader.selected,.tabHeaders .tabHeader:hover,.tabHeaders .tabHeader:focus{margin-bottom:0px;color:var(--color-main-text);border-bottom:1px solid var(--color-text-lighter)}.tabsContainer{clear:left}.tabsContainer .tab{padding:0 15px 15px}.contact .popovermenu ul>li>a>img,.popover__menu>li>a>img{filter:var(--background-invert-if-dark)}.contact .popovermenu ul>li>a>img[src^=data],.popover__menu>li>a>img[src^=data]{filter:none}.bubble,.app-navigation-entry-menu,.popovermenu{position:absolute;background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-large);padding:3px;z-index:110;margin:5px;margin-top:-5px;right:0;filter:drop-shadow(0 1px 3px var(--color-box-shadow));display:none;will-change:filter}.bubble:after,.app-navigation-entry-menu:after,.popovermenu:after{bottom:100%;right:7px;border:solid rgba(0,0,0,0);content:" ";height:0;width:0;position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);border-width:9px}.bubble.menu-center,.app-navigation-entry-menu.menu-center,.popovermenu.menu-center{transform:translateX(50%);right:50%;margin-right:0}.bubble.menu-center:after,.app-navigation-entry-menu.menu-center:after,.popovermenu.menu-center:after{right:50%;transform:translateX(50%)}.bubble.menu-left,.app-navigation-entry-menu.menu-left,.popovermenu.menu-left{right:auto;left:0;margin-right:0}.bubble.menu-left:after,.app-navigation-entry-menu.menu-left:after,.popovermenu.menu-left:after{left:6px;right:auto}.bubble.open,.app-navigation-entry-menu.open,.popovermenu.open{display:block}.bubble.contactsmenu-popover,.app-navigation-entry-menu.contactsmenu-popover,.popovermenu.contactsmenu-popover{margin:0}.bubble ul,.app-navigation-entry-menu ul,.popovermenu ul{display:flex !important;flex-direction:column}.bubble li,.app-navigation-entry-menu li,.popovermenu li{display:flex;flex:0 0 auto}.bubble li.hidden,.app-navigation-entry-menu li.hidden,.popovermenu li.hidden{display:none}.bubble li>button,.bubble li>a,.bubble li>.menuitem,.app-navigation-entry-menu li>button,.app-navigation-entry-menu li>a,.app-navigation-entry-menu li>.menuitem,.popovermenu li>button,.popovermenu li>a,.popovermenu li>.menuitem{cursor:pointer;line-height:44px;border:0;border-radius:var(--border-radius-large);background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{min-width:0;min-height:0;background-position:14px center;background-size:16px}.bubble li>button span[class^=icon-],.bubble li>button span[class*=" icon-"],.bubble li>a span[class^=icon-],.bubble li>a span[class*=" icon-"],.bubble li>.menuitem span[class^=icon-],.bubble li>.menuitem span[class*=" icon-"],.app-navigation-entry-menu li>button span[class^=icon-],.app-navigation-entry-menu li>button span[class*=" icon-"],.app-navigation-entry-menu li>a span[class^=icon-],.app-navigation-entry-menu li>a span[class*=" icon-"],.app-navigation-entry-menu li>.menuitem span[class^=icon-],.app-navigation-entry-menu li>.menuitem span[class*=" icon-"],.popovermenu li>button span[class^=icon-],.popovermenu li>button span[class*=" icon-"],.popovermenu li>a span[class^=icon-],.popovermenu li>a span[class*=" icon-"],.popovermenu li>.menuitem span[class^=icon-],.popovermenu li>.menuitem span[class*=" icon-"]{padding:22px 0 22px 44px}.bubble li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.bubble li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.app-navigation-entry-menu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>button:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>a:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>span:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>input:not([class^=icon-]):not([class*=icon-]):first-child,.popovermenu li>.menuitem:not([class^=icon-]):not([class*=icon-])>form:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}.bubble li>button[class^=icon-],.bubble li>button[class*=" icon-"],.bubble li>a[class^=icon-],.bubble li>a[class*=" icon-"],.bubble li>.menuitem[class^=icon-],.bubble li>.menuitem[class*=" icon-"],.app-navigation-entry-menu li>button[class^=icon-],.app-navigation-entry-menu li>button[class*=" icon-"],.app-navigation-entry-menu li>a[class^=icon-],.app-navigation-entry-menu li>a[class*=" icon-"],.app-navigation-entry-menu li>.menuitem[class^=icon-],.app-navigation-entry-menu li>.menuitem[class*=" icon-"],.popovermenu li>button[class^=icon-],.popovermenu li>button[class*=" icon-"],.popovermenu li>a[class^=icon-],.popovermenu li>a[class*=" icon-"],.popovermenu li>.menuitem[class^=icon-],.popovermenu li>.menuitem[class*=" icon-"]{padding:0 14px 0 44px !important}.bubble li>button:hover,.bubble li>button:focus,.bubble li>a:hover,.bubble li>a:focus,.bubble li>.menuitem:hover,.bubble li>.menuitem:focus,.app-navigation-entry-menu li>button:hover,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>a:hover,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>.menuitem:hover,.app-navigation-entry-menu li>.menuitem:focus,.popovermenu li>button:hover,.popovermenu li>button:focus,.popovermenu li>a:hover,.popovermenu li>a:focus,.popovermenu li>.menuitem:hover,.popovermenu li>.menuitem:focus{background-color:var(--color-background-hover)}.bubble li>button:focus,.bubble li>button:focus-visible,.bubble li>a:focus,.bubble li>a:focus-visible,.bubble li>.menuitem:focus,.bubble li>.menuitem:focus-visible,.app-navigation-entry-menu li>button:focus,.app-navigation-entry-menu li>button:focus-visible,.app-navigation-entry-menu li>a:focus,.app-navigation-entry-menu li>a:focus-visible,.app-navigation-entry-menu li>.menuitem:focus,.app-navigation-entry-menu li>.menuitem:focus-visible,.popovermenu li>button:focus,.popovermenu li>button:focus-visible,.popovermenu li>a:focus,.popovermenu li>a:focus-visible,.popovermenu li>.menuitem:focus,.popovermenu li>.menuitem:focus-visible{box-shadow:0 0 0 2px var(--color-primary-element)}.bubble li>button.active,.bubble li>a.active,.bubble li>.menuitem.active,.app-navigation-entry-menu li>button.active,.app-navigation-entry-menu li>a.active,.app-navigation-entry-menu li>.menuitem.active,.popovermenu li>button.active,.popovermenu li>a.active,.popovermenu li>.menuitem.active{border-radius:var(--border-radius-pill);background-color:var(--color-primary-element-light)}.bubble li>button.action,.bubble li>a.action,.bubble li>.menuitem.action,.app-navigation-entry-menu li>button.action,.app-navigation-entry-menu li>a.action,.app-navigation-entry-menu li>.menuitem.action,.popovermenu li>button.action,.popovermenu li>a.action,.popovermenu li>.menuitem.action{padding:inherit !important}.bubble li>button>span,.bubble li>a>span,.bubble li>.menuitem>span,.app-navigation-entry-menu li>button>span,.app-navigation-entry-menu li>a>span,.app-navigation-entry-menu li>.menuitem>span,.popovermenu li>button>span,.popovermenu li>a>span,.popovermenu li>.menuitem>span{cursor:pointer;white-space:nowrap}.bubble li>button>p,.bubble li>a>p,.bubble li>.menuitem>p,.app-navigation-entry-menu li>button>p,.app-navigation-entry-menu li>a>p,.app-navigation-entry-menu li>.menuitem>p,.popovermenu li>button>p,.popovermenu li>a>p,.popovermenu li>.menuitem>p{width:150px;line-height:1.6em;padding:8px 0;white-space:normal}.bubble li>button>select,.bubble li>a>select,.bubble li>.menuitem>select,.app-navigation-entry-menu li>button>select,.app-navigation-entry-menu li>a>select,.app-navigation-entry-menu li>.menuitem>select,.popovermenu li>button>select,.popovermenu li>a>select,.popovermenu li>.menuitem>select{margin:0;margin-left:6px}.bubble li>button:not(:empty),.bubble li>a:not(:empty),.bubble li>.menuitem:not(:empty),.app-navigation-entry-menu li>button:not(:empty),.app-navigation-entry-menu li>a:not(:empty),.app-navigation-entry-menu li>.menuitem:not(:empty),.popovermenu li>button:not(:empty),.popovermenu li>a:not(:empty),.popovermenu li>.menuitem:not(:empty){padding-right:14px !important}.bubble li>button>img,.bubble li>a>img,.bubble li>.menuitem>img,.app-navigation-entry-menu li>button>img,.app-navigation-entry-menu li>a>img,.app-navigation-entry-menu li>.menuitem>img,.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:16px;padding:14px}.bubble li>button>input.radio+label,.bubble li>button>input.checkbox+label,.bubble li>a>input.radio+label,.bubble li>a>input.checkbox+label,.bubble li>.menuitem>input.radio+label,.bubble li>.menuitem>input.checkbox+label,.app-navigation-entry-menu li>button>input.radio+label,.app-navigation-entry-menu li>button>input.checkbox+label,.app-navigation-entry-menu li>a>input.radio+label,.app-navigation-entry-menu li>a>input.checkbox+label,.app-navigation-entry-menu li>.menuitem>input.radio+label,.app-navigation-entry-menu li>.menuitem>input.checkbox+label,.popovermenu li>button>input.radio+label,.popovermenu li>button>input.checkbox+label,.popovermenu li>a>input.radio+label,.popovermenu li>a>input.checkbox+label,.popovermenu li>.menuitem>input.radio+label,.popovermenu li>.menuitem>input.checkbox+label{padding:0 !important;width:100%}.bubble li>button>input.checkbox+label::before,.bubble li>a>input.checkbox+label::before,.bubble li>.menuitem>input.checkbox+label::before,.app-navigation-entry-menu li>button>input.checkbox+label::before,.app-navigation-entry-menu li>a>input.checkbox+label::before,.app-navigation-entry-menu li>.menuitem>input.checkbox+label::before,.popovermenu li>button>input.checkbox+label::before,.popovermenu li>a>input.checkbox+label::before,.popovermenu li>.menuitem>input.checkbox+label::before{margin:-2px 13px 0}.bubble li>button>input.radio+label::before,.bubble li>a>input.radio+label::before,.bubble li>.menuitem>input.radio+label::before,.app-navigation-entry-menu li>button>input.radio+label::before,.app-navigation-entry-menu li>a>input.radio+label::before,.app-navigation-entry-menu li>.menuitem>input.radio+label::before,.popovermenu li>button>input.radio+label::before,.popovermenu li>a>input.radio+label::before,.popovermenu li>.menuitem>input.radio+label::before{margin:-2px 12px 0}.bubble li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.bubble li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.app-navigation-entry-menu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>button>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>a>input:not([type=radio]):not([type=checkbox]):not([type=image]),.popovermenu li>.menuitem>input:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}.bubble li>button form,.bubble li>a form,.bubble li>.menuitem form,.app-navigation-entry-menu li>button form,.app-navigation-entry-menu li>a form,.app-navigation-entry-menu li>.menuitem form,.popovermenu li>button form,.popovermenu li>a form,.popovermenu li>.menuitem form{display:flex;flex:1 1 auto;align-items:center}.bubble li>button form:not(:first-child),.bubble li>a form:not(:first-child),.bubble li>.menuitem form:not(:first-child),.app-navigation-entry-menu li>button form:not(:first-child),.app-navigation-entry-menu li>a form:not(:first-child),.app-navigation-entry-menu li>.menuitem form:not(:first-child),.popovermenu li>button form:not(:first-child),.popovermenu li>a form:not(:first-child),.popovermenu li>.menuitem form:not(:first-child){margin-left:5px}.bubble li>button>span.hidden+form,.bubble li>button>span[style*="display:none"]+form,.bubble li>a>span.hidden+form,.bubble li>a>span[style*="display:none"]+form,.bubble li>.menuitem>span.hidden+form,.bubble li>.menuitem>span[style*="display:none"]+form,.app-navigation-entry-menu li>button>span.hidden+form,.app-navigation-entry-menu li>button>span[style*="display:none"]+form,.app-navigation-entry-menu li>a>span.hidden+form,.app-navigation-entry-menu li>a>span[style*="display:none"]+form,.app-navigation-entry-menu li>.menuitem>span.hidden+form,.app-navigation-entry-menu li>.menuitem>span[style*="display:none"]+form,.popovermenu li>button>span.hidden+form,.popovermenu li>button>span[style*="display:none"]+form,.popovermenu li>a>span.hidden+form,.popovermenu li>a>span[style*="display:none"]+form,.popovermenu li>.menuitem>span.hidden+form,.popovermenu li>.menuitem>span[style*="display:none"]+form{margin-left:0}.bubble li>button input,.bubble li>a input,.bubble li>.menuitem input,.app-navigation-entry-menu li>button input,.app-navigation-entry-menu li>a input,.app-navigation-entry-menu li>.menuitem input,.popovermenu li>button input,.popovermenu li>a input,.popovermenu li>.menuitem input{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}.bubble li>button input:not(:first-child),.bubble li>a input:not(:first-child),.bubble li>.menuitem input:not(:first-child),.app-navigation-entry-menu li>button input:not(:first-child),.app-navigation-entry-menu li>a input:not(:first-child),.app-navigation-entry-menu li>.menuitem input:not(:first-child),.popovermenu li>button input:not(:first-child),.popovermenu li>a input:not(:first-child),.popovermenu li>.menuitem input:not(:first-child){margin-left:5px}.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input{margin-top:12px}.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.bubble li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.app-navigation-entry-menu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>button>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>a>input,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form,.popovermenu li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input{margin-bottom:0px}.bubble li>button,.app-navigation-entry-menu li>button,.popovermenu li>button{padding:0}.bubble li>button span,.app-navigation-entry-menu li>button span,.popovermenu li>button span{opacity:1}.popovermenu li>button>img,.popovermenu li>a>img,.popovermenu li>.menuitem>img{width:44px;height:44px}#contactsmenu .contact .popovermenu li>a>img{width:16px;height:16px}.app-content-list{position:-webkit-sticky;position:relative;top:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;transition:transform 250ms ease-in-out;min-height:100%;max-height:100%;overflow-y:auto;overflow-x:hidden;flex:1 1 200px;min-width:200px;max-width:300px}.app-content-list .app-content-list-item{position:relative;height:68px;cursor:pointer;padding:10px 7px;display:flex;flex-wrap:wrap;align-items:center;flex:0 0 auto}.app-content-list .app-content-list-item>[class^=icon-],.app-content-list .app-content-list-item>[class*=" icon-"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]{order:4;width:24px;height:24px;margin:-7px;padding:22px;opacity:.3;cursor:pointer}.app-content-list .app-content-list-item>[class^=icon-]:hover,.app-content-list .app-content-list-item>[class^=icon-]:focus,.app-content-list .app-content-list-item>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"]:focus{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star],.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]{opacity:.7}.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>[class*=" icon-"][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-][class*=" icon-star"]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class^=icon-star]:focus,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:hover,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"][class*=" icon-star"]:focus{opacity:1}.app-content-list .app-content-list-item>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>[class*=" icon-"].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class^=icon-].icon-starred,.app-content-list .app-content-list-item>.app-content-list-item-menu>[class*=" icon-"].icon-starred{opacity:1}.app-content-list .app-content-list-item:hover,.app-content-list .app-content-list-item:focus,.app-content-list .app-content-list-item.active{background-color:var(--color-background-dark)}.app-content-list .app-content-list-item:hover .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item:focus .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item.active .app-content-list-item-checkbox.checkbox+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label,.app-content-list .app-content-list-item .app-content-list-item-star{position:absolute;height:40px;width:40px;z-index:50}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label{display:flex}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:checked+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:hover+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox:focus+label+.app-content-list-item-icon,.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox.active+label+.app-content-list-item-icon{opacity:.7}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label{top:14px;left:7px;display:none}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label::before{margin:0}.app-content-list .app-content-list-item .app-content-list-item-checkbox.checkbox+label~.app-content-list-item-star{display:none}.app-content-list .app-content-list-item .app-content-list-item-star{display:flex;top:10px;left:32px;background-size:16px;height:20px;width:20px;margin:0;padding:0}.app-content-list .app-content-list-item .app-content-list-item-icon{position:absolute;display:inline-block;height:40px;width:40px;line-height:40px;border-radius:50%;vertical-align:middle;margin-right:10px;color:#fff;text-align:center;font-size:1.5em;text-transform:capitalize;object-fit:cover;user-select:none;cursor:pointer;top:50%;margin-top:-20px}.app-content-list .app-content-list-item .app-content-list-item-line-one,.app-content-list .app-content-list-item .app-content-list-item-line-two{display:block;padding-left:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;order:1;flex:1 1 0px;padding-right:10px;cursor:pointer}.app-content-list .app-content-list-item .app-content-list-item-line-two{opacity:.5;order:3;flex:1 0;flex-basis:calc(100% - 44px)}.app-content-list .app-content-list-item .app-content-list-item-details{order:2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px;opacity:.5;font-size:80%;user-select:none}.app-content-list .app-content-list-item .app-content-list-item-menu{order:4;position:relative}.app-content-list .app-content-list-item .app-content-list-item-menu .popovermenu{margin:0;right:-2px}.app-content-list.selection .app-content-list-item-checkbox.checkbox+label{display:flex}.pull-left{float:left}.pull-right{float:right}.clear-left{clear:left}.clear-right{clear:right}.clear-both{clear:both}.hidden{display:none}.hidden-visually{position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;overflow:hidden}.bold{font-weight:600}.center{text-align:center}.inlineblock{display:inline-block}::-moz-focus-inner{border:0}@media only screen and (width < 1024px){#dropdown{margin-right:10% !important;width:80% !important}.ui-autocomplete{z-index:1000 !important}.error-wide{width:100%;margin-left:0 !important;box-sizing:border-box}#app-navigation:not(.vue){transform:translateX(-300px);position:fixed;height:var(--body-height)}.snapjs-left #app-navigation{transform:translateX(0)}#app-navigation:not(.hidden)+#app-content{margin-left:0}.skip-navigation.skip-content{left:3px;margin-left:0}.app-content-list{background:var(--color-main-background);flex:1 1 100%;max-height:unset;max-width:100%}.app-content-list+.app-content-details{display:none}.app-content-list.showdetails{display:none}.app-content-list.showdetails+.app-content-details{display:initial}#app-content.showdetails #app-navigation-toggle{transform:translateX(-44px)}#app-content.showdetails #app-navigation-toggle-back{position:fixed;display:inline-block !important;top:50px;left:0;width:44px;height:44px;z-index:1050;background-color:rgba(255,255,255,.7);cursor:pointer;opacity:.6;transform:rotate(90deg)}#app-content.showdetails .app-content-list{transform:translateX(-100%)}#app-navigation-toggle{position:fixed;display:inline-block !important;left:0;width:44px;height:44px;z-index:1050;cursor:pointer;opacity:.6}#app-navigation-toggle:hover,#app-navigation-toggle:focus{opacity:1}#app-navigation+#app-content .files-controls{padding-left:44px}#body-user .app-files.viewer-mode .files-controls{padding-left:0 !important}.app-files.viewer-mode #app-navigation-toggle{display:none !important}table.multiselect thead{left:0 !important}#usersearchform{display:none}#body-settings .files-controls{min-width:1024px !important}#oc-dialog-filepicker-content .filelist .column-size,#oc-dialog-filepicker-content .filelist .column-mtime,#oc-dialog-filepicker-content .filelist .filesize,#oc-dialog-filepicker-content .filelist .date{display:none}#oc-dialog-filepicker-content .filelist .filename{max-width:100%}.snapjs-left table.multiselect thead{top:44px}}@media only screen and (max-width: 480px){#header .header-right>div>.menu{max-width:calc(100vw - 10px);position:fixed}#header .header-right>div>.menu::after{display:none !important}#header .header-right>div.openedMenu::after{display:block}#header .header-right>div::after{border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background);bottom:0;content:" ";height:0;width:0;position:absolute;pointer-events:none;right:15px;z-index:2001;display:none}#header .header-right>div#settings::after{right:27px}}.tooltip{position:absolute;display:block;font-family:var(--font-face);font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;overflow-wrap:anywhere;font-size:12px;opacity:0;z-index:100000;margin-top:-3px;padding:10px 0;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.tooltip.in,.tooltip.show,.tooltip.tooltip[aria-hidden=false]{visibility:visible;opacity:1;transition:opacity .15s}.tooltip.top .tooltip-arrow,.tooltip[x-placement^=top]{left:50%;margin-left:-10px}.tooltip.bottom,.tooltip[x-placement^=bottom]{margin-top:3px;padding:10px 0}.tooltip.right,.tooltip[x-placement^=right]{margin-left:3px;padding:0 10px}.tooltip.right .tooltip-arrow,.tooltip[x-placement^=right] .tooltip-arrow{top:50%;left:0;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:var(--color-main-background)}.tooltip.left,.tooltip[x-placement^=left]{margin-left:-3px;padding:0 5px}.tooltip.left .tooltip-arrow,.tooltip[x-placement^=left] .tooltip-arrow{top:50%;right:0;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:var(--color-main-background)}.tooltip.top .tooltip-arrow,.tooltip.top .arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-left .arrow,.tooltip[x-placement^=top] .tooltip-arrow,.tooltip[x-placement^=top] .arrow,.tooltip.top-right .tooltip-arrow,.tooltip.top-right .arrow{bottom:0;border-width:10px 10px 0;border-top-color:var(--color-main-background)}.tooltip.top-left .tooltip-arrow{right:10px;margin-bottom:-10px}.tooltip.top-right .tooltip-arrow{left:10px;margin-bottom:-10px}.tooltip.bottom .tooltip-arrow,.tooltip.bottom .arrow,.tooltip[x-placement^=bottom] .tooltip-arrow,.tooltip[x-placement^=bottom] .arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-left .arrow,.tooltip.bottom-right .tooltip-arrow,.tooltip.bottom-right .arrow{top:0;border-width:0 10px 10px;border-bottom-color:var(--color-main-background)}.tooltip[x-placement^=bottom] .tooltip-arrow,.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-10px}.tooltip.bottom-left .tooltip-arrow{right:10px;margin-top:-10px}.tooltip.bottom-right .tooltip-arrow{left:10px;margin-top:-10px}.tooltip-inner{max-width:350px;padding:5px 8px;background-color:var(--color-main-background);color:var(--color-main-text);text-align:center;border-radius:var(--border-radius)}.tooltip-arrow,.tooltip .arrow{position:absolute;width:0;height:0;border-color:rgba(0,0,0,0);border-style:solid}.toastify.dialogs{min-width:200px;background:none;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 6px 0 var(--color-box-shadow);padding:0 12px;margin-top:45px;position:fixed;z-index:10100;border-radius:var(--border-radius);display:flex;align-items:center}.toastify.dialogs .toast-undo-container{display:flex;align-items:center}.toastify.dialogs .toast-undo-button,.toastify.dialogs .toast-close{position:static;overflow:hidden;box-sizing:border-box;min-width:44px;height:100%;padding:12px;white-space:nowrap;background-repeat:no-repeat;background-position:center;background-color:transparent;min-height:0}.toastify.dialogs .toast-undo-button.toast-close,.toastify.dialogs .toast-close.toast-close{text-indent:0;opacity:.4;border:none;min-height:44px;margin-left:10px;font-size:0}.toastify.dialogs .toast-undo-button.toast-close::before,.toastify.dialogs .toast-close.toast-close::before{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo=");content:" ";filter:var(--background-invert-if-dark);display:inline-block;width:16px;height:16px}.toastify.dialogs .toast-undo-button.toast-undo-button,.toastify.dialogs .toast-close.toast-undo-button{margin:3px;height:calc(100% - 6px);margin-left:12px}.toastify.dialogs .toast-undo-button:hover,.toastify.dialogs .toast-undo-button:focus,.toastify.dialogs .toast-undo-button:active,.toastify.dialogs .toast-close:hover,.toastify.dialogs .toast-close:focus,.toastify.dialogs .toast-close:active{cursor:pointer;opacity:1}.toastify.dialogs.toastify-top{right:10px}.toastify.dialogs.toast-with-click{cursor:pointer}.toastify.dialogs.toast-error{border-left:3px solid var(--color-error)}.toastify.dialogs.toast-info{border-left:3px solid var(--color-primary)}.toastify.dialogs.toast-warning{border-left:3px solid var(--color-warning)}.toastify.dialogs.toast-success{border-left:3px solid var(--color-success)}.toastify.dialogs.toast-undo{border-left:3px solid var(--color-success)}.theme--dark .toastify.dialogs .toast-close.toast-close::before{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo=")}#body-public .header-right #header-primary-action a{color:var(--color-primary-element-text)}#body-public .header-right #header-secondary-action ul li{min-width:270px}#body-public .header-right #header-secondary-action #header-actions-toggle{background-color:rgba(0,0,0,0);border-color:rgba(0,0,0,0);filter:var(--background-invert-if-dark)}#body-public .header-right #header-secondary-action #header-actions-toggle:hover,#body-public .header-right #header-secondary-action #header-actions-toggle:focus,#body-public .header-right #header-secondary-action #header-actions-toggle:active{opacity:1}#body-public .header-right #header-secondary-action #external-share-menu-item form{display:flex}#body-public .header-right #header-secondary-action #external-share-menu-item .hidden{display:none}#body-public .header-right #header-secondary-action #external-share-menu-item #save-button-confirm{flex-grow:0}#body-public #content{min-height:calc(100% - 65px)}#body-public.layout-base #content{padding-top:0}#body-public p.info{margin:20px auto;text-shadow:0 0 2px rgba(0,0,0,.4);-moz-user-select:none;-ms-user-select:none;user-select:none}#body-public p.info,#body-public form fieldset legend,#body-public #datadirContent label,#body-public form fieldset .warning-info,#body-public form input[type=checkbox]+label{text-align:center}#body-public footer{position:fixed;display:flex;align-items:center;justify-content:center;height:65px;flex-direction:column;bottom:0;width:calc(100% - 16px);margin:8px;background-color:var(--color-main-background);border-radius:var(--border-radius-large)}#body-public footer p{text-align:center;color:var(--color-text-lighter)}#body-public footer p a{color:var(--color-text-lighter);font-weight:bold;white-space:nowrap;padding:10px;margin:-10px;line-height:200%}/*# sourceMappingURL=server.css.map */ diff --git a/core/css/server.css.map b/core/css/server.css.map index e764e5dd8e3..594e7a719b2 100644 --- a/core/css/server.css.map +++ b/core/css/server.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","variables.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/dist/index.css","public.scss"],"names":[],"mappings":"AA8IQ,8BC5HR,yQACC,SACA,UACA,SACA,oBACA,eACA,oBACA,wBACA,eACA,uDACA,qBAGD,6CACC,aAID,kGAEC,gDACA,aAGD,UACC,YAGD,6DACC,cAGD,KACC,gBAGD,MACC,yBACA,iBACA,mBAGD,cACC,gBACA,mBAGD,YACC,sBAGD,EACC,SACA,6BACA,qBACA,eACA,IACC,eAIF,WACC,aACA,0BAGD,MACC,eACA,QACC,eAIF,0BACC,eAGD,GACC,gBAGD,KACC,mBAEA,mCACA,uCACA,6BACA,6BAGD,mBACC,kBAGD,qBACC,kBACA,sBACA,qBACA,2BACA,2DACA,uBAGD,iBACC,qBACA,aACA,gCAGD,eACC,YACA,aAGD,cACC,eACA,MACA,SACA,OACA,YACA,WACA,aACA,kBACA,gDACA,gCACA,iBACA,eACA,kBACC,cACA,kBACA,UACA,QACA,gBAED,gBACC,gCACA,sDACA,4CACC,6CAOH,oBACC,WACA,YAGD,2BACC,+BAGD,gCACC,+BAGD,0BACC,kCACA,yCACA,+BACA,4BAMD,YACC,8CACA,gCAMD,kBACC,sBAKD,4BAEC,oCACA,kBACA,gBACA,WACA,sDACC,gBAED,sEACC,gBAED,kCACC,mBAED,oHAEC,qBACA,YACA,WACA,mBACA,gcAEC,WAOH,sBACC,WASD,oCACC,kBACA,yBACA,sBACA,qBACA,iBAKD,kBACC,kBACA,UACA,SACA,YAGD,8BACC,WACA,oBACA,wBACA,wBAGD,2EACC,WAED,oGACC,0CACA,UACA,qBAGD,mDACC,6BACA,YACA,WACA,yCACA,4BACA,2BACA,WAOA,qEACC,UAED,qEACC,UAIF,wEACC,aAGD,2CACC,mBAGD,yBACC,kBACA,qBACA,iBAED,qBACC,cACA,QACA,iBACA,kBACA,aAKD,4CACC,eACA,YACA,mCACA,6BACA,qDAIA,2BACC,4BAKD,wBACC,sBACA,4BACA,+BACC,2CACA,qBACA,kBAGF,0BACC,qBACA,gBAIF,YACC,YACA,8BACA,oBACC,sBAIF,eACC,2CAUD,mBACC,kBACA,cACA,2BACC,kBACA,cAIF,UACC,gBAGD,8CACC,UAIA,oGAGC,WAIF,mBACC,WACA,kBACA,QAEA,kDACC,UAIF,WACC,WACA,YAGD,eACC,WAIA,8CACC,UAKD,kDACC,UAKD,0CACC,UAKD,8CACC,8CAIF,KACC,mFAGD,OACC,gBACA,YACA,eACA,qBACA,UACC,qBAIF,2FACC,gBACA,uBAGD,2BACC,yDAGD,2BACC,6DAID,yBACC,gBACA,gBACA,WACA,mCACA,YACA,wBAEA,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAED,oDACC,WAEA,8EACC,yEAED,8EACC,wEAGF,oEACC,UAID,oDACC,mBACA,gCACA,WACA,WACA,YAED,0DACC,yBAGA,+FACC,gDAGD,wOAGC,sCACA,gCACA,iBAGD,yNAEC,gCACA,WAMJ,wCACC,gCACA,wCAKD,yBACC,2BACA,sBACA,mCACA,wBAEA,4CACC,uBAGD,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAIF,qFACC,iBAGA,iDACC,mBACA,gCACA,WACA,yDACC,UACA,WACA,iBAGF,uDACC,yBAGA,0TAIC,sCACA,gCACA,iBAGD,4FACC,gCAGD,qEACC,2CASH,oGACC,aACA,iBACA,8BACA,0GACC,cACA,SACA,YACA,YACA,WACA,aACA,mBACA,uBACA,8GACC,kBACA,kBACA,mBACA,6BACA,cACA,iBACA,WACA,YACA,YACA,eAOJ,8BACC,kBACA,aACA,sBAEA,uCACC,eACA,sBACA,oBACA,aAEA,yDACC,cACA,uCACA,4BACA,gCAGA,6DACC,eAED,uDACC,iBAED,oEACC,YACA,YAKH,mDACC,kBACA,+BACA,YACA,SACA,aACA,WACA,QACA,MAEA,4KAGC,0CACA,UAIF,iDACC,eACA,YACA,sBACA,oBACA,WACA,gBACA,eACA,8CACA,0CACA,wCACA,kBACA,UACA,QACA,QAEA,gEACC,sCACA,0BACA,WACA,YACA,WACA,WAGD,mDACC,WACA,YACA,gBAGD,uDACC,SACA,gBACA,4DACC,aACA,YAMH,kDACC,sBACA,qBACA,gBACA,OAGA,WACA,kBAED,4CACC,oCACA,kBACA,gBACA,WACA,aAED,wCACC,8CACA,WAED,0DAEC,kBACA,mBAEC,mEACC,4CACA,8CACA,sEACC,UACA,YAIH,0EACC,cACA,aACA,YACA,sBACA,2BACA,sBAED,+EACC,iBACA,iBAGD,6EACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,qQAGC,kBAED,oLAEC,mBAGD,6DACC,aACA,4CAED,2EACC,mBAED,oEACC,gBACA,mBACA,uBACA,qBACA,4BACA,kBACA,4BACA,eAEA,YACA,oFACC,aACA,2FACC,gBACA,gBACA,uBAED,0FACC,gBAIH,oIACC,WAED,oEACC,iBAED,oEAIC,aACA,sBAEA,0EACC,aACA,+CACA,6BACA,aACA,cAEA,6EACC,cACA,kBACA,mCACA,QAhBS,KAiBT,aACA,sBACA,YAGA,gFACC,YACA,UACA,kBACA,mCAEA,yFACC,oBACA,+BACA,wBACA,YA/BU,KAgCV,eACA,yGACC,uBAGF,yFACC,iBACA,WAED,qFACC,kBACA,gBACA,uBACA,gBAON,2DACC,gDAIF,WACC,0BAGD,aACC,WACA,sBAKD,YACC,6BAMA,qBACC,WACA,aAED,wBACC,cACA,gDACA,WACA,aAED,2BACC,WACA,YACA,6BACC,WAGF,wBACC,wCACA,kBACA,mBACA,gBACA,uBACA,0CACA,kCACA,6DACC,0CAGF,sBACC,UACA,WAKF,YACC,oBACA,YAED,SACC,oBACA,kDACA,4BACA,iCACA,YACA,0BACA,cACA,QACA,kBACA,mBACC,QACA,kBACA,qBACC,WAIA,wFACC,cAIF,gCACC,SACA,iBACA,mCACC,iBACA,gBACA,kBACA,kBACA,+DACC,+EAGF,+CACC,aAIH,gBACC,aACA,uBACC,QAGF,yBAEC,kBACA,aACA,WACA,uBACA,mBACA,gBACA,cAEA,gBAEA,8FAGC,oBAGF,yBACC,UACA,WAID,oBACC,iBACA,kBAEA,2BACC,eAGF,+DACC,UAEA,0JAEC,WAOH,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAOD,+CACC,SACA,kBAED,mDACC,gBAKF,cACC,mBAMD,mBACC,aACA,QACA,SACA,UCtiCD,kFACC,6BAED,uGACC,wCAED,sDACI,kCAMJ,iHAUC,YACA,WAdgB,KAehB,sBASD,wBACI,aAIJ,yJAUC,qBACA,iBACA,eACA,8CACA,6BACA,0CACA,mCACA,aACA,mCACA,YAEC,irCAIC,0CACA,aAED,qZACC,aACA,8CACA,8BAED,scACC,0CAGF,wNACC,8CACA,6BACA,eACA,WAED,wNACC,gBAED,oPACC,mDAGD,iNACC,8CACA,0CACA,gCACA,eAGA,kvBAEC,uCAIA,mjCAGC,oDACA,gDAED,gwBAEC,4CAED,2WACC,6CAGF,gRAEC,8CACA,6CACA,eAKH,2BACC,qBACA,gBACA,eACA,8CACA,gCACA,gDACA,aACA,mCAEA,8CACA,gCACA,eACA,WAKA,4KACC,6BACA,0BAEA,OAzIe,KA2IhB,0EAIC,YACA,WAID,kBACC,WACA,cACA,gBACA,WACA,eAED,mBACC,SACA,QAED,iBACC,cAKF,6GASC,iBACA,mCACA,WACA,WAjLgB,KAkLhB,eACA,sBACA,8CAEA,mKACC,eAIF,qMAcC,qBACA,eACA,mCACA,8CACA,6BACA,iDACA,YACA,aACA,yCACA,uBACA,eACA,+0BACC,0CAED,yRACC,YAIF,mCACC,8CACA,6BAGD,mCACC,aACA,YAID,OACC,kEACA,gBACA,8CACA,8BASA,2DACC,eAIA,sFACC,eAMH,sGAQC,iBACA,wCAGA,gMACC,SAGD,oIACC,+CACA,2CACA,sBAWA,4MAEC,qBACA,2BACA,WAUD,kGACC,6BACA,2CACA,mFACA,iBACA,4BAEA,yDACA,UACA,OArTc,KAsTd,MAtTc,KAuTd,gBACA,eACA,eACA,6HACC,eCrRH,+CD6RG,yOACC,gCAID,4qBAGC,qDACA,8CACA,6vBACC,uDAQH,+VACC,qDACA,2CAEA,UAQJ,uBAEC,eAED,2BAEC,mBAUC,4GAEC,kBACA,cACA,SACA,UACA,WACA,gBACA,oIACC,iBAED,4WAEC,eAED,gKACC,WACA,qBACA,OAxBkB,KAyBlB,MAzBkB,KA0BlB,sBACA,kBACA,qBACA,2CAED,oeAEC,0CAED,4LACC,oBACA,qCACA,kBACA,mBAED,4bAIC,8DACA,8CACA,0CAED,oMACC,2CACA,0DAED,oOACC,+CAID,gJACC,qBACA,iBAED,oMACC,cA/DkB,KAmEnB,mFACC,kBACA,OArEkB,KAsElB,MAtEkB,KAuElB,2BACA,2BAED,mGACC,yDAED,+GACC,0DAOD,gZAEC,qBAED,wUACC,aAzFyB,KA2F1B,4NACC,8DACA,yBACA,qBAED,gOACC,oCACA,6CAED,gQACC,8DACA,6CACA,yBAID,8OAEC,0CACA,6BACA,+DAED,6HACC,gEAED,mHACC,WAOJ,iBACC,gBACA,8CACA,qCACC,sCAED,yBACC,qBACA,iBACA,sBACA,6BACC,eAGF,uCACC,gBACA,qEACA,yCAED,kCACC,iBACA,SACA,UACA,wDACC,mBACA,gBACA,uBACA,6DACC,eACA,gEACC,eACA,iBAIH,6JAGC,kBACA,kBACA,aACA,+BACA,eACA,gCAGA,mEACC,8CAGF,uDACE,8CACA,6BAMH,oGAEC,eAID,mHAEC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,YACA,gBACA,6IACC,kCAED,iKACC,iBACA,iBACA,stBAIC,sBACA,8CACA,gCACA,0CAED,2NACC,aAGF,2KACC,iBACA,gBACA,gBACA,6BACA,yMACC,2BAKJ,sBACC,qBACA,+DACC,aACA,eACA,kEACC,WAGF,uCACC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,iBACA,gBACA,oDACC,kCAED,8DACC,iBACA,iBACA,sBACA,8CACA,0CACA,2FACC,aAED,8JAEC,qCACA,iCAGF,sDACC,gBACA,gBACA,YACA,wDACC,mEACA,WAGF,2LAGC,WAED,mEACC,iBAMH,UACC,qBACA,qBACA,2BACC,wBACA,eACA,yCACC,iBACA,iBACA,sBACA,8CACA,gCACA,0CACA,oBACA,mBACA,gDACC,gBAIH,yBACC,UACA,4BACC,YACA,kBACA,kBACA,+BACA,eACA,gCACA,8BACC,mBACA,gBACA,uBACA,YACA,wBACA,SACA,eACA,eACA,2BACA,yBACA,sBACA,qBACA,iBACA,oBACA,mBACA,0CACA,yBACA,sCACC,YACA,4CACA,4BACA,2BACA,eACA,gBACA,cACA,WACA,iBACA,kBAGF,sCACC,6BAED,qCACC,8CACA,6BACA,6CACC,mBAQL,mBACC,cACA,WACA,UACA,cACA,8CACA,mCACA,gBACA,WACA,gBAEC,2CACC,8BAED,gDACC,8BAGF,yCACC,yBAED,sCACC,mCACA,gCACA,iCAED,2CACC,mCACA,gCACA,iCAKF,iBACC,QAEC,0BAED,QAEC,yBAED,YAGC,0BAED,QAEC,0BAGF,OACC,qBACA,uBACA,mCAKD,cACC,kBACA,cACA,aACA,UACA,WACA,gBAWD,cAJC,oCACA,mCAOD,wBARC,oCACA,mCAWD,4BAZC,oCACA,mCEhzBD,mBAEC,yBACA,sBACA,qBACA,6PACC,aAGD,+QACC,YACA,kBACA,2BACA,WACA,WACA,kBACA,2CACA,SACA,UAGD,gLACC,WAIA,kPACC,WAGD,+HACC,SAOH,+DAGC,oBACA,kBACA,MACA,WACA,aACA,OC2Ce,KD1Cf,sBACA,8BAID,WACC,cACA,kBACA,kBACA,wBACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mCACC,UAaD,gCACC,8CACA,sDACA,yCACA,sBACA,aACA,kBACA,gBAfD,gBACA,oCAgBC,UACA,SACA,SACA,gBAEA,kDACC,aAID,sCACC,gCACA,iDACA,YACA,YACA,SACA,QACA,kBACA,oBACA,WAGD,uEAEC,iCAzCF,gBACA,oCA4CA,cACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,UACA,QACA,WAEA,gFAGD,kCACC,aACA,mBACA,cAGD,sFAEC,oBACA,mBAGD,0CACC,SACA,mBACA,YAGD,4CACC,yBACA,cAKA,qDAEC,YACA,kBACA,6EACC,aACA,uBACA,mBACA,MC3EY,KD4EZ,YACA,eACA,YACA,UACA,aAEA,yFACC,UAGD,yGACC,aASL,0CACC,YAKD,gBACC,gCACA,eACA,iBACA,SACA,UACA,kBACA,gBACA,uBAEA,cAGD,kBACC,gCACA,kBACA,gBACA,eACA,iBACA,gBACA,uBAID,cACC,kBACA,gBACA,aACA,WACA,SACA,aACA,aACA,eACA,SAEA,2BACC,IC1Ic,KDiJf,gDACC,mBACA,eAED,gJAEC,qBACA,YACA,WJnOF,iCACC,4BACA,2BACA,eACA,gBAGD,iBACC,kDAID,sGAMC,kBACA,0IACC,UACA,WACA,YACA,WACA,uBACA,kBACA,QACA,SACA,mBACA,6CACA,qCACA,gCACA,4BACA,wBACA,4CACA,2CAEA,wCAEA,gYAGC,uCAKH,wDAEC,2CACA,4CAGD,yDAEC,YACA,WACA,qBAKA,yJACC,2CAED,iMACC,gDAED,yMACC,iDAED,iPACC,sDAIF,kBACC,KACC,uBAED,GACC,0BAIF,SACC,gCAGD,yKAQC,wDM3GD,MACC,gEAEA,0GACA,8FAGD,sCACC,MACC,6BACA,8BAKF,KACC,WACA,YACA,kBAEA,6EAGD,KAEC,6EAEA,0EACA,sBACA,2BACA,eACA,WACA,iDAKD,GACC,iBACA,eACA,mBACA,iBACA,8BAGD,GACC,eACA,cACA,8BAGD,GACC,eAID,GACC,kBACA,gCAGD,GACC,eAGD,MAEC,qBACA,aACA,eAGD,GACC,YACA,mBACA,iBAGD,IACC,iBACA,sBACA,kCACA,mCACA,qBACA,mBAMD,wBACC,sBAKD,0BAEC,8DAEA,MDfkB,MCgBlB,YACA,gBACA,kBACA,mDACA,8CACA,+EACA,gBACA,YACA,sBACA,qBACA,iBACA,aACA,sBACA,YACA,cAGA,8CACC,cACA,6CACA,qDACC,qBACA,WACA,aACA,kBACA,gCACA,gBACA,SAIF,6BACC,kBAED,6BACC,kBACA,YACA,WACA,kBACA,gBACA,sBACA,aACA,sBACA,6CACA,iBAEA,wCACC,oDAGD,gCACC,oBACA,eACA,QACA,cACA,SACA,kBACA,WACA,wCAGA,uCACC,QACA,oDACC,2BAIF,8DAEC,6BAED,2DAIC,6BAKA,oKAEC,+CAGF,gDACC,gDACA,aAMA,gVAEC,4CAKF,yDACC,UACA,SAMA,qGAEC,aAIF,uDACC,iBACA,iBACA,eACA,mBACA,uBACA,2BACA,iBACA,oBAEA,yEACC,gBAKF,mCACC,cACA,WACA,kBACA,sCACC,oBACA,eACA,kBACA,WACA,kBAIC,oLAEC,wCACA,+CAKD,gMAEC,wCACA,4CAKF,+DACC,UAGD,oEAEC,gBACA,kBAGD,iEAEC,gBAGA,6BAMJ,sEAEC,kBACA,sBAGC,sRAGC,oCAIF,0EACC,0BACA,gCACA,4BACA,cACA,8BACA,iBACA,gBACA,sBACA,gBACA,sBACA,mBACA,uBACA,wCACA,6BACA,aACA,YAGA,kFACC,sBACA,gHACC,qBAGF,0GACC,kBACA,WACA,YAEA,wCAID,kIACC,qBACA,YACA,0MACC,2BAKH,gIACC,kBACA,cACA,YACA,WACA,YACA,YACA,kBACA,eACA,wCAEA,oIAEC,oCAKF,4HACC,SAID,4IACC,UACA,YAED,kJACC,wBACA,YAIH,iCACC,aAMD,kMAEC,SACA,WACA,+BACA,4BACA,2BACA,4ZAEC,+BACA,UAUD,iDACC,UACA,kBACA,WACA,YACA,SACA,YAIA,OAEA,+DACC,UACA,eACA,gDACA,gBAGF,8CACC,kBACA,YACA,WACA,SACA,UACA,gBH5XF,6CG8XE,qBACA,4BACA,2BACA,YACA,gBACA,wBACA,gBACA,YACA,UACA,iCACA,6BACA,yBACA,YACA,kBACA,qCAMD,qDACC,kBAIA,wGACC,UAED,8FACC,sBAED,oJACC,oCAID,mDACC,4BACA,wBACA,oBAQH,sDACC,cACA,yDACC,wBACA,mBACA,yBAED,yDACC,sBACA,YAED,6DACC,YACA,WACA,SACA,gBAIA,gJHhcF,uCGmcE,sNAEC,+BACA,UAGF,0FACC,gBACA,iBACA,cACA,iBACA,eAEA,sGACC,UACA,kBACA,2GACC,gBACA,mBACA,sCACA,gCASJ,qDACC,iBACA,kBACA,cACA,uBACA,qCACA,UACA,kBACA,8CACA,WACA,mHAEC,oBACA,WAED,2DACC,YACA,eACA,YACA,kIAGC,UAGF,sEACC,WACA,YACA,6BACA,0BAED,wIAEC,WACA,YACA,cACA,0KACC,2BAED,4KACC,iBAED,8JACC,gDACA,6CACA,4BACA,yBAQH,wDACC,oBACA,kBACA,4BACA,kGACC,kBACA,mBACA,uBACA,gBACA,aACA,iBAED,6FACC,SACA,YACA,WACA,iBACA,sMAEC,UAQH,6GAEC,uBACA,2FAGA,kBACA,OACA,8CACA,sBAMD,yCACC,gDACA,wCACA,oBAGD,iCACC,yBAGD,iHAEC,qBAMF,SACC,sBACA,gBACA,oCACA,gBACA,UACA,aACA,kDACA,0BACA,2CACA,cAEA,kCACC,eAIF,2CACC,SACC,kDACA,mDAED,gBACC,kDAED,aACC,oDAcF,aACC,aACA,8CACA,iBACA,cACA,iBACA,YAGA,kCACC,gBAID,kCACC,aACA,kBACA,oBAGA,gBAGA,uDAEC,eACA,mFACC,aAKH,uCACC,oCASF,aACC,WACA,UD3nBmB,MC4nBnB,UD3nBmB,MC4nBnB,cACA,wBACA,gBACA,IDloBe,KCmoBf,QACA,gBACA,kBACA,aACA,aACA,0BACA,wCACA,0CACA,cAEA,uBACC,aAOF,cAEC,gBAGC,oFACC,cAKH,sBACC,aACA,6CACA,cACA,kDAEA,iBACA,gBACA,sBAGA,uCACC,UAGD,iCACC,uBACA,gCAOE,4NACC,qBACA,WACA,cAOL,qBACC,sBACA,+BACA,gBACA,oDACA,6CACA,cAEA,sCACC,aACA,mBACA,YACA,WACA,UACA,SACA,+BACA,gBACA,SACA,oDACA,gBACA,mBACA,eACA,WAGA,6BAEA,6CACC,yCACA,8CACA,eAED,wFAEC,+CAGD,8CACC,2CACA,gCACA,4BACA,WACA,WACA,YACA,MACA,OACA,cAGD,oDACC,2DACA,gCAMH,SACC,cACA,aACA,mBACA,gBACC,wBAIA,yDAEC,oBACA,iBAIH,aACC,kBACA,gBACA,iBACA,mBAGD,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAKF,YACC,aACA,mBAEA,uBACC,aACA,sBACA,YACA,kBACA,mBACA,gBACA,uBACA,eACA,gCACA,kBACA,YAEA,8BACC,aAID,mCACC,kBAED,kCACC,mBAGD,6BACC,qBACA,WACA,YACA,qBACA,sBACA,gBACA,iBACA,WACA,eAGD,yBACC,gCACA,kBACA,gBACA,uBAED,gCACC,iBAED,0FAGC,kBACA,6BACA,kDAIH,eACC,WACA,oBACC,oBAWD,0DACC,wCAIA,gFACC,YAKH,gDAGC,kBACA,8CACA,6BACA,yCACA,YACA,YACA,WACA,gBACA,QACA,sDACA,aACA,mBAEA,kEACC,YAKA,UAEA,2BACA,YACA,SACA,QACA,kBACA,oBACA,iDACA,iBAGD,oFACC,0BACA,UACA,eACA,sGACC,UACA,0BAIF,8EACC,WACA,OACA,eACA,gGACC,SACA,WAIF,+DACC,cAGD,+GACC,SAGD,yDAEC,wBACA,sBAED,yDACC,aACA,cAEA,8EACC,aAGD,oOAGC,eACA,YAhGkB,KAiGlB,SACA,yCACA,+BACA,aACA,uBACA,YACA,SACA,mBACA,gBACA,WACA,6BACA,mBAEA,whDAIC,YACA,aACA,gCACA,gBApHe,KAsHhB,yzBAIC,yBAOC,gvGACC,YAnIe,KAuIlB,+tBAEC,iCAED,ojBAEC,+CAED,4nBAEC,kDAED,mSACC,wCACA,4CAGD,mSACC,2BAED,iRACC,eACA,mBAED,sPACC,YACA,kBACA,cACA,mBAED,mSACC,SACA,gBAGD,gVACC,8BAID,wQACC,MA/Ke,KAgLf,aAGD,uyBAEC,qBACA,WAED,yeACC,mBAED,8cACC,mBAED,2xBACC,YAED,iRACC,aACA,cAGA,mBACA,mbACC,gBAIF,04BAEC,cAGD,0RACC,UAnNiB,KAoNjB,gBACA,aACA,cAEA,4bACC,gBAQA,2hDACC,gBAMD,ygDACC,kBAKJ,8EACC,UACA,6FACC,UAcD,+EACC,MAhQiB,KAiQjB,OAjQiB,KA0QlB,6CACC,WACA,YAOJ,kBACC,wBACA,kBACA,MACA,2CACA,aACA,sBACA,uCACA,gBACA,gBACA,gBACA,kBACA,eACA,UD9nCgB,MC+nChB,UD9nCgB,MCioChB,yCACC,kBACA,YACA,eACA,iBACA,aACA,eACA,mBACA,cAKC,8RAEC,QACA,WACA,YACA,YACA,aACA,WACA,eACA,4mBAEC,WAED,wtBAEC,WACA,ghDAEC,UAIF,kVACC,UAKH,8IAGC,8CAEA,2RACC,aAIF,6JAEC,kBACA,YACA,WACA,WAQC,2XAEC,aAEA,2eACC,WAIH,wFACC,SACA,SAEA,aACA,gGACC,SAGD,oHACC,aAKH,qEACC,aACA,SACA,UACA,qBACA,YACA,WACA,SACA,UAGD,qEACC,kBACA,qBACA,YACA,WACA,iBACA,kBACA,sBACA,kBACA,WACA,kBACA,gBACA,0BACA,iBACA,iBACA,eACA,QACA,iBAGD,kJAEC,cACA,kBACA,mBACA,gBACA,uBACA,QACA,aACA,mBACA,eAGD,yEACC,WACA,QACA,SACA,6BAGD,wEACC,QACA,mBACA,gBACA,uBACA,gBACA,WACA,cACA,iBAGD,qEACC,QACA,kBACA,kFACC,SAGA,WAIH,2EACC,aC54CF,WACC,WAGD,YACC,YAGD,YACC,WAGD,aACC,YAGD,YACC,WAGD,QACC,aAGD,iBACC,kBACA,cACA,aACA,UACA,WACA,gBAGD,MACC,gBAGD,QACC,kBAGD,aACC,qBC7CD,mBACC,SCFD,wCAGC,UACC,4BACA,qBAID,iBACC,wBAID,YACC,WACA,yBACA,sBAID,0BACC,6BACA,eACA,0BAGA,6BACC,wBAIF,0CACC,cAGD,8BACC,SACA,cAID,kBACC,wCACA,cAEA,iBAEA,eACA,uCACC,aAED,8BACC,aACA,mDACC,gBAOF,gDACC,4BAED,qDACC,eACA,gCACA,IJoCa,KInCb,OACA,WACA,YACA,aACA,sCACA,eACA,WACA,wBAED,2CACC,4BAKF,uBACC,eACA,gCACA,OACA,WACA,YACA,aACA,eACA,WAED,0DAEC,UAID,6CACC,kBAID,kDACC,0BAED,8CACC,wBAGD,wBACC,kBAID,gBACC,aAED,+BACC,4BAID,2MAIC,aAED,kDACC,eAGD,qCACC,UAMF,0CACC,gCACC,6BACA,eACA,uCACC,wBAMA,4CACC,cAGF,iCACC,gCACA,iDACA,SACA,YACA,SACA,QACA,kBACA,oBACA,WACA,aACA,aAID,0CACC,YCnKH,SACI,kBACA,cACA,6BACA,kBACA,mBACA,sBACA,gBACA,gBACA,gBACA,iBACA,qBACA,iBACA,oBACA,mBACA,kBACA,oBACA,iBACA,uBACA,eACA,UACA,eAEA,gBACA,eACA,uDACA,8DAGI,mBACA,UACA,wBAEJ,uDAEI,SACA,kBAEJ,8CAEI,eACA,eAEJ,4CAEI,gBACA,eACA,0EACI,QACA,OACA,iBACA,8BACA,gDAGR,0CAEI,iBACA,cACA,wEACI,QACA,QACA,iBACA,8BACA,+CAQJ,kPACI,SACA,yBACA,8CAGR,iCACI,WACA,oBAEJ,kCACI,UACA,oBAOA,0QACI,MACA,yBACA,iDAGR,4EAEI,SACA,kBAEJ,oCACI,WACA,iBAEJ,qCACI,UACA,iBAIR,eACI,gBACA,gBACA,8CACA,6BACA,kBACA,mCAGJ,+BACI,kBACA,QACA,SACA,2BACA,mBCpHJ,kBACE,gBACA,gBACA,8CACA,6BACA,6CACA,eACA,gBACA,eACA,cACA,mCACA,aACA,mBAEF,wCACE,aACA,mBAEF,oEAEE,gBACA,gBACA,sBACA,eACA,YACA,aACA,mBACA,4BACA,2BACA,6BACA,aAEF,4FAEE,cACA,WACA,YACA,gBACA,iBACA,YAGF,4GAEE,mRACA,YACA,wCACA,qBACA,WACA,YAEF,wGAEE,WACA,wBACA,iBAEF,kPAIE,eACA,UAEF,+BACE,WAEF,mCACE,eAEF,8BACE,yCAEF,6BACE,2CAEF,gCACE,2CAEF,gCACE,2CAEF,6BACE,2CAOF,gEACE,mUC5GA,oDACC,gCAIA,0DACC,gBAED,2EACC,+BACA,2BACA,wCAEA,oPAGC,UAID,mFACC,aAED,sFACC,aAED,mGACC,YAMJ,sBAEC,6BAKD,kCACC,cAGD,oBACC,iBACA,mCACA,sBACA,qBACA,iBAED,+KAIC,kBAID,oBACC,eACA,aACA,mBACA,uBACA,OArEc,KAsEd,sBACA,SACA,wBACA,WACA,8CACA,yCACA,sBACC,kBACA,gCACA,wBACC,gCACA,iBACA,mBAEA,aACA,aACA","file":"server.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","variables.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/dist/index.css","public.scss"],"names":[],"mappings":"AA8IQ,8BC5HR,yQACC,SACA,UACA,SACA,oBACA,eACA,oBACA,wBACA,eACA,uDACA,qBAGD,6CACC,aAID,kGAEC,wDACA,aAGD,UACC,YAGD,6DACC,cAGD,KACC,gBAGD,MACC,yBACA,iBACA,mBAGD,cACC,gBACA,mBAGD,YACC,sBAGD,EACC,SACA,6BACA,qBACA,eACA,IACC,eAIF,WACC,aACA,0BAGD,MACC,eACA,QACC,eAIF,0BACC,eAGD,GACC,gBAGD,KACC,mBAEA,mCACA,uCACA,6BACA,6BAGD,mBACC,kBAGD,qBACC,kBACA,sBACA,qBACA,2BACA,2DACA,uBAGD,iBACC,qBACA,aACA,gCAGD,eACC,YACA,aAGD,cACC,eACA,MACA,SACA,OACA,YACA,WACA,aACA,kBACA,gDACA,wCACA,iBACA,eACA,kBACC,cACA,kBACA,UACA,QACA,gBAED,gBACC,wCACA,sDACA,4CACC,6CAOH,oBACC,WACA,YAGD,2BACC,+BAGD,gCACC,+BAGD,0BACC,kCACA,yCACA,+BACA,4BAMD,YACC,8CACA,wCAMD,kBACC,sBAKD,4BAEC,oCACA,kBACA,gBACA,WACA,sDACC,gBAED,sEACC,gBAED,kCACC,mBAED,oHAEC,qBACA,YACA,WACA,mBACA,gcAEC,WAOH,sBACC,WASD,oCACC,kBACA,yBACA,sBACA,qBACA,iBAKD,kBACC,kBACA,UACA,SACA,YAGD,8BACC,WACA,oBACA,wBACA,wBAGD,2EACC,WAED,oGACC,kDACA,UACA,qBAGD,mDACC,6BACA,YACA,WACA,yCACA,4BACA,2BACA,WAOA,qEACC,UAED,qEACC,UAIF,wEACC,aAGD,2CACC,mBAGD,yBACC,kBACA,qBACA,iBAED,qBACC,cACA,QACA,iBACA,kBACA,aAKD,4CACC,eACA,YACA,mCACA,6BACA,qDAIA,2BACC,4BAKD,wBACC,sBACA,4BACA,+BACC,2CACA,qBACA,kBAGF,0BACC,qBACA,gBAIF,YACC,YACA,8BACA,oBACC,sBAIF,eACC,2CAUD,mBACC,kBACA,cACA,2BACC,kBACA,cAIF,UACC,gBAGD,8CACC,UAIA,oGAGC,WAIF,mBACC,WACA,kBACA,QAEA,kDACC,UAIF,WACC,WACA,YAGD,eACC,WAIA,8CACC,UAKD,kDACC,UAKD,0CACC,UAKD,8CACC,8CAIF,KACC,mFAGD,OACC,gBACA,YACA,eACA,qBACA,UACC,qBAIF,2FACC,gBACA,uBAGD,2BACC,yDAGD,2BACC,6DAID,yBACC,gBACA,gBACA,WACA,mCACA,YACA,wBAEA,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAED,oDACC,WAEA,8EACC,yEAED,8EACC,wEAGF,oEACC,UAID,oDACC,mBACA,gCACA,WACA,WACA,YAED,0DACC,yBAGA,+FACC,gDAGD,wOAGC,8CACA,wCACA,iBAGD,yNAEC,gCACA,WAMJ,wCACC,gCACA,wCAKD,yBACC,2BACA,sBACA,mCACA,wBAEA,4CACC,uBAGD,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAIF,qFACC,iBAGA,iDACC,mBACA,gCACA,WACA,yDACC,UACA,WACA,iBAGF,uDACC,yBAGA,0TAIC,8CACA,wCACA,iBAGD,4FACC,gCAGD,qEACC,2CASH,oGACC,aACA,iBACA,8BACA,0GACC,cACA,SACA,YACA,YACA,WACA,aACA,mBACA,uBACA,8GACC,kBACA,kBACA,mBACA,6BACA,cACA,iBACA,WACA,YACA,YACA,eAOJ,8BACC,kBACA,aACA,sBAEA,uCACC,eACA,sBACA,oBACA,aAEA,yDACC,cACA,uCACA,4BACA,gCAGA,6DACC,eAED,uDACC,iBAED,oEACC,YACA,YAKH,mDACC,kBACA,+BACA,YACA,SACA,aACA,WACA,QACA,MAEA,4KAGC,kDACA,UAIF,iDACC,eACA,YACA,sBACA,oBACA,WACA,gBACA,eACA,8CACA,0CACA,wCACA,kBACA,UACA,QACA,QAEA,gEACC,sCACA,0BACA,WACA,YACA,WACA,WAGD,mDACC,WACA,YACA,gBAGD,uDACC,SACA,gBACA,4DACC,aACA,YAMH,kDACC,sBACA,qBACA,gBACA,OAGA,WACA,kBAED,4CACC,oCACA,kBACA,gBACA,WACA,aAED,wCACC,8CACA,WAED,0DAEC,kBACA,mBAEC,mEACC,4CACA,8CACA,sEACC,UACA,YAIH,0EACC,cACA,aACA,YACA,sBACA,2BACA,sBAED,+EACC,iBACA,iBAGD,6EACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,qQAGC,kBAED,oLAEC,mBAGD,6DACC,aACA,4CAED,2EACC,mBAED,oEACC,gBACA,mBACA,uBACA,qBACA,4BACA,kBACA,4BACA,eAEA,YACA,oFACC,aACA,2FACC,gBACA,gBACA,uBAED,0FACC,gBAIH,oIACC,WAED,oEACC,iBAED,oEAIC,aACA,sBAEA,0EACC,aACA,+CACA,6BACA,aACA,cAEA,6EACC,cACA,kBACA,mCACA,QAhBS,KAiBT,aACA,sBACA,YAGA,gFACC,YACA,UACA,kBACA,mCAEA,yFACC,oBACA,+BACA,wBACA,YA/BU,KAgCV,eACA,yGACC,uBAGF,yFACC,iBACA,WAED,qFACC,kBACA,gBACA,uBACA,gBAON,2DACC,gDAIF,WACC,0BAGD,aACC,WACA,sBAKD,YACC,6BAMA,qBACC,WACA,aAED,wBACC,cACA,gDACA,WACA,aAED,2BACC,WACA,YACA,6BACC,WAGF,wBACC,wCACA,kBACA,mBACA,gBACA,uBACA,0CACA,kCACA,6DACC,0CAGF,sBACC,UACA,WAKF,YACC,oBACA,YAED,SACC,oBACA,kDACA,4BACA,iCACA,YACA,0BACA,cACA,QACA,kBACA,mBACC,QACA,kBACA,qBACC,WAIA,wFACC,cAIF,gCACC,SACA,iBACA,mCACC,iBACA,gBACA,kBACA,kBACA,+DACC,+EAGF,+CACC,aAIH,gBACC,aACA,uBACC,QAGF,yBAEC,kBACA,aACA,WACA,uBACA,mBACA,gBACA,cAEA,gBAEA,8FAGC,oBAGF,yBACC,UACA,WAID,oBACC,iBACA,kBAEA,2BACC,eAGF,+DACC,UAEA,0JAEC,WAOH,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAOD,+CACC,SACA,kBAED,mDACC,gBAKF,cACC,mBAMD,mBACC,aACA,QACA,SACA,UCtiCD,kFACC,6BAED,uGACC,wCAED,sDACI,kCAMJ,iHAUC,YACA,WAdgB,KAehB,sBASD,wBACI,aAIJ,yJAUC,qBACA,iBACA,eACA,8CACA,6BACA,0CACA,mCACA,aACA,mCACA,YAEC,irCAIC,0CACA,aAED,qZACC,aACA,8CACA,8BAED,scACC,kDAGF,wNACC,8CACA,6BACA,eACA,WAED,wNACC,gBAED,oPACC,mDAGD,iNACC,8CACA,0CACA,wCACA,eAGA,kvBAEC,+CAIA,mjCAGC,oDACA,gDAED,gwBAEC,4CAED,2WACC,6CAGF,gRAEC,8CACA,6CACA,eAKH,2BACC,qBACA,gBACA,eACA,8CACA,gCACA,gDACA,aACA,mCAEA,8CACA,gCACA,eACA,WAKA,4KACC,6BACA,0BAEA,OAzIe,KA2IhB,0EAIC,YACA,WAID,kBACC,WACA,cACA,gBACA,WACA,eAED,mBACC,SACA,QAED,iBACC,cAKF,6GASC,iBACA,mCACA,WACA,WAjLgB,KAkLhB,eACA,sBACA,8CAEA,mKACC,eAIF,qMAcC,qBACA,eACA,mCACA,8CACA,6BACA,iDACA,YACA,aACA,yCACA,uBACA,eACA,+0BACC,0CAED,yRACC,YAIF,mCACC,8CACA,6BAGD,mCACC,aACA,YAID,OACC,kEACA,gBACA,8CACA,8BASA,2DACC,eAIA,sFACC,eAMH,sGAQC,iBACA,wCAGA,gMACC,SAGD,oIACC,+CACA,2CACA,sBAWA,4MAEC,qBACA,2BACA,WAUD,kGACC,6BACA,2CACA,mFACA,iBACA,4BAEA,yDACA,UACA,OArTc,KAsTd,MAtTc,KAuTd,gBACA,eACA,eACA,6HACC,eCrRH,+CD6RG,yOACC,gCAID,4qBAGC,qDACA,8CACA,6vBACC,uDAQH,+VACC,qDACA,2CAEA,UAQJ,uBAEC,eAED,2BAEC,mBAUC,4GAEC,kBACA,cACA,SACA,UACA,WACA,gBACA,oIACC,iBAED,4WAEC,eAED,gKACC,WACA,qBACA,OAxBkB,KAyBlB,MAzBkB,KA0BlB,sBACA,kBACA,qBACA,2CAED,oeAEC,0CAED,4LACC,oBACA,qCACA,kBACA,mBAED,4bAIC,8DACA,8CACA,0CAED,oMACC,2CACA,0DAED,oOACC,+CAID,gJACC,qBACA,iBAED,oMACC,cA/DkB,KAmEnB,mFACC,kBACA,OArEkB,KAsElB,MAtEkB,KAuElB,2BACA,2BAED,mGACC,yDAED,+GACC,0DAOD,gZAEC,qBAED,wUACC,aAzFyB,KA2F1B,4NACC,8DACA,yBACA,qBAED,gOACC,oCACA,6CAED,gQACC,8DACA,6CACA,yBAID,8OAEC,0CACA,6BACA,+DAED,6HACC,gEAED,mHACC,WAOJ,iBACC,gBACA,8CACA,qCACC,sCAED,yBACC,qBACA,iBACA,sBACA,6BACC,eAGF,uCACC,gBACA,qEACA,yCAED,kCACC,iBACA,SACA,UACA,wDACC,mBACA,gBACA,uBACA,6DACC,eACA,gEACC,eACA,iBAIH,6JAGC,kBACA,kBACA,aACA,+BACA,eACA,gCAGA,mEACC,8CAGF,uDACE,8CACA,6BAMH,oGAEC,eAID,mHAEC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,YACA,gBACA,6IACC,0CAED,iKACC,iBACA,iBACA,stBAIC,sBACA,8CACA,gCACA,0CAED,2NACC,aAGF,2KACC,iBACA,gBACA,gBACA,6BACA,yMACC,2BAKJ,sBACC,qBACA,+DACC,aACA,eACA,kEACC,WAGF,uCACC,gBACA,mBACA,uBACA,wCACA,2CACA,uBACA,yCACA,0CACA,SACA,iBACA,gBACA,oDACC,0CAED,8DACC,iBACA,iBACA,sBACA,8CACA,0CACA,2FACC,aAED,8JAEC,qCACA,iCAGF,sDACC,gBACA,gBACA,YACA,wDACC,mEACA,WAGF,2LAGC,WAED,mEACC,iBAMH,UACC,qBACA,qBACA,2BACC,wBACA,eACA,yCACC,iBACA,iBACA,sBACA,8CACA,gCACA,0CACA,oBACA,mBACA,gDACC,gBAIH,yBACC,UACA,4BACC,YACA,kBACA,kBACA,+BACA,eACA,gCACA,8BACC,mBACA,gBACA,uBACA,YACA,wBACA,SACA,eACA,eACA,2BACA,yBACA,sBACA,qBACA,iBACA,oBACA,mBACA,0CACA,yBACA,sCACC,YACA,4CACA,4BACA,2BACA,eACA,gBACA,cACA,WACA,iBACA,kBAGF,sCACC,6BAED,qCACC,8CACA,6BACA,6CACC,mBAQL,mBACC,cACA,WACA,UACA,cACA,8CACA,mCACA,gBACA,WACA,gBAEC,2CACC,8BAED,gDACC,8BAGF,yCACC,yBAED,sCACC,mCACA,wCACA,iCAED,2CACC,mCACA,wCACA,iCAKF,iBACC,QAEC,0BAED,QAEC,yBAED,YAGC,0BAED,QAEC,0BAGF,OACC,qBACA,uBACA,mCAKD,cACC,kBACA,cACA,aACA,UACA,WACA,gBAWD,cAJC,oCACA,mCAOD,wBARC,oCACA,mCAWD,4BAZC,oCACA,mCEhzBD,mBAEC,yBACA,sBACA,qBACA,6PACC,aAGD,+QACC,YACA,kBACA,2BACA,WACA,WACA,kBACA,mDACA,SACA,UAGD,gLACC,WAIA,kPACC,WAGD,+HACC,SAOH,+DAGC,oBACA,kBACA,MACA,WACA,aACA,OC2Ce,KD1Cf,sBACA,8BAID,WACC,cACA,kBACA,kBACA,wBACA,sBACA,UACA,mBACA,aACA,eACA,gBACA,WAEA,mCACC,UAaD,gCACC,8CACA,sDACA,yCACA,sBACA,aACA,kBACA,gBAfD,gBACA,oCAgBC,UACA,SACA,SACA,gBAEA,kDACC,aAID,sCACC,gCACA,iDACA,YACA,YACA,SACA,QACA,kBACA,oBACA,WAGD,uEAEC,iCAzCF,gBACA,oCA4CA,cACC,oBACA,yFACA,4BACA,wBACA,2BACA,WACA,kBACA,UACA,QACA,WAEA,gFAGD,kCACC,aACA,mBACA,cAGD,sFAEC,oBACA,mBAGD,0CACC,SACA,mBACA,YAGD,4CACC,yBACA,cAKA,qDAEC,YACA,kBACA,6EACC,aACA,uBACA,mBACA,MC3EY,KD4EZ,YACA,eACA,YACA,UACA,aAEA,yFACC,UAGD,yGACC,aASL,0CACC,YAKD,gBACC,wCACA,eACA,iBACA,SACA,UACA,kBACA,gBACA,uBAEA,cAGD,kBACC,wCACA,kBACA,gBACA,eACA,iBACA,gBACA,uBAID,cACC,kBACA,gBACA,aACA,WACA,SACA,aACA,aACA,eACA,SAEA,2BACC,IC1Ic,KDiJf,gDACC,mBACA,eAED,gJAEC,qBACA,YACA,WJnOF,iCACC,4BACA,2BACA,eACA,gBAGD,iBACC,kDAID,sGAMC,kBACA,0IACC,UACA,WACA,YACA,WACA,uBACA,kBACA,QACA,SACA,mBACA,6CACA,qCACA,gCACA,4BACA,wBACA,4CACA,2CAEA,wCAEA,gYAGC,uCAKH,wDAEC,2CACA,4CAGD,yDAEC,YACA,WACA,qBAKA,yJACC,2CAED,iMACC,gDAED,yMACC,iDAED,iPACC,sDAIF,kBACC,KACC,uBAED,GACC,0BAIF,SACC,gCAGD,yKAQC,wDM3GD,MACC,gEAEA,0GACA,8FAGD,sCACC,MACC,6BACA,8BAKF,KACC,WACA,YACA,kBAEA,6EAGD,KAEC,6EAEA,0EACA,sBACA,2BACA,eACA,WACA,iDAKD,GACC,iBACA,eACA,mBACA,iBACA,8BAGD,GACC,eACA,cACA,8BAGD,GACC,eAID,GACC,kBACA,gCAGD,GACC,eAGD,MAEC,qBACA,aACA,eAGD,GACC,YACA,mBACA,iBAGD,IACC,iBACA,sBACA,kCACA,mCACA,qBACA,mBAMD,wBACC,sBAKD,0BAEC,8DAEA,MDfkB,MCgBlB,YACA,gBACA,kBACA,mDACA,8CACA,+EACA,gBACA,YACA,sBACA,qBACA,iBACA,aACA,sBACA,YACA,cAGA,8CACC,cACA,6CACA,qDACC,qBACA,WACA,aACA,kBACA,gCACA,gBACA,SAIF,6BACC,kBAED,6BACC,kBACA,YACA,WACA,kBACA,gBACA,sBACA,aACA,sBACA,6CACA,iBAEA,wCACC,oDAGD,gCACC,oBACA,eACA,QACA,cACA,SACA,kBACA,WACA,wCAGA,uCACC,QACA,oDACC,2BAIF,8DAEC,6BAED,2DAIC,6BAKA,oKAEC,+CAGF,gDACC,wDACA,aAMA,gVAEC,oDAKF,yDACC,UACA,SAMA,qGAEC,aAIF,uDACC,iBACA,iBACA,eACA,mBACA,uBACA,2BACA,iBACA,oBAEA,yEACC,gBAKF,mCACC,cACA,WACA,kBACA,sCACC,oBACA,eACA,kBACA,WACA,kBAIC,oLAEC,wCACA,+CAKD,gMAEC,wCACA,oDAKF,+DACC,UAGD,oEAEC,gBACA,kBAGD,iEAEC,gBAGA,6BAMJ,sEAEC,kBACA,sBAGC,sRAGC,oCAIF,0EACC,0BACA,gCACA,4BACA,cACA,8BACA,iBACA,gBACA,sBACA,gBACA,sBACA,mBACA,uBACA,wCACA,6BACA,aACA,YAGA,kFACC,sBACA,gHACC,qBAGF,0GACC,kBACA,WACA,YAEA,wCAID,kIACC,qBACA,YACA,0MACC,2BAKH,gIACC,kBACA,cACA,YACA,WACA,YACA,YACA,kBACA,eACA,wCAEA,oIAEC,oCAKF,4HACC,SAID,4IACC,UACA,YAED,kJACC,wBACA,YAIH,iCACC,aAMD,kMAEC,SACA,WACA,+BACA,4BACA,2BACA,4ZAEC,+BACA,UAUD,iDACC,UACA,kBACA,WACA,YACA,SACA,YAIA,OAEA,+DACC,UACA,eACA,wDACA,gBAGF,8CACC,kBACA,YACA,WACA,SACA,UACA,gBH5XF,6CG8XE,qBACA,4BACA,2BACA,YACA,gBACA,wBACA,gBACA,YACA,UACA,iCACA,6BACA,yBACA,YACA,kBACA,qCAMD,qDACC,kBAIA,wGACC,UAED,8FACC,sBAED,oJACC,oCAID,mDACC,4BACA,wBACA,oBAQH,sDACC,cACA,yDACC,wBACA,mBACA,yBAED,yDACC,sBACA,YAED,6DACC,YACA,WACA,SACA,gBAIA,gJHhcF,uCGmcE,sNAEC,+BACA,UAGF,0FACC,gBACA,iBACA,cACA,iBACA,eAEA,sGACC,UACA,kBACA,2GACC,gBACA,mBACA,8CACA,wCASJ,qDACC,iBACA,kBACA,cACA,uBACA,qCACA,UACA,kBACA,8CACA,WACA,mHAEC,oBACA,WAED,2DACC,YACA,eACA,YACA,kIAGC,UAGF,sEACC,WACA,YACA,6BACA,0BAED,wIAEC,WACA,YACA,cACA,0KACC,2BAED,4KACC,iBAED,8JACC,gDACA,6CACA,4BACA,yBAQH,wDACC,oBACA,kBACA,4BACA,kGACC,kBACA,mBACA,uBACA,gBACA,aACA,iBAED,6FACC,SACA,YACA,WACA,iBACA,sMAEC,UAQH,6GAEC,uBACA,2FAGA,kBACA,OACA,8CACA,sBAMD,yCACC,gDACA,wCACA,oBAGD,iCACC,yBAGD,iHAEC,qBAMF,SACC,sBACA,gBACA,oCACA,gBACA,UACA,aACA,kDACA,0BACA,2CACA,cAEA,kCACC,eAIF,2CACC,SACC,kDACA,mDAED,gBACC,kDAED,aACC,oDAcF,aACC,aACA,8CACA,iBACA,cACA,iBACA,YAGA,kCACC,gBAID,kCACC,aACA,kBACA,oBAGA,gBAGA,uDAEC,eACA,mFACC,aAKH,uCACC,oCASF,aACC,WACA,UD3nBmB,MC4nBnB,UD3nBmB,MC4nBnB,cACA,wBACA,gBACA,IDloBe,KCmoBf,QACA,gBACA,kBACA,aACA,aACA,0BACA,wCACA,0CACA,cAEA,uBACC,aAOF,cAEC,gBAGC,oFACC,cAKH,sBACC,aACA,6CACA,cACA,kDAEA,iBACA,gBACA,sBAGA,uCACC,UAGD,iCACC,uBACA,gCAOE,4NACC,qBACA,WACA,cAOL,qBACC,sBACA,+BACA,gBACA,oDACA,6CACA,cAEA,sCACC,aACA,mBACA,YACA,WACA,UACA,SACA,+BACA,gBACA,SACA,oDACA,gBACA,mBACA,eACA,WAGA,6BAEA,6CACC,yCACA,8CACA,eAED,wFAEC,+CAGD,8CACC,2CACA,gCACA,4BACA,WACA,WACA,YACA,MACA,OACA,cAGD,oDACC,mEACA,gCAMH,SACC,cACA,aACA,mBACA,gBACC,wBAIA,yDAEC,oBACA,iBAIH,aACC,kBACA,gBACA,iBACA,mBAGD,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAKF,YACC,aACA,mBAEA,uBACC,aACA,sBACA,YACA,kBACA,mBACA,gBACA,uBACA,eACA,gCACA,kBACA,YAEA,8BACC,aAID,mCACC,kBAED,kCACC,mBAGD,6BACC,qBACA,WACA,YACA,qBACA,sBACA,gBACA,iBACA,WACA,eAGD,yBACC,gCACA,kBACA,gBACA,uBAED,gCACC,iBAED,0FAGC,kBACA,6BACA,kDAIH,eACC,WACA,oBACC,oBAWD,0DACC,wCAIA,gFACC,YAKH,gDAGC,kBACA,8CACA,6BACA,yCACA,YACA,YACA,WACA,gBACA,QACA,sDACA,aACA,mBAEA,kEACC,YAKA,UAEA,2BACA,YACA,SACA,QACA,kBACA,oBACA,iDACA,iBAGD,oFACC,0BACA,UACA,eACA,sGACC,UACA,0BAIF,8EACC,WACA,OACA,eACA,gGACC,SACA,WAIF,+DACC,cAGD,+GACC,SAGD,yDAEC,wBACA,sBAED,yDACC,aACA,cAEA,8EACC,aAGD,oOAGC,eACA,YAhGkB,KAiGlB,SACA,yCACA,+BACA,aACA,uBACA,YACA,SACA,mBACA,gBACA,WACA,6BACA,mBAEA,whDAIC,YACA,aACA,gCACA,gBApHe,KAsHhB,yzBAIC,yBAOC,gvGACC,YAnIe,KAuIlB,+tBAEC,iCAED,ojBAEC,+CAED,4nBAEC,kDAED,mSACC,wCACA,oDAGD,mSACC,2BAED,iRACC,eACA,mBAED,sPACC,YACA,kBACA,cACA,mBAED,mSACC,SACA,gBAGD,gVACC,8BAID,wQACC,MA/Ke,KAgLf,aAGD,uyBAEC,qBACA,WAED,yeACC,mBAED,8cACC,mBAED,2xBACC,YAED,iRACC,aACA,cAGA,mBACA,mbACC,gBAIF,04BAEC,cAGD,0RACC,UAnNiB,KAoNjB,gBACA,aACA,cAEA,4bACC,gBAQA,2hDACC,gBAMD,ygDACC,kBAKJ,8EACC,UACA,6FACC,UAcD,+EACC,MAhQiB,KAiQjB,OAjQiB,KA0QlB,6CACC,WACA,YAOJ,kBACC,wBACA,kBACA,MACA,2CACA,aACA,sBACA,uCACA,gBACA,gBACA,gBACA,kBACA,eACA,UD9nCgB,MC+nChB,UD9nCgB,MCioChB,yCACC,kBACA,YACA,eACA,iBACA,aACA,eACA,mBACA,cAKC,8RAEC,QACA,WACA,YACA,YACA,aACA,WACA,eACA,4mBAEC,WAED,wtBAEC,WACA,ghDAEC,UAIF,kVACC,UAKH,8IAGC,8CAEA,2RACC,aAIF,6JAEC,kBACA,YACA,WACA,WAQC,2XAEC,aAEA,2eACC,WAIH,wFACC,SACA,SAEA,aACA,gGACC,SAGD,oHACC,aAKH,qEACC,aACA,SACA,UACA,qBACA,YACA,WACA,SACA,UAGD,qEACC,kBACA,qBACA,YACA,WACA,iBACA,kBACA,sBACA,kBACA,WACA,kBACA,gBACA,0BACA,iBACA,iBACA,eACA,QACA,iBAGD,kJAEC,cACA,kBACA,mBACA,gBACA,uBACA,QACA,aACA,mBACA,eAGD,yEACC,WACA,QACA,SACA,6BAGD,wEACC,QACA,mBACA,gBACA,uBACA,gBACA,WACA,cACA,iBAGD,qEACC,QACA,kBACA,kFACC,SAGA,WAIH,2EACC,aC54CF,WACC,WAGD,YACC,YAGD,YACC,WAGD,aACC,YAGD,YACC,WAGD,QACC,aAGD,iBACC,kBACA,cACA,aACA,UACA,WACA,gBAGD,MACC,gBAGD,QACC,kBAGD,aACC,qBC7CD,mBACC,SCFD,wCAGC,UACC,4BACA,qBAID,iBACC,wBAID,YACC,WACA,yBACA,sBAID,0BACC,6BACA,eACA,0BAGA,6BACC,wBAIF,0CACC,cAGD,8BACC,SACA,cAID,kBACC,wCACA,cAEA,iBAEA,eACA,uCACC,aAED,8BACC,aACA,mDACC,gBAOF,gDACC,4BAED,qDACC,eACA,gCACA,IJoCa,KInCb,OACA,WACA,YACA,aACA,sCACA,eACA,WACA,wBAED,2CACC,4BAKF,uBACC,eACA,gCACA,OACA,WACA,YACA,aACA,eACA,WAED,0DAEC,UAID,6CACC,kBAID,kDACC,0BAED,8CACC,wBAGD,wBACC,kBAID,gBACC,aAED,+BACC,4BAID,2MAIC,aAED,kDACC,eAGD,qCACC,UAMF,0CACC,gCACC,6BACA,eACA,uCACC,wBAMA,4CACC,cAGF,iCACC,gCACA,iDACA,SACA,YACA,SACA,QACA,kBACA,oBACA,WACA,aACA,aAID,0CACC,YCnKH,SACI,kBACA,cACA,6BACA,kBACA,mBACA,sBACA,gBACA,gBACA,gBACA,iBACA,qBACA,iBACA,oBACA,mBACA,kBACA,oBACA,iBACA,uBACA,eACA,UACA,eAEA,gBACA,eACA,uDACA,8DAGI,mBACA,UACA,wBAEJ,uDAEI,SACA,kBAEJ,8CAEI,eACA,eAEJ,4CAEI,gBACA,eACA,0EACI,QACA,OACA,iBACA,8BACA,gDAGR,0CAEI,iBACA,cACA,wEACI,QACA,QACA,iBACA,8BACA,+CAQJ,kPACI,SACA,yBACA,8CAGR,iCACI,WACA,oBAEJ,kCACI,UACA,oBAOA,0QACI,MACA,yBACA,iDAGR,4EAEI,SACA,kBAEJ,oCACI,WACA,iBAEJ,qCACI,UACA,iBAIR,eACI,gBACA,gBACA,8CACA,6BACA,kBACA,mCAGJ,+BACI,kBACA,QACA,SACA,2BACA,mBCpHJ,kBACE,gBACA,gBACA,8CACA,6BACA,6CACA,eACA,gBACA,eACA,cACA,mCACA,aACA,mBAEF,wCACE,aACA,mBAEF,oEAEE,gBACA,gBACA,sBACA,eACA,YACA,aACA,mBACA,4BACA,2BACA,6BACA,aAEF,4FAEE,cACA,WACA,YACA,gBACA,iBACA,YAGF,4GAEE,mRACA,YACA,wCACA,qBACA,WACA,YAEF,wGAEE,WACA,wBACA,iBAEF,kPAIE,eACA,UAEF,+BACE,WAEF,mCACE,eAEF,8BACE,yCAEF,6BACE,2CAEF,gCACE,2CAEF,gCACE,2CAEF,6BACE,2CAOF,gEACE,mUC5GA,oDACC,wCAIA,0DACC,gBAED,2EACC,+BACA,2BACA,wCAEA,oPAGC,UAID,mFACC,aAED,sFACC,aAED,mGACC,YAMJ,sBAEC,6BAKD,kCACC,cAGD,oBACC,iBACA,mCACA,sBACA,qBACA,iBAED,+KAIC,kBAID,oBACC,eACA,aACA,mBACA,uBACA,OArEc,KAsEd,sBACA,SACA,wBACA,WACA,8CACA,yCACA,sBACC,kBACA,gCACA,wBACC,gCACA,iBACA,mBAEA,aACA,aACA","file":"server.css"}
\ No newline at end of file diff --git a/core/css/styles.css b/core/css/styles.css index 4da2a82fbda..f54fdbeb0ab 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -1 +1 @@ -html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section,main{margin:0;padding:0;border:0;font-weight:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;cursor:default;scrollbar-color:var(--color-border-dark) rgba(0,0,0,0);scrollbar-width:thin}.js-focus-visible :focus:not(.focus-visible){outline:none}.content:not(#content-vue) :focus-visible,.app-navigation:not(#app-navigation-vue) :focus-visible{box-shadow:inset 0 0 0 2px var(--color-primary);outline:none}html,body{height:100%}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5}table{border-collapse:separate;border-spacing:0;white-space:nowrap}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}a{border:0;color:var(--color-main-text);text-decoration:none;cursor:pointer}a *{cursor:pointer}a.external{margin:0 3px;text-decoration:underline}input{cursor:pointer}input *{cursor:pointer}select,.button span,label{cursor:pointer}ul{list-style:none}body{font-weight:normal;font-size:var(--default-font-size);line-height:var(--default-line-height);font-family:var(--font-face);color:var(--color-main-text)}.two-factor-header{text-align:center}.two-factor-provider{text-align:center;width:100% !important;display:inline-block;margin-bottom:0 !important;background-color:var(--color-background-darker) !important;border:none !important}.two-factor-link{display:inline-block;padding:12px;color:var(--color-text-lighter)}.float-spinner{height:32px;display:none}#nojavascript{position:fixed;top:0;bottom:0;left:0;height:100%;width:100%;z-index:9000;text-align:center;background-color:var(--color-background-darker);color:var(--color-primary-text);line-height:125%;font-size:24px}#nojavascript div{display:block;position:relative;width:50%;top:35%;margin:0px auto}#nojavascript a{color:var(--color-primary-text);border-bottom:2px dotted var(--color-main-background)}#nojavascript a:hover,#nojavascript a:focus{color:var(--color-primary-element-text-dark)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:var(--border-radius-large);border:2px solid rgba(0,0,0,0);background-clip:content-box}::selection{background-color:var(--color-primary-element);color:var(--color-primary-text)}#app-navigation *{box-sizing:border-box}#emptycontent,.emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:30vh;width:100%}#app-sidebar #emptycontent,#app-sidebar .emptycontent{margin-top:10vh}#emptycontent .emptycontent-search,.emptycontent .emptycontent-search{position:static}#emptycontent h2,.emptycontent h2{margin-bottom:10px}#emptycontent [class^=icon-],#emptycontent [class*=icon-],.emptycontent [class^=icon-],.emptycontent [class*=icon-]{background-size:64px;height:64px;width:64px;margin:0 auto 15px}#emptycontent [class^=icon-]:not([class^=icon-loading]),#emptycontent [class^=icon-]:not([class*=icon-loading]),#emptycontent [class*=icon-]:not([class^=icon-loading]),#emptycontent [class*=icon-]:not([class*=icon-loading]),.emptycontent [class^=icon-]:not([class^=icon-loading]),.emptycontent [class^=icon-]:not([class*=icon-loading]),.emptycontent [class*=icon-]:not([class^=icon-loading]),.emptycontent [class*=icon-]:not([class*=icon-loading]){opacity:.4}#datadirContent label{width:100%}.grouptop,.groupmiddle,.groupbottom{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#show,#dbpassword{position:absolute;right:1em;top:.8em;float:right}#show+label,#dbpassword+label{right:21px;top:15px !important;margin:-14px !important;padding:14px !important}#show:checked+label,#dbpassword:checked+label,#personal-show:checked+label{opacity:.8}#show:focus-visible+label,#dbpassword-toggle:focus-visible+label,#personal-show:focus-visible+label{box-shadow:var(--color-primary) 0 0 0 2px;opacity:1;border-radius:9999px}#show+label,#dbpassword+label,#personal-show+label{position:absolute !important;height:20px;width:24px;background-image:var(--icon-toggle-dark);background-repeat:no-repeat;background-position:center;opacity:.3}#show:focus+label,#dbpassword:focus+label,#personal-show:focus+label{opacity:1}#show+label:hover,#dbpassword+label:hover,#personal-show+label:hover{opacity:1}#show+label:before,#dbpassword+label:before,#personal-show+label:before{display:none}#pass2,input[name=personal-password-clone]{padding-right:30px}.personal-show-container{position:relative;display:inline-block;margin-right:6px}#personal-show+label{display:block;right:0;margin-top:-43px;margin-right:-4px;padding:22px}#body-user .warning,#body-settings .warning{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-main-text);background-color:rgba(var(--color-warning-rgb), 0.2)}.warning legend,.warning a{font-weight:bold !important}.error:not(.toastify) a{color:#fff !important;font-weight:bold !important}.error:not(.toastify) a.button{color:var(--color-text-lighter) !important;display:inline-block;text-align:center}.error:not(.toastify) pre{white-space:pre-wrap;text-align:left}.error-wide{width:700px;margin-left:-200px !important}.error-wide .button{color:#000 !important}.warning-input{border-color:var(--color-error) !important}.avatar,.avatardiv{border-radius:50%;flex-shrink:0}.avatar>img,.avatardiv>img{border-radius:50%;flex-shrink:0}td.avatar{border-radius:0}tr .action:not(.permanent),.selectedActions>a{opacity:0}tr:hover .action:not(.menuitem),tr:focus .action:not(.menuitem),tr .action.permanent:not(.menuitem){opacity:.5}.selectedActions>a{opacity:.5;position:relative;top:2px}.selectedActions>a:hover,.selectedActions>a:focus{opacity:1}tr .action{width:16px;height:16px}.header-action{opacity:.8}tr:hover .action:hover,tr:focus .action:focus{opacity:1}.selectedActions a:hover,.selectedActions a:focus{opacity:1}.header-action:hover,.header-action:focus{opacity:1}tbody tr:hover,tbody tr:focus,tbody tr:active{background-color:var(--color-background-dark)}code{font-family:"Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono",monospace}.pager{list-style:none;float:right;display:inline;margin:.7em 13em 0 0}.pager li{display:inline-block}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{overflow:hidden;text-overflow:ellipsis}.ui-icon-circle-triangle-e{background-image:url("../img/actions/play-next.svg?v=1")}.ui-icon-circle-triangle-w{background-image:url("../img/actions/play-previous.svg?v=1")}.ui-widget.ui-datepicker{margin-top:10px;padding:4px 8px;width:auto;border-radius:var(--border-radius);border:none;z-index:1600 !important}.ui-widget.ui-datepicker .ui-state-default,.ui-widget.ui-datepicker .ui-widget-content .ui-state-default,.ui-widget.ui-datepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-datepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-datepicker .ui-widget-header .ui-datepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-datepicker .ui-widget-header .ui-icon{opacity:.5}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e{background:url("../img/actions/arrow-right.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{background:url("../img/actions/arrow-left.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-state-hover .ui-icon{opacity:1}.ui-widget.ui-datepicker .ui-datepicker-calendar th{font-weight:normal;color:var(--color-text-lighter);opacity:.8;width:26px;padding:2px}.ui-widget.ui-datepicker .ui-datepicker-calendar tr:hover{background-color:inherit}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-today a:not(.ui-state-hover){background-color:var(--color-background-darker)}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-current-day a.ui-state-active,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-hover,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-focus{background-color:var(--color-primary);color:var(--color-primary-text);font-weight:bold}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-priority-secondary:not(.ui-state-hover){color:var(--color-text-lighter);opacity:.8}.ui-datepicker-prev,.ui-datepicker-next{border:var(--color-border-dark);background:var(--color-main-background)}.ui-widget.ui-timepicker{margin-top:10px !important;width:auto !important;border-radius:var(--border-radius);z-index:1600 !important}.ui-widget.ui-timepicker .ui-widget-content{border:none !important}.ui-widget.ui-timepicker .ui-state-default,.ui-widget.ui-timepicker .ui-widget-content .ui-state-default,.ui-widget.ui-timepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-timepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-timepicker .ui-widget-header .ui-timepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-timepicker table.ui-timepicker tr .ui-timepicker-hour-cell:first-child{margin-left:30px}.ui-widget.ui-timepicker .ui-timepicker-table th{font-weight:normal;color:var(--color-text-lighter);opacity:.8}.ui-widget.ui-timepicker .ui-timepicker-table th.periods{padding:0;width:30px;line-height:30px}.ui-widget.ui-timepicker .ui-timepicker-table tr:hover{background-color:inherit}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hour-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minute-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-hover,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-focus{background-color:var(--color-primary);color:var(--color-primary-text);font-weight:bold}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minutes:not(.ui-state-hover){color:var(--color-text-lighter)}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hours{border-right:1px solid var(--color-border)}.ui-widget.ui-datepicker .ui-datepicker-calendar tr,.ui-widget.ui-timepicker table.ui-timepicker tr{display:flex;flex-wrap:nowrap;justify-content:space-between}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td,.ui-widget.ui-timepicker table.ui-timepicker tr td{flex:1 1 auto;margin:0;padding:2px;height:26px;width:26px;display:flex;align-items:center;justify-content:center}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td>*,.ui-widget.ui-timepicker table.ui-timepicker tr td>*{border-radius:50%;text-align:center;font-weight:normal;color:var(--color-main-text);display:block;line-height:18px;width:18px;height:18px;padding:3px;font-size:.9em}#oc-dialog-filepicker-content{position:relative;display:flex;flex-direction:column}#oc-dialog-filepicker-content .dirtree{flex-wrap:wrap;box-sizing:border-box;padding-right:140px;display:flex}#oc-dialog-filepicker-content .dirtree div:first-child a{font-size:0px;background-image:var(--icon-home-dark);background-repeat:no-repeat;background-position:left center}#oc-dialog-filepicker-content .dirtree span:not(:last-child){cursor:pointer}#oc-dialog-filepicker-content .dirtree span:last-child{font-weight:bold}#oc-dialog-filepicker-content .dirtree span:not(:last-child)::after{content:">";padding:3px}#oc-dialog-filepicker-content #picker-showgridview{position:absolute;background-color:rgba(0,0,0,0);border:none;margin:0;padding:22px;opacity:.5;right:0;top:0}#oc-dialog-filepicker-content #picker-showgridview:hover,#oc-dialog-filepicker-content #picker-showgridview:active,#oc-dialog-filepicker-content #picker-showgridview:focus{box-shadow:0 0 0 2px var(--color-primary);opacity:1}#oc-dialog-filepicker-content .actions.creatable{flex-wrap:wrap;padding:0px;box-sizing:border-box;display:inline-flex;float:none;max-height:36px;max-width:36px;background-color:var(--color-background-dark);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-pill);position:relative;left:15px;top:3px;order:1}#oc-dialog-filepicker-content .actions.creatable .icon.icon-add{background-image:var(--icon-add-dark);background-size:16px 16px;width:34px;height:34px;margin:0px;opacity:.5}#oc-dialog-filepicker-content .actions.creatable a{width:36px;padding:0px;position:static}#oc-dialog-filepicker-content .actions.creatable .menu{top:100%;margin-top:10px}#oc-dialog-filepicker-content .actions.creatable .menu form{display:flex;margin:10px}#oc-dialog-filepicker-content .filelist-container{box-sizing:border-box;display:inline-block;overflow-y:auto;flex:1;width:100%;overflow-x:hidden}#oc-dialog-filepicker-content .emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:80px;width:100%;display:none}#oc-dialog-filepicker-content .filelist{background-color:var(--color-main-background);width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist{min-width:initial;margin-bottom:50px}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr{border-bottom:1px solid var(--color-border);background-color:var(--color-main-background)}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr th{width:80%;border:none}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle.name{padding-left:5px;margin-left:50px}#oc-dialog-filepicker-content #picker-filestable.filelist th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}#oc-dialog-filepicker-content #picker-filestable.filelist .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:hidden}#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:visible}#oc-dialog-filepicker-content #picker-filestable.filelist td{padding:14px;border-bottom:1px solid var(--color-border)}#oc-dialog-filepicker-content #picker-filestable.filelist tr:last-child td{border-bottom:none}#oc-dialog-filepicker-content #picker-filestable.filelist .filename{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background-size:32px;background-repeat:no-repeat;padding-left:51px;background-position:7px 7px;cursor:pointer;max-width:0}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts{display:flex}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__first{overflow:hidden;white-space:pre;text-overflow:ellipsis}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__last{white-space:pre}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize,#oc-dialog-filepicker-content #picker-filestable.filelist .date{width:80px}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize{text-align:right}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid{display:flex;flex-direction:column}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody{display:grid;grid-template-columns:repeat(auto-fill, 120px);justify-content:space-around;row-gap:15px;margin:15px 0}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr{display:block;position:relative;border-radius:var(--border-radius);padding:10px;display:flex;flex-direction:column;width:100px}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td{border:none;padding:0;text-align:center;border-radius:var(--border-radius)}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename{padding:100px 0 0 0;background-position:center top;background-size:contain;line-height:30px;max-width:none}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename .filename-parts{justify-content:center}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filesize{line-height:10px;width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.date{align-self:center;overflow:hidden;text-overflow:ellipsis;min-width:110px}#oc-dialog-filepicker-content .filepicker_element_selected{background-color:var(--color-background-darker)}.ui-dialog{position:fixed !important}span.ui-icon{float:left;margin:3px 7px 30px 0}.extra-data{padding-right:5px !important}#tagsdialog .content{width:100%;height:280px}#tagsdialog .scrollarea{overflow:auto;border:1px solid var(--color-background-darker);width:100%;height:240px}#tagsdialog .bottombuttons{width:100%;height:30px}#tagsdialog .bottombuttons *{float:left}#tagsdialog .taglist li{background:var(--color-background-dark);padding:.3em .8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:background-color 500ms;transition:background-color 500ms}#tagsdialog .taglist li:hover,#tagsdialog .taglist li:active{background:var(--color-background-darker)}#tagsdialog .addinput{width:90%;clear:both}.breadcrumb{display:inline-flex;height:50px}li.crumb{display:inline-flex;background-image:url("../img/breadcrumb.svg?v=1");background-repeat:no-repeat;background-position:right center;height:44px;background-size:auto 24px;flex:0 0 auto;order:1;padding-right:7px}li.crumb.crumbmenu{order:2;position:relative}li.crumb.crumbmenu a{opacity:.5}li.crumb.crumbmenu.canDropChildren .popovermenu,li.crumb.crumbmenu.canDrop .popovermenu{display:block}li.crumb.crumbmenu .popovermenu{top:100%;margin-right:3px}li.crumb.crumbmenu .popovermenu ul{max-height:345px;overflow-y:auto;overflow-x:hidden;padding-right:5px}li.crumb.crumbmenu .popovermenu ul li.canDrop span:first-child{background-image:url("../img/filetypes/folder-drag-accept.svg?v=1") !important}li.crumb.crumbmenu .popovermenu .in-breadcrumb{display:none}li.crumb.hidden{display:none}li.crumb.hidden~.crumb{order:3}li.crumb>a,li.crumb>span{position:relative;padding:12px;opacity:.5;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:0 0 auto;max-width:200px}li.crumb>a.icon-home,li.crumb>a.icon-delete,li.crumb>span.icon-home,li.crumb>span.icon-delete{text-indent:-9999px}li.crumb>a[class^=icon-]{padding:0;width:44px}li.crumb:last-child{font-weight:bold;margin-right:10px}li.crumb:last-child a~span{padding-left:0}li.crumb:hover,li.crumb:focus,li.crumb a:focus,li.crumb:active{opacity:1}li.crumb:hover>a,li.crumb:hover>span,li.crumb:focus>a,li.crumb:focus>span,li.crumb a:focus>a,li.crumb a:focus>span,li.crumb:active>a,li.crumb:active>span{opacity:.7}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}fieldset.warning legend,fieldset.update legend{top:18px;position:relative}fieldset.warning legend+p,fieldset.update legend+p{margin-top:12px}@-ms-viewport{width:device-width}.hiddenuploadfield{display:none;width:0;height:0;opacity:0}/*# sourceMappingURL=styles.css.map */ +html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section,main{margin:0;padding:0;border:0;font-weight:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;cursor:default;scrollbar-color:var(--color-border-dark) rgba(0,0,0,0);scrollbar-width:thin}.js-focus-visible :focus:not(.focus-visible){outline:none}.content:not(#content-vue) :focus-visible,.app-navigation:not(#app-navigation-vue) :focus-visible{box-shadow:inset 0 0 0 2px var(--color-primary-element);outline:none}html,body{height:100%}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5}table{border-collapse:separate;border-spacing:0;white-space:nowrap}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}a{border:0;color:var(--color-main-text);text-decoration:none;cursor:pointer}a *{cursor:pointer}a.external{margin:0 3px;text-decoration:underline}input{cursor:pointer}input *{cursor:pointer}select,.button span,label{cursor:pointer}ul{list-style:none}body{font-weight:normal;font-size:var(--default-font-size);line-height:var(--default-line-height);font-family:var(--font-face);color:var(--color-main-text)}.two-factor-header{text-align:center}.two-factor-provider{text-align:center;width:100% !important;display:inline-block;margin-bottom:0 !important;background-color:var(--color-background-darker) !important;border:none !important}.two-factor-link{display:inline-block;padding:12px;color:var(--color-text-lighter)}.float-spinner{height:32px;display:none}#nojavascript{position:fixed;top:0;bottom:0;left:0;height:100%;width:100%;z-index:9000;text-align:center;background-color:var(--color-background-darker);color:var(--color-primary-element-text);line-height:125%;font-size:24px}#nojavascript div{display:block;position:relative;width:50%;top:35%;margin:0px auto}#nojavascript a{color:var(--color-primary-element-text);border-bottom:2px dotted var(--color-main-background)}#nojavascript a:hover,#nojavascript a:focus{color:var(--color-primary-element-text-dark)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-track-piece{background-color:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:var(--border-radius-large);border:2px solid rgba(0,0,0,0);background-clip:content-box}::selection{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}#app-navigation *{box-sizing:border-box}#emptycontent,.emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:30vh;width:100%}#app-sidebar #emptycontent,#app-sidebar .emptycontent{margin-top:10vh}#emptycontent .emptycontent-search,.emptycontent .emptycontent-search{position:static}#emptycontent h2,.emptycontent h2{margin-bottom:10px}#emptycontent [class^=icon-],#emptycontent [class*=icon-],.emptycontent [class^=icon-],.emptycontent [class*=icon-]{background-size:64px;height:64px;width:64px;margin:0 auto 15px}#emptycontent [class^=icon-]:not([class^=icon-loading]),#emptycontent [class^=icon-]:not([class*=icon-loading]),#emptycontent [class*=icon-]:not([class^=icon-loading]),#emptycontent [class*=icon-]:not([class*=icon-loading]),.emptycontent [class^=icon-]:not([class^=icon-loading]),.emptycontent [class^=icon-]:not([class*=icon-loading]),.emptycontent [class*=icon-]:not([class^=icon-loading]),.emptycontent [class*=icon-]:not([class*=icon-loading]){opacity:.4}#datadirContent label{width:100%}.grouptop,.groupmiddle,.groupbottom{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#show,#dbpassword{position:absolute;right:1em;top:.8em;float:right}#show+label,#dbpassword+label{right:21px;top:15px !important;margin:-14px !important;padding:14px !important}#show:checked+label,#dbpassword:checked+label,#personal-show:checked+label{opacity:.8}#show:focus-visible+label,#dbpassword-toggle:focus-visible+label,#personal-show:focus-visible+label{box-shadow:var(--color-primary-element) 0 0 0 2px;opacity:1;border-radius:9999px}#show+label,#dbpassword+label,#personal-show+label{position:absolute !important;height:20px;width:24px;background-image:var(--icon-toggle-dark);background-repeat:no-repeat;background-position:center;opacity:.3}#show:focus+label,#dbpassword:focus+label,#personal-show:focus+label{opacity:1}#show+label:hover,#dbpassword+label:hover,#personal-show+label:hover{opacity:1}#show+label:before,#dbpassword+label:before,#personal-show+label:before{display:none}#pass2,input[name=personal-password-clone]{padding-right:30px}.personal-show-container{position:relative;display:inline-block;margin-right:6px}#personal-show+label{display:block;right:0;margin-top:-43px;margin-right:-4px;padding:22px}#body-user .warning,#body-settings .warning{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-main-text);background-color:rgba(var(--color-warning-rgb), 0.2)}.warning legend,.warning a{font-weight:bold !important}.error:not(.toastify) a{color:#fff !important;font-weight:bold !important}.error:not(.toastify) a.button{color:var(--color-text-lighter) !important;display:inline-block;text-align:center}.error:not(.toastify) pre{white-space:pre-wrap;text-align:left}.error-wide{width:700px;margin-left:-200px !important}.error-wide .button{color:#000 !important}.warning-input{border-color:var(--color-error) !important}.avatar,.avatardiv{border-radius:50%;flex-shrink:0}.avatar>img,.avatardiv>img{border-radius:50%;flex-shrink:0}td.avatar{border-radius:0}tr .action:not(.permanent),.selectedActions>a{opacity:0}tr:hover .action:not(.menuitem),tr:focus .action:not(.menuitem),tr .action.permanent:not(.menuitem){opacity:.5}.selectedActions>a{opacity:.5;position:relative;top:2px}.selectedActions>a:hover,.selectedActions>a:focus{opacity:1}tr .action{width:16px;height:16px}.header-action{opacity:.8}tr:hover .action:hover,tr:focus .action:focus{opacity:1}.selectedActions a:hover,.selectedActions a:focus{opacity:1}.header-action:hover,.header-action:focus{opacity:1}tbody tr:hover,tbody tr:focus,tbody tr:active{background-color:var(--color-background-dark)}code{font-family:"Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono",monospace}.pager{list-style:none;float:right;display:inline;margin:.7em 13em 0 0}.pager li{display:inline-block}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{overflow:hidden;text-overflow:ellipsis}.ui-icon-circle-triangle-e{background-image:url("../img/actions/play-next.svg?v=1")}.ui-icon-circle-triangle-w{background-image:url("../img/actions/play-previous.svg?v=1")}.ui-widget.ui-datepicker{margin-top:10px;padding:4px 8px;width:auto;border-radius:var(--border-radius);border:none;z-index:1600 !important}.ui-widget.ui-datepicker .ui-state-default,.ui-widget.ui-datepicker .ui-widget-content .ui-state-default,.ui-widget.ui-datepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-datepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-datepicker .ui-widget-header .ui-datepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-datepicker .ui-widget-header .ui-icon{opacity:.5}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e{background:url("../img/actions/arrow-right.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{background:url("../img/actions/arrow-left.svg") center center no-repeat}.ui-widget.ui-datepicker .ui-widget-header .ui-state-hover .ui-icon{opacity:1}.ui-widget.ui-datepicker .ui-datepicker-calendar th{font-weight:normal;color:var(--color-text-lighter);opacity:.8;width:26px;padding:2px}.ui-widget.ui-datepicker .ui-datepicker-calendar tr:hover{background-color:inherit}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-today a:not(.ui-state-hover){background-color:var(--color-background-darker)}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-current-day a.ui-state-active,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-hover,.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-state-focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text);font-weight:bold}.ui-widget.ui-datepicker .ui-datepicker-calendar td.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),.ui-widget.ui-datepicker .ui-datepicker-calendar td .ui-priority-secondary:not(.ui-state-hover){color:var(--color-text-lighter);opacity:.8}.ui-datepicker-prev,.ui-datepicker-next{border:var(--color-border-dark);background:var(--color-main-background)}.ui-widget.ui-timepicker{margin-top:10px !important;width:auto !important;border-radius:var(--border-radius);z-index:1600 !important}.ui-widget.ui-timepicker .ui-widget-content{border:none !important}.ui-widget.ui-timepicker .ui-state-default,.ui-widget.ui-timepicker .ui-widget-content .ui-state-default,.ui-widget.ui-timepicker .ui-widget-header .ui-state-default{border:1px solid rgba(0,0,0,0);background:inherit}.ui-widget.ui-timepicker .ui-widget-header{padding:7px;font-size:13px;border:none;background-color:var(--color-main-background);color:var(--color-main-text)}.ui-widget.ui-timepicker .ui-widget-header .ui-timepicker-title{line-height:1;font-weight:normal}.ui-widget.ui-timepicker table.ui-timepicker tr .ui-timepicker-hour-cell:first-child{margin-left:30px}.ui-widget.ui-timepicker .ui-timepicker-table th{font-weight:normal;color:var(--color-text-lighter);opacity:.8}.ui-widget.ui-timepicker .ui-timepicker-table th.periods{padding:0;width:30px;line-height:30px}.ui-widget.ui-timepicker .ui-timepicker-table tr:hover{background-color:inherit}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hour-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minute-cell a.ui-state-active,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-hover,.ui-widget.ui-timepicker .ui-timepicker-table td .ui-state-focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text);font-weight:bold}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-minutes:not(.ui-state-hover){color:var(--color-text-lighter)}.ui-widget.ui-timepicker .ui-timepicker-table td.ui-timepicker-hours{border-right:1px solid var(--color-border)}.ui-widget.ui-datepicker .ui-datepicker-calendar tr,.ui-widget.ui-timepicker table.ui-timepicker tr{display:flex;flex-wrap:nowrap;justify-content:space-between}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td,.ui-widget.ui-timepicker table.ui-timepicker tr td{flex:1 1 auto;margin:0;padding:2px;height:26px;width:26px;display:flex;align-items:center;justify-content:center}.ui-widget.ui-datepicker .ui-datepicker-calendar tr td>*,.ui-widget.ui-timepicker table.ui-timepicker tr td>*{border-radius:50%;text-align:center;font-weight:normal;color:var(--color-main-text);display:block;line-height:18px;width:18px;height:18px;padding:3px;font-size:.9em}#oc-dialog-filepicker-content{position:relative;display:flex;flex-direction:column}#oc-dialog-filepicker-content .dirtree{flex-wrap:wrap;box-sizing:border-box;padding-right:140px;display:flex}#oc-dialog-filepicker-content .dirtree div:first-child a{font-size:0px;background-image:var(--icon-home-dark);background-repeat:no-repeat;background-position:left center}#oc-dialog-filepicker-content .dirtree span:not(:last-child){cursor:pointer}#oc-dialog-filepicker-content .dirtree span:last-child{font-weight:bold}#oc-dialog-filepicker-content .dirtree span:not(:last-child)::after{content:">";padding:3px}#oc-dialog-filepicker-content #picker-showgridview{position:absolute;background-color:rgba(0,0,0,0);border:none;margin:0;padding:22px;opacity:.5;right:0;top:0}#oc-dialog-filepicker-content #picker-showgridview:hover,#oc-dialog-filepicker-content #picker-showgridview:active,#oc-dialog-filepicker-content #picker-showgridview:focus{box-shadow:0 0 0 2px var(--color-primary-element);opacity:1}#oc-dialog-filepicker-content .actions.creatable{flex-wrap:wrap;padding:0px;box-sizing:border-box;display:inline-flex;float:none;max-height:36px;max-width:36px;background-color:var(--color-background-dark);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-pill);position:relative;left:15px;top:3px;order:1}#oc-dialog-filepicker-content .actions.creatable .icon.icon-add{background-image:var(--icon-add-dark);background-size:16px 16px;width:34px;height:34px;margin:0px;opacity:.5}#oc-dialog-filepicker-content .actions.creatable a{width:36px;padding:0px;position:static}#oc-dialog-filepicker-content .actions.creatable .menu{top:100%;margin-top:10px}#oc-dialog-filepicker-content .actions.creatable .menu form{display:flex;margin:10px}#oc-dialog-filepicker-content .filelist-container{box-sizing:border-box;display:inline-block;overflow-y:auto;flex:1;width:100%;overflow-x:hidden}#oc-dialog-filepicker-content .emptycontent{color:var(--color-text-maxcontrast);text-align:center;margin-top:80px;width:100%;display:none}#oc-dialog-filepicker-content .filelist{background-color:var(--color-main-background);width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist{min-width:initial;margin-bottom:50px}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr{border-bottom:1px solid var(--color-border);background-color:var(--color-main-background)}#oc-dialog-filepicker-content #picker-filestable.filelist thead tr th{width:80%;border:none}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}#oc-dialog-filepicker-content #picker-filestable.filelist th .columntitle.name{padding-left:5px;margin-left:50px}#oc-dialog-filepicker-content #picker-filestable.filelist th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}#oc-dialog-filepicker-content #picker-filestable.filelist .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:hidden}#oc-dialog-filepicker-content #picker-filestable.filelist th:hover .sort-indicator.hidden,#oc-dialog-filepicker-content #picker-filestable.filelist th:focus .sort-indicator.hidden{visibility:visible}#oc-dialog-filepicker-content #picker-filestable.filelist td{padding:14px;border-bottom:1px solid var(--color-border)}#oc-dialog-filepicker-content #picker-filestable.filelist tr:last-child td{border-bottom:none}#oc-dialog-filepicker-content #picker-filestable.filelist .filename{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background-size:32px;background-repeat:no-repeat;padding-left:51px;background-position:7px 7px;cursor:pointer;max-width:0}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts{display:flex}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__first{overflow:hidden;white-space:pre;text-overflow:ellipsis}#oc-dialog-filepicker-content #picker-filestable.filelist .filename .filename-parts__last{white-space:pre}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize,#oc-dialog-filepicker-content #picker-filestable.filelist .date{width:80px}#oc-dialog-filepicker-content #picker-filestable.filelist .filesize{text-align:right}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid{display:flex;flex-direction:column}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody{display:grid;grid-template-columns:repeat(auto-fill, 120px);justify-content:space-around;row-gap:15px;margin:15px 0}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr{display:block;position:relative;border-radius:var(--border-radius);padding:10px;display:flex;flex-direction:column;width:100px}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td{border:none;padding:0;text-align:center;border-radius:var(--border-radius)}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename{padding:100px 0 0 0;background-position:center top;background-size:contain;line-height:30px;max-width:none}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filename .filename-parts{justify-content:center}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.filesize{line-height:10px;width:100%}#oc-dialog-filepicker-content #picker-filestable.filelist.view-grid tbody tr td.date{align-self:center;overflow:hidden;text-overflow:ellipsis;min-width:110px}#oc-dialog-filepicker-content .filepicker_element_selected{background-color:var(--color-background-darker)}.ui-dialog{position:fixed !important}span.ui-icon{float:left;margin:3px 7px 30px 0}.extra-data{padding-right:5px !important}#tagsdialog .content{width:100%;height:280px}#tagsdialog .scrollarea{overflow:auto;border:1px solid var(--color-background-darker);width:100%;height:240px}#tagsdialog .bottombuttons{width:100%;height:30px}#tagsdialog .bottombuttons *{float:left}#tagsdialog .taglist li{background:var(--color-background-dark);padding:.3em .8em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:background-color 500ms;transition:background-color 500ms}#tagsdialog .taglist li:hover,#tagsdialog .taglist li:active{background:var(--color-background-darker)}#tagsdialog .addinput{width:90%;clear:both}.breadcrumb{display:inline-flex;height:50px}li.crumb{display:inline-flex;background-image:url("../img/breadcrumb.svg?v=1");background-repeat:no-repeat;background-position:right center;height:44px;background-size:auto 24px;flex:0 0 auto;order:1;padding-right:7px}li.crumb.crumbmenu{order:2;position:relative}li.crumb.crumbmenu a{opacity:.5}li.crumb.crumbmenu.canDropChildren .popovermenu,li.crumb.crumbmenu.canDrop .popovermenu{display:block}li.crumb.crumbmenu .popovermenu{top:100%;margin-right:3px}li.crumb.crumbmenu .popovermenu ul{max-height:345px;overflow-y:auto;overflow-x:hidden;padding-right:5px}li.crumb.crumbmenu .popovermenu ul li.canDrop span:first-child{background-image:url("../img/filetypes/folder-drag-accept.svg?v=1") !important}li.crumb.crumbmenu .popovermenu .in-breadcrumb{display:none}li.crumb.hidden{display:none}li.crumb.hidden~.crumb{order:3}li.crumb>a,li.crumb>span{position:relative;padding:12px;opacity:.5;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex:0 0 auto;max-width:200px}li.crumb>a.icon-home,li.crumb>a.icon-delete,li.crumb>span.icon-home,li.crumb>span.icon-delete{text-indent:-9999px}li.crumb>a[class^=icon-]{padding:0;width:44px}li.crumb:last-child{font-weight:bold;margin-right:10px}li.crumb:last-child a~span{padding-left:0}li.crumb:hover,li.crumb:focus,li.crumb a:focus,li.crumb:active{opacity:1}li.crumb:hover>a,li.crumb:hover>span,li.crumb:focus>a,li.crumb:focus>span,li.crumb a:focus>a,li.crumb a:focus>span,li.crumb:active>a,li.crumb:active>span{opacity:.7}.appear{opacity:1;-webkit-transition:opacity 500ms ease 0s;-moz-transition:opacity 500ms ease 0s;-ms-transition:opacity 500ms ease 0s;-o-transition:opacity 500ms ease 0s;transition:opacity 500ms ease 0s}.appear.transparent{opacity:0}fieldset.warning legend,fieldset.update legend{top:18px;position:relative}fieldset.warning legend+p,fieldset.update legend+p{margin-top:12px}@-ms-viewport{width:device-width}.hiddenuploadfield{display:none;width:0;height:0;opacity:0}/*# sourceMappingURL=styles.css.map */ diff --git a/core/css/styles.css.map b/core/css/styles.css.map index 05659173fcf..70fffb1386a 100644 --- a/core/css/styles.css.map +++ b/core/css/styles.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["styles.scss"],"names":[],"mappings":"AAkBA,yQACC,SACA,UACA,SACA,oBACA,eACA,oBACA,wBACA,eACA,uDACA,qBAGD,6CACC,aAID,kGAEC,gDACA,aAGD,UACC,YAGD,6DACC,cAGD,KACC,gBAGD,MACC,yBACA,iBACA,mBAGD,cACC,gBACA,mBAGD,YACC,sBAGD,EACC,SACA,6BACA,qBACA,eACA,IACC,eAIF,WACC,aACA,0BAGD,MACC,eACA,QACC,eAIF,0BACC,eAGD,GACC,gBAGD,KACC,mBAEA,mCACA,uCACA,6BACA,6BAGD,mBACC,kBAGD,qBACC,kBACA,sBACA,qBACA,2BACA,2DACA,uBAGD,iBACC,qBACA,aACA,gCAGD,eACC,YACA,aAGD,cACC,eACA,MACA,SACA,OACA,YACA,WACA,aACA,kBACA,gDACA,gCACA,iBACA,eACA,kBACC,cACA,kBACA,UACA,QACA,gBAED,gBACC,gCACA,sDACA,4CACC,6CAOH,oBACC,WACA,YAGD,2BACC,+BAGD,gCACC,+BAGD,0BACC,kCACA,yCACA,+BACA,4BAMD,YACC,8CACA,gCAMD,kBACC,sBAKD,4BAEC,oCACA,kBACA,gBACA,WACA,sDACC,gBAED,sEACC,gBAED,kCACC,mBAED,oHAEC,qBACA,YACA,WACA,mBACA,gcAEC,WAOH,sBACC,WASD,oCACC,kBACA,yBACA,sBACA,qBACA,iBAKD,kBACC,kBACA,UACA,SACA,YAGD,8BACC,WACA,oBACA,wBACA,wBAGD,2EACC,WAED,oGACC,0CACA,UACA,qBAGD,mDACC,6BACA,YACA,WACA,yCACA,4BACA,2BACA,WAOA,qEACC,UAED,qEACC,UAIF,wEACC,aAGD,2CACC,mBAGD,yBACC,kBACA,qBACA,iBAED,qBACC,cACA,QACA,iBACA,kBACA,aAKD,4CACC,eACA,YACA,mCACA,6BACA,qDAIA,2BACC,4BAKD,wBACC,sBACA,4BACA,+BACC,2CACA,qBACA,kBAGF,0BACC,qBACA,gBAIF,YACC,YACA,8BACA,oBACC,sBAIF,eACC,2CAUD,mBACC,kBACA,cACA,2BACC,kBACA,cAIF,UACC,gBAGD,8CACC,UAIA,oGAGC,WAIF,mBACC,WACA,kBACA,QAEA,kDACC,UAIF,WACC,WACA,YAGD,eACC,WAIA,8CACC,UAKD,kDACC,UAKD,0CACC,UAKD,8CACC,8CAIF,KACC,mFAGD,OACC,gBACA,YACA,eACA,qBACA,UACC,qBAIF,2FACC,gBACA,uBAGD,2BACC,yDAGD,2BACC,6DAID,yBACC,gBACA,gBACA,WACA,mCACA,YACA,wBAEA,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAED,oDACC,WAEA,8EACC,yEAED,8EACC,wEAGF,oEACC,UAID,oDACC,mBACA,gCACA,WACA,WACA,YAED,0DACC,yBAGA,+FACC,gDAGD,wOAGC,sCACA,gCACA,iBAGD,yNAEC,gCACA,WAMJ,wCACC,gCACA,wCAKD,yBACC,2BACA,sBACA,mCACA,wBAEA,4CACC,uBAGD,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAIF,qFACC,iBAGA,iDACC,mBACA,gCACA,WACA,yDACC,UACA,WACA,iBAGF,uDACC,yBAGA,0TAIC,sCACA,gCACA,iBAGD,4FACC,gCAGD,qEACC,2CASH,oGACC,aACA,iBACA,8BACA,0GACC,cACA,SACA,YACA,YACA,WACA,aACA,mBACA,uBACA,8GACC,kBACA,kBACA,mBACA,6BACA,cACA,iBACA,WACA,YACA,YACA,eAOJ,8BACC,kBACA,aACA,sBAEA,uCACC,eACA,sBACA,oBACA,aAEA,yDACC,cACA,uCACA,4BACA,gCAGA,6DACC,eAED,uDACC,iBAED,oEACC,YACA,YAKH,mDACC,kBACA,+BACA,YACA,SACA,aACA,WACA,QACA,MAEA,4KAGC,0CACA,UAIF,iDACC,eACA,YACA,sBACA,oBACA,WACA,gBACA,eACA,8CACA,0CACA,wCACA,kBACA,UACA,QACA,QAEA,gEACC,sCACA,0BACA,WACA,YACA,WACA,WAGD,mDACC,WACA,YACA,gBAGD,uDACC,SACA,gBACA,4DACC,aACA,YAMH,kDACC,sBACA,qBACA,gBACA,OAGA,WACA,kBAED,4CACC,oCACA,kBACA,gBACA,WACA,aAED,wCACC,8CACA,WAED,0DAEC,kBACA,mBAEC,mEACC,4CACA,8CACA,sEACC,UACA,YAIH,0EACC,cACA,aACA,YACA,sBACA,2BACA,sBAED,+EACC,iBACA,iBAGD,6EACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,qQAGC,kBAED,oLAEC,mBAGD,6DACC,aACA,4CAED,2EACC,mBAED,oEACC,gBACA,mBACA,uBACA,qBACA,4BACA,kBACA,4BACA,eAEA,YACA,oFACC,aACA,2FACC,gBACA,gBACA,uBAED,0FACC,gBAIH,oIACC,WAED,oEACC,iBAED,oEAIC,aACA,sBAEA,0EACC,aACA,+CACA,6BACA,aACA,cAEA,6EACC,cACA,kBACA,mCACA,QAhBS,KAiBT,aACA,sBACA,YAGA,gFACC,YACA,UACA,kBACA,mCAEA,yFACC,oBACA,+BACA,wBACA,YA/BU,KAgCV,eACA,yGACC,uBAGF,yFACC,iBACA,WAED,qFACC,kBACA,gBACA,uBACA,gBAON,2DACC,gDAIF,WACC,0BAGD,aACC,WACA,sBAKD,YACC,6BAMA,qBACC,WACA,aAED,wBACC,cACA,gDACA,WACA,aAED,2BACC,WACA,YACA,6BACC,WAGF,wBACC,wCACA,kBACA,mBACA,gBACA,uBACA,0CACA,kCACA,6DACC,0CAGF,sBACC,UACA,WAKF,YACC,oBACA,YAED,SACC,oBACA,kDACA,4BACA,iCACA,YACA,0BACA,cACA,QACA,kBACA,mBACC,QACA,kBACA,qBACC,WAIA,wFACC,cAIF,gCACC,SACA,iBACA,mCACC,iBACA,gBACA,kBACA,kBACA,+DACC,+EAGF,+CACC,aAIH,gBACC,aACA,uBACC,QAGF,yBAEC,kBACA,aACA,WACA,uBACA,mBACA,gBACA,cAEA,gBAEA,8FAGC,oBAGF,yBACC,UACA,WAID,oBACC,iBACA,kBAEA,2BACC,eAGF,+DACC,UAEA,0JAEC,WAOH,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAOD,+CACC,SACA,kBAED,mDACC,gBAKF,cACC,mBAMD,mBACC,aACA,QACA,SACA","file":"styles.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["styles.scss"],"names":[],"mappings":"AAkBA,yQACC,SACA,UACA,SACA,oBACA,eACA,oBACA,wBACA,eACA,uDACA,qBAGD,6CACC,aAID,kGAEC,wDACA,aAGD,UACC,YAGD,6DACC,cAGD,KACC,gBAGD,MACC,yBACA,iBACA,mBAGD,cACC,gBACA,mBAGD,YACC,sBAGD,EACC,SACA,6BACA,qBACA,eACA,IACC,eAIF,WACC,aACA,0BAGD,MACC,eACA,QACC,eAIF,0BACC,eAGD,GACC,gBAGD,KACC,mBAEA,mCACA,uCACA,6BACA,6BAGD,mBACC,kBAGD,qBACC,kBACA,sBACA,qBACA,2BACA,2DACA,uBAGD,iBACC,qBACA,aACA,gCAGD,eACC,YACA,aAGD,cACC,eACA,MACA,SACA,OACA,YACA,WACA,aACA,kBACA,gDACA,wCACA,iBACA,eACA,kBACC,cACA,kBACA,UACA,QACA,gBAED,gBACC,wCACA,sDACA,4CACC,6CAOH,oBACC,WACA,YAGD,2BACC,+BAGD,gCACC,+BAGD,0BACC,kCACA,yCACA,+BACA,4BAMD,YACC,8CACA,wCAMD,kBACC,sBAKD,4BAEC,oCACA,kBACA,gBACA,WACA,sDACC,gBAED,sEACC,gBAED,kCACC,mBAED,oHAEC,qBACA,YACA,WACA,mBACA,gcAEC,WAOH,sBACC,WASD,oCACC,kBACA,yBACA,sBACA,qBACA,iBAKD,kBACC,kBACA,UACA,SACA,YAGD,8BACC,WACA,oBACA,wBACA,wBAGD,2EACC,WAED,oGACC,kDACA,UACA,qBAGD,mDACC,6BACA,YACA,WACA,yCACA,4BACA,2BACA,WAOA,qEACC,UAED,qEACC,UAIF,wEACC,aAGD,2CACC,mBAGD,yBACC,kBACA,qBACA,iBAED,qBACC,cACA,QACA,iBACA,kBACA,aAKD,4CACC,eACA,YACA,mCACA,6BACA,qDAIA,2BACC,4BAKD,wBACC,sBACA,4BACA,+BACC,2CACA,qBACA,kBAGF,0BACC,qBACA,gBAIF,YACC,YACA,8BACA,oBACC,sBAIF,eACC,2CAUD,mBACC,kBACA,cACA,2BACC,kBACA,cAIF,UACC,gBAGD,8CACC,UAIA,oGAGC,WAIF,mBACC,WACA,kBACA,QAEA,kDACC,UAIF,WACC,WACA,YAGD,eACC,WAIA,8CACC,UAKD,kDACC,UAKD,0CACC,UAKD,8CACC,8CAIF,KACC,mFAGD,OACC,gBACA,YACA,eACA,qBACA,UACC,qBAIF,2FACC,gBACA,uBAGD,2BACC,yDAGD,2BACC,6DAID,yBACC,gBACA,gBACA,WACA,mCACA,YACA,wBAEA,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAED,oDACC,WAEA,8EACC,yEAED,8EACC,wEAGF,oEACC,UAID,oDACC,mBACA,gCACA,WACA,WACA,YAED,0DACC,yBAGA,+FACC,gDAGD,wOAGC,8CACA,wCACA,iBAGD,yNAEC,gCACA,WAMJ,wCACC,gCACA,wCAKD,yBACC,2BACA,sBACA,mCACA,wBAEA,4CACC,uBAGD,sKAGC,+BACA,mBAED,2CACC,YACA,eACA,YACA,8CACA,6BAEA,gEACC,cACA,mBAIF,qFACC,iBAGA,iDACC,mBACA,gCACA,WACA,yDACC,UACA,WACA,iBAGF,uDACC,yBAGA,0TAIC,8CACA,wCACA,iBAGD,4FACC,gCAGD,qEACC,2CASH,oGACC,aACA,iBACA,8BACA,0GACC,cACA,SACA,YACA,YACA,WACA,aACA,mBACA,uBACA,8GACC,kBACA,kBACA,mBACA,6BACA,cACA,iBACA,WACA,YACA,YACA,eAOJ,8BACC,kBACA,aACA,sBAEA,uCACC,eACA,sBACA,oBACA,aAEA,yDACC,cACA,uCACA,4BACA,gCAGA,6DACC,eAED,uDACC,iBAED,oEACC,YACA,YAKH,mDACC,kBACA,+BACA,YACA,SACA,aACA,WACA,QACA,MAEA,4KAGC,kDACA,UAIF,iDACC,eACA,YACA,sBACA,oBACA,WACA,gBACA,eACA,8CACA,0CACA,wCACA,kBACA,UACA,QACA,QAEA,gEACC,sCACA,0BACA,WACA,YACA,WACA,WAGD,mDACC,WACA,YACA,gBAGD,uDACC,SACA,gBACA,4DACC,aACA,YAMH,kDACC,sBACA,qBACA,gBACA,OAGA,WACA,kBAED,4CACC,oCACA,kBACA,gBACA,WACA,aAED,wCACC,8CACA,WAED,0DAEC,kBACA,mBAEC,mEACC,4CACA,8CACA,sEACC,UACA,YAIH,0EACC,cACA,aACA,YACA,sBACA,2BACA,sBAED,+EACC,iBACA,iBAGD,6EACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,qQAGC,kBAED,oLAEC,mBAGD,6DACC,aACA,4CAED,2EACC,mBAED,oEACC,gBACA,mBACA,uBACA,qBACA,4BACA,kBACA,4BACA,eAEA,YACA,oFACC,aACA,2FACC,gBACA,gBACA,uBAED,0FACC,gBAIH,oIACC,WAED,oEACC,iBAED,oEAIC,aACA,sBAEA,0EACC,aACA,+CACA,6BACA,aACA,cAEA,6EACC,cACA,kBACA,mCACA,QAhBS,KAiBT,aACA,sBACA,YAGA,gFACC,YACA,UACA,kBACA,mCAEA,yFACC,oBACA,+BACA,wBACA,YA/BU,KAgCV,eACA,yGACC,uBAGF,yFACC,iBACA,WAED,qFACC,kBACA,gBACA,uBACA,gBAON,2DACC,gDAIF,WACC,0BAGD,aACC,WACA,sBAKD,YACC,6BAMA,qBACC,WACA,aAED,wBACC,cACA,gDACA,WACA,aAED,2BACC,WACA,YACA,6BACC,WAGF,wBACC,wCACA,kBACA,mBACA,gBACA,uBACA,0CACA,kCACA,6DACC,0CAGF,sBACC,UACA,WAKF,YACC,oBACA,YAED,SACC,oBACA,kDACA,4BACA,iCACA,YACA,0BACA,cACA,QACA,kBACA,mBACC,QACA,kBACA,qBACC,WAIA,wFACC,cAIF,gCACC,SACA,iBACA,mCACC,iBACA,gBACA,kBACA,kBACA,+DACC,+EAGF,+CACC,aAIH,gBACC,aACA,uBACC,QAGF,yBAEC,kBACA,aACA,WACA,uBACA,mBACA,gBACA,cAEA,gBAEA,8FAGC,oBAGF,yBACC,UACA,WAID,oBACC,iBACA,kBAEA,2BACC,eAGF,+DACC,UAEA,0JAEC,WAOH,QACC,UACA,yCACA,sCACA,qCACA,oCACA,iCACA,oBACC,UAOD,+CACC,SACA,kBAED,mDACC,gBAKF,cACC,mBAMD,mBACC,aACA,QACA,SACA","file":"styles.css"}
\ No newline at end of file diff --git a/core/css/styles.scss b/core/css/styles.scss index 3776c9b7df1..17ed035d2b2 100644 --- a/core/css/styles.scss +++ b/core/css/styles.scss @@ -36,7 +36,7 @@ html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pr /** Let vue apps handle the focus themselves */ .content:not(#content-vue) :focus-visible, .app-navigation:not(#app-navigation-vue) :focus-visible { - box-shadow: inset 0 0 0 2px var(--color-primary); + box-shadow: inset 0 0 0 2px var(--color-primary-element); outline: none; } @@ -140,7 +140,7 @@ body { z-index: 9000; text-align: center; background-color: var(--color-background-darker); - color: var(--color-primary-text); + color: var(--color-primary-element-text); line-height: 125%; font-size: 24px; div { @@ -151,7 +151,7 @@ body { margin: 0px auto; } a { - color: var(--color-primary-text); + color: var(--color-primary-element-text); border-bottom: 2px dotted var(--color-main-background); &:hover, &:focus { color: var(--color-primary-element-text-dark); @@ -186,7 +186,7 @@ body { ::selection { background-color: var(--color-primary-element); - color: var(--color-primary-text); + color: var(--color-primary-element-text); } @@ -266,7 +266,7 @@ body { opacity: .8; } #show:focus-visible + label, #dbpassword-toggle:focus-visible + label, #personal-show:focus-visible + label { - box-shadow: var(--color-primary) 0 0 0 2px; + box-shadow: var(--color-primary-element) 0 0 0 2px; opacity: 1; border-radius: 9999px; } @@ -519,8 +519,8 @@ code { &.ui-datepicker-current-day a.ui-state-active, .ui-state-hover, .ui-state-focus { - background-color: var(--color-primary); - color: var(--color-primary-text); + background-color: var(--color-primary-element); + color: var(--color-primary-element-text); font-weight: bold; } @@ -591,8 +591,8 @@ code { &.ui-timepicker-minute-cell a.ui-state-active, .ui-state-hover, .ui-state-focus { - background-color: var(--color-primary); - color: var(--color-primary-text); + background-color: var(--color-primary-element); + color: var(--color-primary-element-text); font-weight: bold; } @@ -684,7 +684,7 @@ code { &:hover, &:active, &:focus { - box-shadow: 0 0 0 2px var(--color-primary); + box-shadow: 0 0 0 2px var(--color-primary-element); opacity: 1; } } diff --git a/core/css/toast.css b/core/css/toast.css index 6c51a143021..9b9a9daf5b4 100644 --- a/core/css/toast.css +++ b/core/css/toast.css @@ -1 +1 @@ -.toastify.toast{min-width:200px;background:none;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 6px 0 var(--color-box-shadow);padding:12px;padding-right:34px;margin-top:45px;position:fixed;z-index:9000;border-radius:var(--border-radius)}.toastify.toast .toast-close{position:absolute;top:0;right:0;width:38px;opacity:.4;padding:12px;background-image:var(--icon-close-dark);background-position:center;background-repeat:no-repeat;text-indent:200%;white-space:nowrap;overflow:hidden}.toastify.toast .toast-close:hover,.toastify.toast .toast-close:focus,.toastify.toast .toast-close:active{cursor:pointer;opacity:1}.toastify.toastify-top{right:10px}.toast-error{border-left:3px solid var(--color-error)}.toast-info{border-left:3px solid var(--color-primary)}.toast-warning{border-left:3px solid var(--color-warning)}.toast-success{border-left:3px solid var(--color-success)}/*# sourceMappingURL=toast.css.map */ +.toastify.toast{min-width:200px;background:none;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 6px 0 var(--color-box-shadow);padding:12px;padding-right:34px;margin-top:45px;position:fixed;z-index:9000;border-radius:var(--border-radius)}.toastify.toast .toast-close{position:absolute;top:0;right:0;width:38px;opacity:.4;padding:12px;background-image:var(--icon-close-dark);background-position:center;background-repeat:no-repeat;text-indent:200%;white-space:nowrap;overflow:hidden}.toastify.toast .toast-close:hover,.toastify.toast .toast-close:focus,.toastify.toast .toast-close:active{cursor:pointer;opacity:1}.toastify.toastify-top{right:10px}.toast-error{border-left:3px solid var(--color-error)}.toast-info{border-left:3px solid var(--color-primary-element)}.toast-warning{border-left:3px solid var(--color-warning)}.toast-success{border-left:3px solid var(--color-success)}/*# sourceMappingURL=toast.css.map */ diff --git a/core/css/toast.css.map b/core/css/toast.css.map index 5a653b8317c..e893d11c9ba 100644 --- a/core/css/toast.css.map +++ b/core/css/toast.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["toast.scss","functions.scss"],"names":[],"mappings":"AAGA,gBACC,gBACA,gBACA,8CACA,6BACA,6CACA,aACA,mBACA,gBACA,eACA,aACA,mCAEA,6BACC,kBACA,MACA,QACA,WACA,WACA,aC2CD,wCDzCC,2BACA,4BACA,iBACA,mBACA,gBAEA,0GACC,eACA,UAIH,uBACC,WAGD,aACC,yCAED,YACC,2CAED,eACC,2CAED,eACC","file":"toast.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["toast.scss","functions.scss"],"names":[],"mappings":"AAGA,gBACC,gBACA,gBACA,8CACA,6BACA,6CACA,aACA,mBACA,gBACA,eACA,aACA,mCAEA,6BACC,kBACA,MACA,QACA,WACA,WACA,aC2CD,wCDzCC,2BACA,4BACA,iBACA,mBACA,gBAEA,0GACC,eACA,UAIH,uBACC,WAGD,aACC,yCAED,YACC,mDAED,eACC,2CAED,eACC","file":"toast.css"}
\ No newline at end of file diff --git a/core/css/toast.scss b/core/css/toast.scss index 88d9cbc6785..83b2d6b6a4e 100644 --- a/core/css/toast.scss +++ b/core/css/toast.scss @@ -42,7 +42,7 @@ border-left: 3px solid var(--color-error); } .toast-info { - border-left: 3px solid var(--color-primary); + border-left: 3px solid var(--color-primary-element); } .toast-warning { border-left: 3px solid var(--color-warning); diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 50bcc7d29f0..c14f78704b1 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -119,6 +119,7 @@ OC.L10N.register( "This instance uses an S3 based object store as primary storage. The uploaded files are stored temporarily on the server and thus it is recommended to have 50 GB of free space available in the temp directory of PHP. Check the logs for full details about the path and the available space. To improve this please change the temporary directory in the php.ini or make more space available in that path." : "Bu kopya, birincil depolama olarak S3 tabanlı bir nesne deposu kullanıyor. Yüklenen dosyalar geçici olarak sunucuya kaydedildiğinden PHP geçici klasöründe 50 GB boş alan bulunması önerilir. Klasör yolu ve kullanılabilecek alan hakkındaki ayrıntılı bilgi almak için günlüklere bakabilirsiniz. Bu durumu düzeltmek için php.ini içindeki geçici klasör yolunu değiştirin ya da kullanılan geçici klasörde daha fazla yer açın.", "The temporary directory of this instance points to an either non-existing or non-writable directory." : "Bu kopyanın geçici klasörü, var olmayan veya yazılabilir olmayan bir klasörü gösteriyor.", "You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This most likely means that you are behind a reverse proxy and the overwrite config variables are not set correctly. Please read {linkstart}the documentation page about this ↗{linkend}." : "Kopyanıza güvenli bir bağlantı üzerinden erişiyorsunuz. Bununla birlikte kopyanız güvenli olmayan adresler üretiyor. Bu durum genellikle bir ters vekil sunucunun arkasında bulunmanız nedeniyle düzgün ayarlanmamış yapılandırma değişkenlerinin değiştirilmesinden kaynaklanır. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.", + "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Bu kopya hata ayıklama kipinde çalışıyor. Bu seçeneği yalnızca yerel geliştirme ortamında etkinleştirin, üretim ortamlarında etkinleştirmeyin.", "Error occurred while checking server setup" : "Sunucu ayarları denetlenirken sorun çıktı", "For more details see the {linkstart}documentation ↗{linkend}." : "Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.", "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Site sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü site sunucu kök klasörü dışına taşımanız önemle önerilir.", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 7f0d58a010a..56d15eabe1f 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -117,6 +117,7 @@ "This instance uses an S3 based object store as primary storage. The uploaded files are stored temporarily on the server and thus it is recommended to have 50 GB of free space available in the temp directory of PHP. Check the logs for full details about the path and the available space. To improve this please change the temporary directory in the php.ini or make more space available in that path." : "Bu kopya, birincil depolama olarak S3 tabanlı bir nesne deposu kullanıyor. Yüklenen dosyalar geçici olarak sunucuya kaydedildiğinden PHP geçici klasöründe 50 GB boş alan bulunması önerilir. Klasör yolu ve kullanılabilecek alan hakkındaki ayrıntılı bilgi almak için günlüklere bakabilirsiniz. Bu durumu düzeltmek için php.ini içindeki geçici klasör yolunu değiştirin ya da kullanılan geçici klasörde daha fazla yer açın.", "The temporary directory of this instance points to an either non-existing or non-writable directory." : "Bu kopyanın geçici klasörü, var olmayan veya yazılabilir olmayan bir klasörü gösteriyor.", "You are accessing your instance over a secure connection, however your instance is generating insecure URLs. This most likely means that you are behind a reverse proxy and the overwrite config variables are not set correctly. Please read {linkstart}the documentation page about this ↗{linkend}." : "Kopyanıza güvenli bir bağlantı üzerinden erişiyorsunuz. Bununla birlikte kopyanız güvenli olmayan adresler üretiyor. Bu durum genellikle bir ters vekil sunucunun arkasında bulunmanız nedeniyle düzgün ayarlanmamış yapılandırma değişkenlerinin değiştirilmesinden kaynaklanır. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.", + "This instance is running in debug mode. Only enable this for local development and not in production environments." : "Bu kopya hata ayıklama kipinde çalışıyor. Bu seçeneği yalnızca yerel geliştirme ortamında etkinleştirin, üretim ortamlarında etkinleştirmeyin.", "Error occurred while checking server setup" : "Sunucu ayarları denetlenirken sorun çıktı", "For more details see the {linkstart}documentation ↗{linkend}." : "Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.", "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Site sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü site sunucu kök klasörü dışına taşımanız önemle önerilir.", diff --git a/core/src/components/AppMenu.vue b/core/src/components/AppMenu.vue index 012757e155a..888a106ed05 100644 --- a/core/src/components/AppMenu.vue +++ b/core/src/components/AppMenu.vue @@ -161,7 +161,7 @@ $header-icon-size: 20px; width: 12px; height: 5px; border-radius: 3px; - background-color: var(--color-primary-text); + background-color: var(--color-primary-element-text); left: 50%; bottom: 6px; display: block; @@ -178,7 +178,7 @@ $header-icon-size: 20px; width: calc(100% - 4px); height: calc(100% - 4px); margin: 2px; - color: var(--color-primary-text); + color: var(--color-primary-element-text); position: relative; } @@ -194,7 +194,7 @@ $header-icon-size: 20px; opacity: 0; position: absolute; font-size: 12px; - color: var(--color-primary-text); + color: var(--color-primary-element-text); text-align: center; bottom: -5px; left: 50%; @@ -253,7 +253,7 @@ $header-icon-size: 20px; /* Remove all background and align text color if not expanded */ &:not([aria-expanded="true"]) { - color: var(--color-primary-text); + color: var(--color-primary-element-text); &:hover { opacity: 1; @@ -290,7 +290,7 @@ $header-icon-size: 20px; content: ""; width: 8px; height: 8px; - background-color: var(--color-primary-text); + background-color: var(--color-primary-element-text); border-radius: 50%; position: absolute; display: block; diff --git a/core/src/components/Profile/PrimaryActionButton.vue b/core/src/components/Profile/PrimaryActionButton.vue index 7a1f031b60c..dcd28e0c3a1 100644 --- a/core/src/components/Profile/PrimaryActionButton.vue +++ b/core/src/components/Profile/PrimaryActionButton.vue @@ -61,7 +61,7 @@ export default { computed: { colorPrimaryText() { // For some reason the returned string has prepended whitespace - return getComputedStyle(document.body).getPropertyValue('--color-primary-text').trim() + return getComputedStyle(document.body).getPropertyValue('--color-primary-element-text').trim() }, }, } @@ -77,7 +77,7 @@ export default { line-height: 44px; text-align: center; border-radius: var(--border-radius-pill); - color: var(--color-primary-text); + color: var(--color-primary-element-text); background-color: var(--color-primary-element); overflow: hidden; white-space: nowrap; diff --git a/core/src/jquery/css/jquery-ui-fixes.scss b/core/src/jquery/css/jquery-ui-fixes.scss index cb52ecdb2d7..4c2241d8d5d 100644 --- a/core/src/jquery/css/jquery-ui-fixes.scss +++ b/core/src/jquery/css/jquery-ui-fixes.scss @@ -52,7 +52,7 @@ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { - border: 1px solid var(--color-primary); + border: 1px solid var(--color-primary-element); background: var(--color-main-background) none; font-weight: bold; color: var(--color-main-text); @@ -223,9 +223,9 @@ } .ui-button.primary { - background-color: var(--color-primary); - color: var(--color-primary-text); - border: 1px solid var(--color-primary-text); + background-color: var(--color-primary-element); + color: var(--color-primary-element-text); + border: 1px solid var(--color-primary-element-text); } // fix ui-buttons on hover diff --git a/core/src/views/Profile.vue b/core/src/views/Profile.vue index eda6e428463..84859f4a971 100644 --- a/core/src/views/Profile.vue +++ b/core/src/views/Profile.vue @@ -361,9 +361,9 @@ $content-max-width: 640px; border: none; margin-left: 18px; margin-top: 2px; - color: var(--color-primary-element); - background-color: var(--color-primary-text); - box-shadow: 0 0 0 2px var(--color-primary-text); + color: var(--color-primary-element-text); + background-color: var(--color-primary-element); + box-shadow: 0 0 0 2px var(--color-primary-element); border-radius: var(--border-radius-pill); padding: 0 18px; font-size: var(--default-font-size); @@ -374,7 +374,7 @@ $content-max-width: 640px; &:hover, &:focus, &:active { - color: var(--color-primary-element); + color: var(--color-primary-element-light-text); background-color: var(--color-primary-element-light); } diff --git a/core/src/views/UserMenu.vue b/core/src/views/UserMenu.vue index 5112b8a4eae..8602b2faa1d 100644 --- a/core/src/views/UserMenu.vue +++ b/core/src/views/UserMenu.vue @@ -85,7 +85,7 @@ export default { opacity: 1 !important; &:focus-visible { .user-menu__avatar { - border: 2px solid var(--color-primary-text); + border: 2px solid var(--color-primary-element); } } } @@ -104,7 +104,7 @@ export default { &:active, &:focus, &:hover { - border: 2px solid var(--color-primary-text); + border: 2px solid var(--color-primary-element-text); } } @@ -138,13 +138,13 @@ export default { &:focus-visible { background-color: var(--color-background-hover) !important; - box-shadow: inset 0 0 0 2px var(--color-primary) !important; + box-shadow: inset 0 0 0 2px var(--color-primary-element) !important; outline: none !important; } &:active, &.active { - background-color: var(--color-primary-light); + background-color: var(--color-primary-element-light); } span { diff --git a/dist/core-main.js b/dist/core-main.js index 91e12c949a4..928db6f8fc3 100644 --- a/dist/core-main.js +++ b/dist/core-main.js @@ -1,3 +1,3 @@ /*! For license information please see core-main.js.LICENSE.txt */ -(()=>{var e,o={36041:(e,o,i)=>{"use strict";var a={};i.r(a),i.d(a,{deleteKey:()=>E,getApps:()=>w,getKeys:()=>y,getValue:()=>x,setValue:()=>k});var r={};i.r(r),i.d(r,{formatLinksPlain:()=>We,formatLinksRich:()=>qe,plainToRich:()=>Ke,richToPlain:()=>Ye});var s={};i.r(s),i.d(s,{dismiss:()=>Ve,query:()=>Je});var l=i(19755),c=i.n(l),u=(i(28594),i(35666),i(35202),i(78595)),d=i(79753),A=i(25108);const p={},h=[];var f=i(18181),m=i(64024),g=i(25108);const v={updatableNotification:null,getDefaultNotificationFunction:null,setDefault(t){this.getDefaultNotificationFunction=t},hide(t,e){f.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){c()(this)[0].toastify?c()(this)[0].toastify.hideToast():g.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):g.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:m.Rl;const n=(0,m.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},show(t,e){(e=e||{}).timeout=e.timeout?e.timeout:m.Rl;const n=(0,m.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,c()(n.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,m.PV)(t,{timeout:m.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,c()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||m.TN;const n=(0,m.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},isHidden:()=>!c()("#content").find(".toastify").length},C=f.default.throttle((()=>{v.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1});function b(t,e,n){"post"!==t&&"delete"!==t||!St.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},c().ajax({type:t.toUpperCase(),url:(0,d.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):St.PasswordConfirmation.requirePasswordConfirmation(_.bind(b,this,t,e,n))}function w(t){b("get","",t)}function y(t,e){b("get","/"+t,e)}function x(t,e,n,o){(o=o||{}).data={defaultValue:n},b("get","/"+t+"/"+e,o)}function k(t,e,n,o){(o=o||{}).data={value:n},b("post","/"+t+"/"+e,o)}function E(t,e,n){b("delete","/"+t+"/"+e,n)}const B=window.oc_appconfig||{},P={getValue:function(t,e,n,o){x(t,e,n,{success:o})},setValue:function(t,e,n){k(t,e,n)},getApps:function(t){w({success:t})},getKeys:function(t,e){y(t,{success:e})},deleteKey:function(t,e){E(t,e)}};var O=i(25108);const T=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var D=i(72316),I=i.n(D),j=i(76591),z=i(25108);const N={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function U(t,e){if(f.default.isArray(t))return f.default.map(t,(function(t){return U(t,e)}));var n={href:t.href};return f.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=S(n.href)),n}function S(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function M(t){return t>=200&&t<=299}function L(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],a=t[n];i||(z.warn('No matching DAV property for property "'+n),i=n),(f.default.isBoolean(a)||f.default.isNumber(a))&&(a=""+a),o[i]=a}return o}(n.changed,e.davProperties),o).then((function(t){M(t.status)?f.default.isFunction(e.success)&&e.success(n.toJSON()):f.default.isFunction(e.error)&&e.error(t)}))}const F=I().noConflict();Object.assign(F,{davCall:(t,e)=>{var n=new j.dav.Client({baseUrl:t.url,xmlNamespaces:f.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=f.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,f.default.values(e.davProperties)||[],e.depth,o).then((function(t){if(M(t.status)){if(f.default.isFunction(e.success)){var n=f.default.invert(e.davProperties),o=U(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else f.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?L(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){M(i.status)?L(t,e,n,o):f.default.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(M(t.status)){if(f.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=S(i)),void e.success(o)}if(207===t.status){var a=f.default.invert(e.davProperties);e.success(U(t.body,a))}else e.success(t.body)}}else f.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:(t=>(e,n,o)=>{var i={type:N[e]||e},a=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=f.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var r=n.davProperties;!r&&n.model&&(r=n.model.prototype.davProperties),r&&(f.default.isFunction(r)?i.davProperties=r.call(n):i.davProperties=r),i.davProperties=f.default.extend(i.davProperties||{},o.davProperties),f.default.isUndefined(o.depth)&&(o.depth=a?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(f.default.extend(i,o),n);return n.trigger("request",n,l,o),l})(F)});const R=F;var Q=i(65358);const G=window._oc_config||{};var H=i(25108);const K=D.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0);const e=this.get("fullName");this.get("avatar")&&e&&this.set("avatarLabel",t("core","Avatar of {fullName}",{fullName:e}))}}),Y=D.Collection.extend({model:K}),q=D.View.extend({_collection:void 0,_subViews:[],tagName:"ul",initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new W({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),W=D.View.extend({className:"contact",tagName:"li",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),Z=D.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:f.default.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(f.default.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(f.default.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(f.default.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new q({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:St.generateUrl("/apps/contacts"),canInstallApp:St.isUserAdmin(),contactsAppMgmtURL:St.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),J=function(t){this.initialize(t)};J.prototype={$el:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=c()(t.el),this._view=new Z({el:this.$el}),this._view.on("search",(function(t){this.loadContacts(t)}),this)},_getContacts:function(t){var e=St.generateUrl("/contactsmenu/contacts");return Promise.resolve(c().ajax(e,{method:"POST",data:{filter:t}}))},loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),f.default.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new Y(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),H.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(H.error.bind(this))}};const V=J,X=document.getElementsByTagName("head")[0].getAttribute("data-user"),$=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),tt=void 0!==X&&X;var et=i(25108);const nt={Search:class{constructor(){et.warn("OCA.Search is deprecated. Please use the unified search API instead")}}},ot=t=>"click"===t.type||"keydown"===t.type&&"Enter"===t.key;var it=i(25108);const at={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",at.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",at.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",at.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",at.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,a,r){return c().when(this._getMessageTemplate()).then((function(s){var l="oc-dialog-"+at.dialogsCounter+"-content",u="#"+l,d=s.octemplate({dialog_name:l,title:n,message:e,type:"notice"}),A=c()("<input/>");A.attr("type",r?"password":"text").attr("id",l+"-input").attr("placeholder",a);var p=c()("<label/>").attr("for",l+"-input").text(a+": ");d.append(p),d.append(A),void 0===i&&(i=!1),c()("body").append(d),void 0!==o&&(o=f.default.once(o));var h=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,A.val()),c()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,A.val()),c()(u).ocdialog("close")},defaultButton:!0}];c()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:h,close:function(){void 0!==o&&o(!1,A.val())}}),A.focus(),at.dialogsCounter++}))},filepicker:function(e,n,o,i,a,r,s,l){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===r&&(r=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),A=t("files","New folder");r!==this.FILEPICKER_TYPE_COPY&&r!==this.FILEPICKER_TYPE_MOVE&&r!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=nt.Sharing&&nt.Sharing.PublicApp&&nt.Sharing.PublicApp.fileList?nt.Sharing.PublicApp.fileList.filesClient:St.Files.getClient(),this.filelist=null,s=s||"",l=Object.assign({allowDirectoryChooser:!1},l),c().when(this._getFilePickerTemplate()).then((function(p){var h,f;u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:A,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",l.allowDirectoryChooser),"function"==typeof l.filter&&u.$filePicker.data("filter",l.filter),void 0===a&&(a=!1),void 0===o&&(o=!1),c()(null!==(h=null===(f=l)||void 0===f?void 0:f.target)&&void 0!==h?h:"body").prepend(u.$filePicker),u.$showGridView=c()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){ot(t)&&u._onGridviewChange()})),u._getGridSettings();var m=u.$filePicker.find(".actions.creatable .button-add");r!==u.FILEPICKER_TYPE_CHOOSE||l.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),m.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.click()}))})),m.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),St.registerMenu(m,u.$filePicker.find(".menu"),(function(){v.tooltip("hide"),v.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=v.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),v.selectRange(0,e)}));var g=u.$filePicker.find(".filenameform"),v=g.find("input[type='text']"),C=g.find("input[type='submit']");v.on("keydown",(function(t){ot(t)&&(t.stopImmediatePropagation(),t.preventDefault(),g.submit())})),C.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.submit()}));g.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=v.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(St.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){v.attr("title",t),v.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),v.tooltip("_fixTitle"),v.tooltip("show"),v.addClass("error")}return!1}()){var n=v.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n,r)})),St.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),v.val(A)}})),v.on("input",(function(t){v.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown",".crumb",u,(function(t){ot(t)&&u._handleTreeListSelect(t,r)})),u.$filelist.on("click keydown","tr",(function(t){ot(t)&&u._handlePickerClick(t,c()(this),r)})),u.$fileListHeader.on("click keydown","a",(function(t){if(ot(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=c()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e,r)}})),u._fillFilePicker(s,r)}));var b=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+c()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];r===at.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){b(at.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):r===at.FILEPICKER_TYPE_CUSTOM?l.buttons.forEach((function(t){w.push({text:t.text,click:function(){b(t.type)},defaultButton:t.defaultButton})})):(r!==at.FILEPICKER_TYPE_COPY&&r!==at.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){b(at.FILEPICKER_TYPE_COPY)},defaultButton:!1}),r!==at.FILEPICKER_TYPE_MOVE&&r!==at.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){b(at.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:a,buttons:w,style:{buttons:"aside"},close:function(){try{c()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var y=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?y.prop("disabled",!1):y.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,a,r,s){return c().when(this._getMessageTemplate()).then((function(l){var u="oc-dialog-"+at.dialogsCounter+"-content",d="#"+u,A=l.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===r&&(r=!1),c()("body").append(A);var p=[];switch(i){case at.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0}];break;case at.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){c()(d).ocdialog("close"),void 0!==a&&a()},defaultButton:!0};break;default:"object"==typeof i&&i.type===at.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}c()(d).ocdialog({closeOnEscape:!0,closeCallback:()=>{a&&a(!1)},modal:r,buttons:p}),at.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,a){var r=this,s=new(c().Deferred),l=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var a=t.getContext("2d").getImageData(0,0,e,n),r=t.getContext("2d").getImageData(0,0,o,i),s=a.data,l=r.data,c=e/o,u=n/i,d=Math.ceil(c/2),A=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var f=4*(h+p*o),m=0,g=0,v=0,C=0,b=0,w=0,y=0,x=(p+.5)*u,k=Math.floor(p*u);k<(p+1)*u;k++)for(var E=Math.abs(x-(k+.5))/A,B=(h+.5)*c,P=E*E,O=Math.floor(h*c);O<(h+1)*c;O++){var T=Math.abs(B-(O+.5))/d,D=Math.sqrt(P+T*T);D>=-1&&D<=1&&(m=2*D*D*D-3*D*D+1)>0&&(y+=m*s[3+(T=4*(O+k*e))],v+=m,s[T+3]<255&&(m=m*s[T+3]/250),C+=m*s[T],b+=m*s[T+1],w+=m*s[T+2],g+=m)}l[f]=C/g,l[f+1]=b/g,l[f+2]=w/g,l[f+3]=y/v}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(r,0,0)},u=function(n,o,i){var a=n.find(".template").clone().removeClass("template").addClass("conflict"),r=a.find(".original"),s=a.find(".replacement");a.data("data",e),a.find(".filename").text(o.name),r.find(".size").text(St.Util.humanFileSize(o.size)),r.find(".mtime").text(St.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(St.Util.humanFileSize(i.size)),s.find(".mtime").text(St.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},A=Files.generatePreviewUrl(d);A=A.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+A+"')"}),function(t){var e=new(c().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,a,r,s,c,u=(t=i,r=document.createElement("canvas"),s=t.width,c=t.height,s>c?(o=0,n=(s-c)/2):(o=(c-s)/2,n=0),a=Math.min(s,c),r.width=a,r.height=a,r.getContext("2d").drawImage(t,n,o,a,a,0,0,a,a),l(r,a,a,96,96),r.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=St.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(a),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&r.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&r.find(".size").css("font-weight","bold"),"readonly"===o.status&&(r.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),r.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",A="#"+d;if(this._fileexistsshown){var p=c()(A+" .conflicts");u(p,o,i);var h=c()(A+" .conflict").length,f=n("core","{count} file conflict","{count} file conflicts",h,{count:h});c()(A).parent().children(".oc-dialog-title").text(f),c()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,c().when(this._getFileExistsTemplate()).then((function(n){var l=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:l,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(c()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var f=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==a.onCancel&&a.onCancel(e),c()(A).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==a.onContinue&&a.onContinue(c()(A+" .conflict")),c()(A).ocdialog("close")}}];c()(A).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:f,closeButton:null,close:function(){r._fileexistsshown=!1;try{c()(this).ocdialog("destroy").remove()}catch(t){}}}),c()(A).css("height","auto");var m=p.closest(".oc-dialog").find("button.continue");function g(){var t=p.find(".conflicts .checkbox:checked").length;m.prop("disabled",0===t)}m.prop("disabled",!0),c()(A).find(".allnewfiles").on("click",(function(){c()(A).find('.conflict .replacement input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".allexistingfiles").on("click",(function(){c()(A).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=c()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),c()(A).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=c()(this);t.prop("checked",!t.prop("checked"))})),c()(A).on("click",".replacement,.allnewfiles",(function(){var e=c()(A).find('.conflict .replacement input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allnewfiles").prop("checked",!0),c()(A).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text("")),g()})),c()(A).on("click",".original,.allexistingfiles",(function(){var e=c()(A).find('.conflict .original input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allexistingfiles").prop("checked",!0),c()(A).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text("")),g()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){const e=this;c().get(St.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),c()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){const e=this.$showGridView.hasClass("icon-toggle-filelist");St.currentUser&&c().post(St.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=c().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;c().get(St.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=c()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=c().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;c().get(St.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=c()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=c().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;c().get(St.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=c()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:async function(e,n){var o=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var i=this.$filePicker.data("mimetype"),a=this.$filePicker.data("filter");"string"==typeof i&&(i=[i]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s");var r=async function(t){return o.filepicker.filesClient.getFolderContents(t).then(((t,e)=>e))};try{var s=await r(e)}catch(t){it.error("Requested path does not exists, falling back to root"),s=await r("/"),this.$filePicker.data("path","/"),this._changeButtonsText(n,"")}o.filelist=s,i&&i.length>0&&-1===i.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==i.indexOf(t.mimetype)}))),a&&(s=s.filter(a));const l=document.getElementById("showHiddenFiles");"1"!==(null==l?void 0:l.value)&&(s=s.filter((function(t){return!t.name.startsWith(".")})));var u={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:St.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}},d=u[o.filepicker.sortField]||u.name;s=s.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(St.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?d(t,e):-d(t,e)})),o._fillSlug(),0===s.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),c().each(s,(function(n,i){var a,r;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=St.MimeType.getIconUrl("dir-encrypted"):i.icon=St.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(a=St.Util.humanFileSize(parseInt(i.size,10),!0),r=Math.round(160-Math.pow(i.size/1048576,2))):(a=t("files","Pending"),r=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),l=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else l=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:e,filename:i.name,filename1:l,filename2:u,date:St.Util.relativeModifiedDate(i.mtime),size:a,sizeColor:r,icon:i.icon});if("file"===i.type){var A={file:e+"/"+i.name,x:100,y:100},p=new Image,h=St.generateUrl("/core/preview.png?")+c().param(A);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading")},_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty(),this.$dirTree.append("<nav></nav>"),this.$dirTree.append(e);var n=this.$filePicker.data("path"),o=c()('<li data-dir="{dir}" tabindex="0"><a class="{classList}">{name}</a></li>').addClass("crumb"),i=c()('<ul class="breadcrumb"></ul>');if(n){var a=n.split("/");c().each(a,(function(t,e){if(""===(e=a.pop()))return!1;i.prepend(o.octemplate({dir:a.join("/")+"/"+e,name:e}))}))}o.octemplate({dir:"",name:t("core","Home"),classList:"icon-home"},{escapeFunction:null}).addClass("crumb svg crumbhome").prependTo(i),this.$dirTree.find("> nav").prepend(i)},_handleTreeListSelect:function(t,e){var n=t.data,o=c()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o,e);var i=t.target.closest(".oc-dialog"),a=c()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?a.prop("disabled",!1):a.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname"),n),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),a=c()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:a.text(o);break;case this.FILEPICKER_TYPE_MOVE:a.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:a.eq(0).text(o),a.eq(1).text(i)}}},rt=at,st=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,u.j8),lt=st.getToken,ct=st.setToken,ut=function(t,e){var n,o,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)i+=n+"="+encodeURIComponent(e[n])+"&";if(i+="requesttoken="+encodeURIComponent(lt()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+ut.iframeCount;ut.fallBackSources[ut.iframeCount]=this,this.iframe=c()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),o="&",-1===t.indexOf("?")&&(o="?"),this.iframe.attr("src",t+o+"fallback=true&fallback_id="+ut.iframeCount+"&"+i),c()("body").append(this.iframe),this.useFallBack=!0,ut.iframeCount++}else o="&",-1===t.indexOf("?")&&(o="?"),this.source=new EventSource(t+o+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};ut.fallBackSources=[],ut.iframeCount=0,ut.fallBackCallBack=function(t,e,n){ut.fallBackSources[t].fallBackCallBack(e,n)},ut.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};const dt=ut;var At=i(42515),pt=i(25108);let ht=null,ft=null;const mt=function(t){if(ht){const e=ht;ht.trigger(new(c().Event)("beforeHide")),ht.slideUp(50,(function(){e.trigger(new(c().Event)("afterHide")),t&&t.apply(this,arguments)}))}c()(".menutoggle").attr("aria-expanded",!1),ft&&ft.attr("aria-expanded",!1),c()(".openedMenu").removeClass("openedMenu"),ht=null,ft=null},gt=!!window._oc_isadmin;var vt=i(86834),Ct=i.n(vt),bt=i(31352);const wt={load:bt.XJ,register:bt.z2,_unregister:bt.ET,translate:bt.Iu,translatePlural:bt.uN};Ct().registerHelper("t",(function(t,e){return(0,bt.Iu)(t,e)}));const yt={startSaving(e){this.startAction(e,t("core","Saving …"))},startAction(t,e){c()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving(t,e){this.finishedAction(t,e)},finishedAction(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess(t,e){c()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError(t,e){c()(t).text(e).addClass("error").removeClass("success").show()}};var xt=i(30381),kt=i.n(xt);const Et={callback:null,pageLoadTime:null,init(){c()(".password-confirm-required").on("click",f.default.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=kt().now()},requiresPasswordConfirmation(){const t=this.pageLoadTime-1e3*window.nc_pageLoad,e=kt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation(e,n,o){n=void 0!==n?n:{};const i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},a=f.default.extend(i,n),r=this;this.requiresPasswordConfirmation()&&St.dialogs.prompt(a.text,a.title,(function(t,e){t&&""!==e?r._confirmPassword(e,a):f.default.isFunction(o)&&o()}),!0,a.label,!0).then((function(){const t=c()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==a.error){const e=c()("<p></p>").addClass("msg warning").text(a.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");const e=t.find("button");e.eq(0).hide(),e.eq(1).text(a.confirm)})),this.callback=e},_confirmPassword(e,n){const o=this;c().ajax({url:(0,d.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success(t){window.nc_lastLogin=t.lastLogin,f.default.isFunction(o.callback)&&o.callback()},error(){n.error=t("core","Failed to authenticate, try again"),St.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Bt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const o=this.getPlugins(t);for(let t=0;t<o.length;t++)o[t].attach&&o[t].attach(e,n)},detach(t,e,n){const o=this.getPlugins(t);for(let t=0;t<o.length;t++)o[t].detach&&o[t].detach(e,n)}},Pt=window._theme||{},Ot={_handlers:[],_pushState(t,e,n){let o;if(o="string"==typeof t?t:St.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,o=t.length;n<o;n++)e=t[n],e.style.fill=e.style.fill,e.style.stroke=e.style.stroke,e.removeAttribute("filter"),e.setAttribute("filter","url(#invert)")}n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState(t,e){this._pushState(t,e,!1)},replaceState(t,e){this._pushState(t,e,!0)},addOnPopStateHandler(t){this._handlers.push(t)},_parseHashQuery(){const t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=St.parseQueryString(this._decodeQuery(t))),e=f.default.extend(e||{},St.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,f.default.isString(e)?e=St.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t<this._handlers.length;t++)this._handlers[t](e)}}};var Tt=i(91770),Dt=i(25108);function It(t){const e=[];let n,o=0,i=-1,a=0;for(;o<t.length;){n=t.charAt(o);const r=!a&&"."===n||n>="0"&&n<="9";r!==a&&(i++,e[i]="",a=r),e[i]+=n,o++}return e}const jt={History:Ot,humanFileSize:Tt.sS,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&Dt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",kt()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&Dt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=kt()().diff(kt()(e));return n>=0&&n<45e3?t("core","seconds ago"):kt()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const o=It(t),i=It(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){const t=Number(o[n]),e=Number(i[n]);return t==o[n]&&e==i[n]?t-e:o[n].localeCompare(i[n],St.getLanguage())}return o.length-i.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let o=0;o<n.length;o++){const i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},_t=window._oc_debug;let zt=window._oc_webroot;if(void 0===zt){zt=location.pathname;const t=zt.indexOf("/index.php/");zt=-1!==t?zt.substr(0,t):zt.substr(0,zt.lastIndexOf("/"))}const Nt=zt;var Ut=i(25108);const St={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:t=>!!t.match(G.blacklist_files_regex),addScript:(t,e,n)=>{let o;A.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");const i=(0,d.generateFilePath)(t,"js",e+".js");return p[i]?n&&n():(o=c().Deferred(),c().getScript(i,(()=>o.resolve())),p[i]=o),p[i]},addStyle:(t,e)=>{A.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");const n=(0,d.generateFilePath)(t,"css",e+".css");-1===h.indexOf(n)&&(h.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=c()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),c()("head").append(e)))},AppConfig:P,appConfig:B,appSettings:e=>{if(O.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};c().extend(n,e);var o=c()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=c()("#appsettings_popup");if(0===i.length&&(c()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=c()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{const e=o.hasClass("topright")?"up":"left";c().get((0,d.generateFilePath)(n.appid,"",n.scriptName),(function(o){i.html(o).ready((function(){if(i.prepend('<span class="arrow '+e+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var o;if(!0===n.loadJS)o="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};o=n.loadJS}n.cache&&c().ajaxSetup({cache:!0}),c().getScript((0,d.generateFilePath)(n.appid,"js",o)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:T,Backbone:R,ContactsMenu:V,config:G,currentUser:tt,dialogs:rt,EventSource:dt,getCurrentUser:()=>({uid:tt,displayName:$}),isUserAdmin:()=>gt,L10N:wt,_ajaxConnectionLostHandler:C,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!St._reloadCalled)&&(f.default.contains([302,303,307,401],t.status)&&St.currentUser?setTimeout((function(){if(!St._userIsNavigatingAway&&!St._reloadCalled){let t=0;const e=5,o=setInterval((function(){v.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(o),St.reload()),t++}),1e3);St._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){St._userIsNavigatingAway||St._reloadCalled||St._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||c()(document).trigger(new(c().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{c()(document).trigger(new(c().Event)("ajaxError"),t)})))},getCapabilities:()=>(pt.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,At.getCapabilities)()),hideMenus:mt,registerMenu:function(t,e,n,o){e.addClass("menu");const i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(ht)?mt():(ht&&mt(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),ht=e,ft=t))}))},showMenu:(t,e,n)=>{e.is(ht)||(mt(),ht=e,ft=t,e.trigger(new(c().Event)("beforeShow")),e.show(),e.trigger(new(c().Event)("afterShow")),f.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(ht)&&mt(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:Q.EZ,encodePath:Q.Ec,dirname:Q.XX,isSamePath:Q.Mg,joinPaths:Q.RQ,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:bt.aj,getLocale:bt.Kd,getLanguage:bt.G3,buildQueryString:t=>t?c().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const o={};let i;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const a=t.replace(/\+/g,"%20").split("&");for(let t=0;t<a.length;t++){const r=a[t];e=r.indexOf("="),n=e>=0?[r.substr(0,e),r.substr(e+1)]:[r],n.length&&(i=decodeURIComponent(n[0]),i&&(o[i]=n.length>1?decodeURIComponent(n[1]):null))}return o},msg:yt,Notification:v,PasswordConfirmation:Et,Plugins:Bt,theme:Pt,Util:jt,debug:_t,filePath:d.generateFilePath,generateUrl:d.generateUrl,get:(Mt=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t<e.length;t++)if(!(Mt=Mt[e[t]]))return!1;return Mt[n]}),set:(t=>(e,n)=>{const o=e.split("."),i=o.pop();for(let e=0;e<o.length;e++)t[o[e]]||(t[o[e]]={}),t=t[o[e]];return t[i]=n,n})(window),getRootPath:d.getRootUrl,imagePath:d.imagePath,redirect:t=>{window.location=t},reload:()=>{window.location.reload()},requestToken:lt(),linkTo:d.linkTo,linkToOCS:(t,e)=>(0,d.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/",linkToRemote:d.generateRemoteUrl,linkToRemoteBase:t=>(0,d.getRootUrl)()+"/remote.php/"+t,webroot:Nt};var Mt;(0,u.Ld)("csrf-token-update",(t=>{OC.requestToken=t.token,Ut.info("OC.requestToken changed",t.token)}));var Lt=i(79954),Ft=i(45994),Rt=i(25108);let Qt=null;const Gt=async()=>{try{const t=await(async()=>{const t=(0,d.generateUrl)("/csrftoken");return(await c().get(t)).token})();ct(t)}catch(t){Rt.error("session heartbeat failed",t)}},Ht=()=>{const t=setInterval(Gt,1e3*(()=>{let t=NaN;return Qt.session_lifetime&&(t=Math.floor(Qt.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(t)?900:t))})());return Rt.info("session heartbeat polling started"),t};var Kt=i(20144),Yt=i(85750),qt=i.n(Yt);const Wt={name:"ContactsMenu",components:{Contacts:i(12050).Z,NcHeaderMenu:qt()},data:()=>({contactsMenu:null}),mounted(){this.contactsMenu=new St.ContactsMenu({el:"#contactsmenu-menu"})},methods:{handleOpen(){var t;null===(t=this.contactsMenu)||void 0===t||t.loadContacts()}}};var Zt=i(93379),Jt=i.n(Zt),Vt=i(7795),Xt=i.n(Vt),$t=i(90569),te=i.n($t),ee=i(3565),ne=i.n(ee),oe=i(19216),ie=i.n(oe),ae=i(44589),re=i.n(ae),se=i(50893),le={};le.styleTagTransform=re(),le.setAttributes=ne(),le.insert=te().bind(null,"head"),le.domAPI=Xt(),le.insertStyleElement=ie(),Jt()(se.Z,le),se.Z&&se.Z.locals&&se.Z.locals;var ce=i(51900);const ue=(0,ce.Z)(Wt,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{attrs:{id:"contactsmenu","aria-label":t.t("core","Search contacts")},on:{open:t.handleOpen},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("Contacts",{attrs:{size:20}})]},proxy:!0}])},[t._v(" "),e("div",{attrs:{id:"contactsmenu-menu"}})])}),[],!1,null,"1563c388",null).exports;var de=i(12945),Ae=i.n(de),pe=i(76212),he=i.n(pe);const fe={name:"AppMenu",components:{NcActions:Ae(),NcActionLink:he()},data:()=>({apps:(0,Lt.j)("core","apps",{}),appLimit:0,observer:null}),computed:{appList(){return Object.values(this.apps)},mainAppList(){return this.appList.slice(0,this.appLimit)},popoverAppList(){return this.appList.slice(this.appLimit)},appLabel:()=>e=>e.name+(e.active?" ("+t("core","Currently open")+")":"")+(e.unread>0?" ("+n("core","{count} notification","{count} notifications",e.unread,{count:e.unread})+")":"")},mounted(){this.observer=new ResizeObserver(this.resize),this.observer.observe(this.$el),this.resize(),(0,u.Ld)("nextcloud:app-menu.refresh",this.setApps)},beforeDestroy(){this.observer.disconnect(),(0,u.r1)("nextcloud:app-menu.refresh",this.setApps)},methods:{setNavigationCounter(t,e){this.$set(this.apps[t],"unread",e)},setApps(t){let{apps:e}=t;this.apps=e},resize(){const t=this.$el.offsetWidth;let e=Math.floor(t/50)-1;1==this.appList.length-e&&e--,e<1&&(e=0),this.appLimit=e}}};var me=i(50329),ge={};ge.styleTagTransform=re(),ge.setAttributes=ne(),ge.insert=te().bind(null,"head"),ge.domAPI=Xt(),ge.insertStyleElement=ie(),Jt()(me.Z,ge),me.Z&&me.Z.locals&&me.Z.locals;const ve=(0,ce.Z)(fe,(function(){var t=this,e=t._self._c;return e("nav",{staticClass:"app-menu"},[e("ul",{staticClass:"app-menu-main"},t._l(t.mainAppList,(function(n){return e("li",{key:n.id,staticClass:"app-menu-entry",class:{"app-menu-entry__active":n.active},attrs:{"data-app-id":n.id}},[e("a",{class:{"has-unread":n.unread>0},attrs:{href:n.href,"aria-label":t.appLabel(n),title:n.name,"aria-current":!!n.active&&"page",target:n.target?"_blank":void 0,rel:n.target?"noopener noreferrer":void 0}},[e("img",{attrs:{src:n.icon,alt:""}}),t._v(" "),e("div",{staticClass:"app-menu-entry--label"},[t._v("\n\t\t\t\t\t"+t._s(n.name)+"\n\t\t\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])])])})),0),t._v(" "),e("NcActions",{staticClass:"app-menu-more",attrs:{"aria-label":t.t("core","More apps")}},t._l(t.popoverAppList,(function(n){return e("NcActionLink",{key:n.id,staticClass:"app-menu-popover-entry",attrs:{"aria-label":t.appLabel(n),"aria-current":!!n.active&&"page",href:n.href},scopedSlots:t._u([{key:"icon",fn:function(){return[e("div",{staticClass:"app-icon",class:{"has-unread":n.unread>0}},[e("img",{attrs:{src:n.icon,alt:""}})])]},proxy:!0}],null,!0)},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])})),1)],1)}),[],!1,null,"1fb55f7a",null).exports;var Ce=i(75925),be=i.n(Ce),we=i(64192),ye=i.n(we);const xe=(0,Lt.j)("core","versionHash",""),ke={name:"UserMenuEntry",components:{NcLoadingIcon:ye()},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0},icon:{type:String,required:!0}},data:()=>({loading:!1}),computed:{cachedIcon(){return"".concat(this.icon,"?v=").concat(xe)}},methods:{handleClick(){this.loading=!0}}};var Ee=i(88951),Be={};Be.styleTagTransform=re(),Be.setAttributes=ne(),Be.insert=te().bind(null,"head"),Be.domAPI=Xt(),Be.insertStyleElement=ie(),Jt()(Ee.Z,Be),Ee.Z&&Ee.Z.locals&&Ee.Z.locals;const Pe=(0,ce.Z)(ke,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"menu-entry",attrs:{id:t.id}},[t.href?e("a",{class:{active:t.active},attrs:{href:t.href},on:{click:function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.handleClick.apply(null,arguments)}}},[t.loading?e("NcLoadingIcon",{staticClass:"menu-entry__loading-icon",attrs:{size:18}}):e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")],1):e("button",[e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")])])}),[],!1,null,"6e59d13c",null).exports,Oe=(0,Lt.j)("core","settingsNavEntries",[]),Te={name:"UserMenu",components:{NcAvatar:be(),NcHeaderMenu:qt(),UserMenuEntry:Pe},data(){var t;return{settingsNavEntries:Oe,userId:null===(t=(0,Ft.ts)())||void 0===t?void 0:t.uid}},mounted(){(0,u.j8)("core:user-menu:mounted")}};var De=i(71445),Ie={};Ie.styleTagTransform=re(),Ie.setAttributes=ne(),Ie.insert=te().bind(null,"head"),Ie.domAPI=Xt(),Ie.insertStyleElement=ie(),Jt()(De.Z,Ie),De.Z&&De.Z.locals&&De.Z.locals;const je=(0,ce.Z)(Te,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{staticClass:"user-menu",attrs:{id:"user-menu","aria-label":t.t("core","Open settings menu")},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("NcAvatar",{staticClass:"user-menu__avatar",attrs:{"disable-menu":!0,"disable-tooltip":!0,user:t.userId}})]},proxy:!0}])},[t._v(" "),e("nav",{staticClass:"user-menu__nav",attrs:{"aria-label":t.t("core","Settings menu")}},[e("ul",t._l(t.settingsNavEntries,(function(n){return e("UserMenuEntry",t._b({key:n.id},"UserMenuEntry",n,!1))})),1)])])}),[],!1,null,"6a818bbc",null).exports,_e=()=>{setInterval((()=>{c()(".live-relative-timestamp").each((function(){const t=parseInt(c()(this).attr("data-timestamp"),10);c()(this).text(kt()(t).fromNow())}))}),3e4)},ze={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"};let Ne=St.getLocale();Object.prototype.hasOwnProperty.call(ze,Ne)&&(Ne=ze[Ne]),kt().locale(Ne);const Ue=()=>{if(c()(window).on("unload.main",(()=>{St._unloadCalled=!0})),c()(window).on("beforeunload.main",(()=>{setTimeout((()=>{St._userIsNavigatingAway=!0,setTimeout((()=>{St._unloadCalled||(St._userIsNavigatingAway=!1)}),1e4)}),1)})),c()(document).on("ajaxError.main",(function(t,e,n){n&&n.allowAuthErrors||St._processAjaxError(e)})),(()=>{if((()=>{try{Qt=(0,Lt.j)("core","config")}catch(t){Qt=St.config}})(),(()=>{if(!Qt.auto_logout||!(0,Ft.ts)())return;let t=Date.now();window.addEventListener("mousemove",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("touchstart",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("storage",(e=>{"lastActive"===e.key&&(t=e.newValue)})),setInterval((function(){const e=Date.now()-1e3*Qt.session_lifetime;if(t<e){Rt.info("Inactivity timout reached, logging out");const t=(0,d.generateUrl)("/logout")+"?requesttoken="+encodeURIComponent(lt());window.location=t}}),1e3)})(),void 0!==Qt.session_keepalive&&!Qt.session_keepalive)return void Rt.info("session heartbeat disabled");let t=Ht();window.addEventListener("online",(async()=>{Rt.info("browser is online again, resuming heartbeat"),t=Ht();try{await Gt(),Rt.info("session token successfully updated after resuming network"),(0,u.j8)("networkOnline",{success:!0})}catch(t){Rt.error("could not update session token after resuming network",t),(0,u.j8)("networkOnline",{success:!1})}})),window.addEventListener("offline",(()=>{Rt.info("browser is offline, stopping heartbeat"),(0,u.j8)("networkOffline",{}),clearInterval(t),Rt.info("session heartbeat polling stopped")}))})(),St.registerMenu(c()("#expand"),c()("#expanddiv"),!1,!0),c()(document).on("mouseup.closemenus",(t=>{const e=c()(t.target);if(e.closest(".menu").length||e.closest(".menutoggle").length)return!1;St.hideMenus()})),(()=>{Kt.default.mixin({methods:{t:bt.Iu,n:bt.uN}});const t=document.getElementById("header-left__appmenu");if(!t)return;const e=new(Kt.default.extend(ve))({}).$mount(t);Object.assign(OC,{setNavigationCounter(t,n){e.setNavigationCounter(t,n)}})})(),(()=>{const t=document.getElementById("user-menu");t&&new Kt.default({el:t,render:t=>t(je)})})(),(()=>{const t=document.getElementById("contactsmenu");t&&new Kt.default({el:t,render:t=>t(ue)})})(),c()("#app-navigation").length&&!c()("html").hasClass("lte9")&&!c()("#app-content").hasClass("no-snapper")){const t=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});c()("#app-content").prepend('<div id="app-navigation-toggle" class="icon-menu" style="display:none" tabindex="0"></div>');let e=!1;t.on("animating",(()=>{e=!0})),t.on("animated",(()=>{e=!1})),t.on("start",(()=>{e=!0})),t.on("end",(()=>{e=!1})),t.on("open",(()=>{r.attr("aria-hidden","false")})),t.on("close",(()=>{r.attr("aria-hidden","true")}));const n=t.open,o=t.close,i=()=>{e||"closed"!==t.state().state||n("left")},a=()=>{e||"closed"===t.state().state||o()};window.TESTING||(t.open=()=>{f.default.defer(i)},t.close=()=>{f.default.defer(a)}),c()("#app-navigation-toggle").click((e=>{"left"!==t.state().state&&t.open()})),c()("#app-navigation-toggle").keypress((e=>{"left"===t.state().state?t.close():t.open()}));const r=c()("#app-navigation");r.attr("aria-hidden","true"),r.delegate("a, :button","click",(e=>{const n=c()(e.target);n.is(".app-navigation-noclose")||n.closest(".app-navigation-noclose").length||n.is(".app-navigation-entry-utils-menu-button")||n.closest(".app-navigation-entry-utils-menu-button").length||n.is(".add-new")||n.closest(".add-new").length||n.is("#app-settings")||n.closest("#app-settings").length||t.close()}));let s=!1,l=!0,u=!1;St.allowNavigationBarSlideGesture=()=>{l=!0,u&&(t.enable(),s=!0,u=!1)},St.disallowNavigationBarSlideGesture=()=>{if(l=!1,s){const e=!0;t.disable(e),s=!1,u=!0}};const d=()=>{c()(window).width()>1024?(r.attr("aria-hidden","false"),t.close(),t.disable(),s=!1,u=!1):l?(t.enable(),s=!0,u=!1):u=!0};c()(window).resize(f.default.debounce(d,250)),d()}_e(),Et.init()};i(49226),i(41704),i(78312),i(22634);var Se,Me=i(3682),Le=i(25108);c().prototype.tooltip=(Se=c().prototype.tooltip,function(t){try{return Se.call(this,t)}catch(e){if(e instanceof TypeError&&"destroy"===t)return void 0===window.TESTING&&Le.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),Se.call(this,"dispose");if(e instanceof TypeError&&"fixTitle"===t)return void 0===window.TESTING&&Le.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),Se.call(this,"_fixTitle")}});var Fe=i(42152),Re=i.n(Fe),Qe=i(99560),Ge=i.n(Qe);i(18553),i(34140),i(75693),i(99205),i(38554);const He=/(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi;function Ke(t){return this.formatLinksRich(t)}function Ye(t){return this.formatLinksPlain(t)}function qe(t){return t.replace(He,(function(t,e,n,o,i){let a=o;return n?"http://"===n&&(a=n+o):n="https://",e+'<a class="external" target="_blank" rel="noopener noreferrer" href="'+n+o+'">'+a+"</a>"+i}))}function We(t){const e=c()("<div></div>").html(t);return e.find("a").each((function(){const t=c()(this);t.html(t.attr("href"))})),e.html()}var Ze=i(25108);function Je(e){const n=(e=e||{}).dismiss||{};c().ajax({type:"GET",url:e.url||(0,d.generateOcsUrl)("core/whatsnew?format=json"),success:e.success||function(e,o,i){!function(e,n,o,i){if(Ze.debug("querying Whats New data was successful: "+n),Ze.debug(e),200!==o.status)return;let a,r,s,l;const c=document.createElement("div");c.classList.add("popovermenu","open","whatsNewPopover","menu-left");const u=document.createElement("ul");a=document.createElement("li"),r=document.createElement("span"),r.className="menuitem",s=document.createElement("span"),s.innerText=t("core","New in")+" "+e.ocs.data.product,s.className="caption",r.appendChild(s),l=document.createElement("span"),l.className="icon-close",l.onclick=function(){Ve(e.ocs.data.version,i)},r.appendChild(l),a.appendChild(r),u.appendChild(a);for(const t in e.ocs.data.whatsNew.regular){const n=e.ocs.data.whatsNew.regular[t];a=document.createElement("li"),r=document.createElement("span"),r.className="menuitem",l=document.createElement("span"),l.className="icon-checkmark",r.appendChild(l),s=document.createElement("p"),s.innerHTML=f.default.escape(n),r.appendChild(s),a.appendChild(r),u.appendChild(a)}f.default.isUndefined(e.ocs.data.changelogURL)||(a=document.createElement("li"),r=document.createElement("a"),r.href=e.ocs.data.changelogURL,r.rel="noreferrer noopener",r.target="_blank",l=document.createElement("span"),l.className="icon-link",r.appendChild(l),s=document.createElement("span"),s.innerText=t("core","View changelog"),r.appendChild(s),a.appendChild(r),u.appendChild(a)),c.appendChild(u),document.body.appendChild(c)}(e,o,i,n)},error:e.error||Xe})}function Ve(t,e){e=e||{},c().ajax({type:"POST",url:e.url||(0,d.generateOcsUrl)("core/whatsnew"),data:{version:encodeURIComponent(t)},success:e.success||$e,error:e.error||tn}),c()(".whatsNewPopover").remove()}function Xe(t,e,n){Ze.debug("querying Whats New Data resulted in an error: "+e+n),Ze.debug(t)}function $e(t){}function tn(t){Ze.debug("dismissing Whats New data resulted in an error: "+t)}const en={disableKeyboardShortcuts:()=>(0,Lt.j)("theming","shortcutsDisabled",!1),setPageHeading:function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}};var nn=i(95573),on=i.n(nn);const an={},rn={},sn={},ln={loadScript(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(rn,n)?Promise.resolve():(rn[n]=!0,new Promise((function(n,o){const i=OC.filePath(t,"js",e),a=document.createElement("script");a.src=i,a.setAttribute("nonce",btoa(OC.requestToken)),a.onload=()=>n(),a.onerror=()=>o(new Error("Failed to load script from ".concat(i))),document.head.appendChild(a)})))},loadStylesheet(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(sn,n)?Promise.resolve():(sn[n]=!0,new Promise((function(n,o){const i=OC.filePath(t,"css",e),a=document.createElement("link");a.href=i,a.type="text/css",a.rel="stylesheet",a.onload=()=>n(),a.onerror=()=>o(new Error("Failed to load stylesheet from ".concat(i))),document.head.appendChild(a)})))}},cn={success:(t,e)=>(0,m.s$)(t,e),warning:(t,e)=>(0,m.K2)(t,e),error:(t,e)=>(0,m.x2)(t,e),info:(t,e)=>(0,m.JQ)(t,e),message:(t,e)=>(0,m.PV)(t,e)},un={Accessibility:en,AppConfig:a,Collaboration:{registerType(t,e){an[t]=e},trigger:t=>an[t].action(),getTypes:()=>Object.keys(an),getIcon:t=>an[t].typeIconClass||"",getLabel:t=>on()(an[t].typeString||t),getLink:(t,e)=>void 0!==an[t]?an[t].link(e):""},Comments:r,InitialState:{loadState:Lt.j},Loader:ln,Toast:cn,WhatsNew:s};var dn=i(25108);const An=function(){void 0===window.TESTING&&dn.warn.apply(dn,arguments)},pn=(t,e,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{void 0!==window[t]&&delete window[t],Object.defineProperty(window,t,{get:()=>(An(n?"".concat(t," is deprecated: ").concat(n):"".concat(t," is deprecated")),e())})}))};window._=f.default,pn(["$","jQuery"],(()=>c()),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),pn("autosize",(()=>Me.Z),"please ship your own, this will be removed in Nextcloud 20"),pn("Backbone",(()=>I()),"please ship your own, this will be removed in Nextcloud 20"),pn(["Clipboard","ClipboardJS"],(()=>Re()),"please ship your own, this will be removed in Nextcloud 20"),window.dav=j.dav,pn("Handlebars",(()=>Ct()),"please ship your own, this will be removed in Nextcloud 20"),pn("md5",(()=>Ge()),"please ship your own, this will be removed in Nextcloud 20"),pn("moment",(()=>kt()),"please ship your own, this will be removed in Nextcloud 20"),window.OC=St,pn("initCore",(()=>Ue),"this is an internal function"),pn("oc_appswebroots",(()=>St.appswebroots),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),pn("oc_config",(()=>St.config),"use OC.config instead, this will be removed in Nextcloud 20"),pn("oc_current_user",(()=>St.getCurrentUser().uid),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),pn("oc_debug",(()=>St.debug),"use OC.debug instead, this will be removed in Nextcloud 20"),pn("oc_defaults",(()=>St.theme),"use OC.theme instead, this will be removed in Nextcloud 20"),pn("oc_isadmin",St.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),pn("oc_requesttoken",(()=>lt()),"use OC.requestToken instead, this will be removed in Nextcloud 20"),pn("oc_webroot",(()=>St.webroot),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),pn("OCDialogs",(()=>St.dialogs),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=un,window.OCA=nt,c().fn.select2=((t,e,n)=>{const o=t,i=function(){return An("The ".concat("select2"," library is deprecated! It will be removed in nextcloud ").concat(19,".")),o.apply(this,arguments)};return Object.assign(i,o),i})(c().fn.select2),window.t=f.default.bind(St.L10N.translate,St.L10N),window.n=f.default.bind(St.L10N.translatePlural,St.L10N),c().fn.avatar=function(t,e,n,o,i,a){const r=function(t){t.imageplaceholder("?"),t.css("background-color","#b9b9b9")};if(void 0!==t&&(t=String(t)),void 0!==a&&(a=String(a)),void 0===e&&(e=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(e),this.width(e),void 0===t){if(void 0===this.data("user"))return void r(this);t=this.data("user")}t=String(t).replace(/\//g,"");const s=this;let l;l=t===St.getCurrentUser().uid?St.generateUrl("/avatar/{user}/{size}?v={version}",{user:t,size:Math.ceil(e*window.devicePixelRatio),version:oc_userconfig.avatar.version}):St.generateUrl("/avatar/{user}/{size}",{user:t,size:Math.ceil(e*window.devicePixelRatio)});const c=new Image;c.onload=function(){s.clearimageplaceholder(),s.append(c),"function"==typeof i&&i()},c.onerror=function(){s.clearimageplaceholder(),void 0!==a?s.imageplaceholder(t,a):r(s),"function"==typeof i&&i()},e<32?s.addClass("icon-loading-small"):s.addClass("icon-loading"),c.width=e,c.height=e,c.src=l,c.alt=""};const hn=i(47078);c().fn.contactsMenu=function(e,n,o){if(-1===[0,4,6].indexOf(n))return;const i=this;o.append('<div class="menu popovermenu menu-left hidden contactsmenu-popover"> <ul> <li> <a> <span class="icon-loading-small"></span> </a> </li> </ul></div>');const a=o.find("div.contactsmenu-popover");i.on("click keydown",(function(o){if(ot(o)){if(!a.hasClass("hidden"))return a.addClass("hidden"),void a.hide();a.removeClass("hidden"),a.show(),a.hasClass("loaded")||(a.addClass("loaded"),c().ajax(St.generateUrl("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){let n;a.find("ul").find("li").addClass("hidden"),n=e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}],n.forEach((function(t){a.find("ul").append(hn(t))})),i.trigger("load")}),(function(e){let n;a.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),a.find("ul").append(hn({hyperlink:"#",title:n})),i.trigger("loaderror",e)})))}})),c()(document).click((function(t){const e=a.has(t.target).length>0;let n=i.has(t.target).length>0;i.each((function(){c()(this).is(t.target)&&(n=!0)})),e||n||(a.addClass("hidden"),a.hide())}))},c().fn.exists=function(){return this.length>0},c().fn.filterAttr=function(t,e){return this.filter((function(){return c()(this).attr(t)===e}))};var fn=i(15303);c().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create(){const t=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=c()('<div class="oc-dialog"></div>').attr({tabIndex:-1,role:"dialog"}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),1===t.element.find("input").length&&t.element.find("input").on("keydown",(function(e){if(ot(e)&&t.$buttonrow){const e=t.$buttonrow.find("button.primary");e&&!e.prop("disabled")&&e.click()}})),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,c()(document).on("keydown keyup",(function(e){if(e.target===t.$dialog.get(0)||0!==t.$dialog.find(c()(e.target)).length)return 27===e.keyCode&&"keydown"===e.type&&t.options.closeOnEscape?(e.stopImmediatePropagation(),t.close(),!1):13===e.keyCode?(e.stopImmediatePropagation(),null!==t.enterCallback?(t.enterCallback(),e.preventDefault(),!1):"keyup"===e.type&&(e.preventDefault(),!1)):void 0})),this._setOptions(this.options),this._createOverlay(),this._useFocusTrap()},_init(){this._trigger("open")},_setOption(e,n){const o=this;switch(e){case"title":if(this.$title)this.$title.text(n);else{const t=c()('<h2 class="oc-dialog-title">'+n+"</h2>");this.$title=t.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{const t=c()('<div class="oc-dialog-buttonrow"></div>');this.$buttonrow=t.appendTo(this.$dialog)}1===n.length?this.$buttonrow.addClass("onebutton"):2===n.length?this.$buttonrow.addClass("twobuttons"):3===n.length&&this.$buttonrow.addClass("threebuttons"),c().each(n,(function(t,e){const n=c()("<button>").text(e.text);e.classes&&n.addClass(e.classes),e.defaultButton&&(n.addClass("primary"),o.$defaultButton=n),o.$buttonrow.append(n),n.on("click keydown",(function(t){ot(t)&&e.click.apply(o.element[0],arguments)}))})),this.$buttonrow.find("button").on("focus",(function(t){o.$buttonrow.find("button").removeClass("primary"),c()(this).addClass("primary")})),this._setSizes();break;case"style":void 0!==n.buttons&&this.$buttonrow.addClass(n.buttons);break;case"closeButton":if(n){const e=c()('<button class="oc-dialog-close"></button>');e.attr("aria-label",t("core",'Close "{dialogTitle}" dialog',{dialogTitle:this.$title||this.options.title})),this.$dialog.prepend(e),e.on("click keydown",(function(t){ot(t)&&(o.options.closeCallback&&o.options.closeCallback(),o.close())}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",n);break;case"height":this.$dialog.css("height",n);break;case"close":this.closeCB=n}c().Widget.prototype._setOption.apply(this,arguments)},_setOptions(t){c().Widget.prototype._setOptions.apply(this,arguments)},_setSizes(){let t=0;this.$title&&(t+=this.$title.outerHeight(!0)),this.$buttonrow&&(t+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+t+"px)"})},_createOverlay(){if(!this.options.modal)return;const t=this;let e=c()("#content");0===e.length&&(e=c()(".content")),this.overlay=c()("<div>").addClass("oc-dialog-dim").appendTo(e),this.overlay.on("click keydown keyup",(function(e){e.target!==t.$dialog.get(0)&&0===t.$dialog.find(c()(e.target)).length&&(e.preventDefault(),e.stopPropagation())}))},_destroyOverlay(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},_useFocusTrap(){Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]});const t=this.$dialog[0];this.focusTrap=(0,fn.createFocusTrap)(t,{allowOutsideClick:!0,trapStack:window._nc_focus_trap,fallbackFocus:t}),this.focusTrap.activate()},_clearFocusTrap(){var t;null===(t=this.focusTrap)||void 0===t||t.deactivate(),this.focusTrap=null},widget(){return this.$dialog},setEnterCallback(t){this.enterCallback=t},unsetEnterCallback(){this.enterCallback=null},close(){this._clearFocusTrap(),this._destroyOverlay();const t=this;setTimeout((function(){t._trigger("close",t)}),200),t.$dialog.remove(),this.destroy()},destroy(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var mn=i(25108);const gn={init(t,e,n){this.vars=t,this.options=c().extend({},this.options,e),this.elem=n;const o=this;if("function"==typeof this.options.escapeFunction){const t=Object.keys(this.vars);for(let e=0;e<t.length;e++)"string"==typeof this.vars[t[e]]&&(this.vars[t[e]]=o.options.escapeFunction(this.vars[t[e]]))}const i=this._build(this.vars);return c()(i)},_build(t){const e="text/template"===this.elem.attr("type")?this.elem.html():this.elem.get(0).outerHTML;try{return e.replace(/{([^{}]*)}/g,(function(e,n){const o=t[n];return"string"==typeof o||"number"==typeof o?o:e}))}catch(t){mn.error(t,"data:",e)}},options:{escapeFunction:on()}};c().fn.octemplate=function(t,e){if(t=t||{},this.length)return Object.create(gn).init(t,e,this)};var vn=i(25108);const Cn=t=>{var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function o(t,e,o){var i=[];i.push(e);for(var a=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,o]),r=1;r<t;r++){var s=parseInt(e.r+a[0]*r),l=parseInt(e.g+a[1]*r),c=parseInt(e.b+a[2]*r);i.push(new n(s,l,c))}return i}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=Ge()(e)),e=e.replace(/[^0-9a-f]/g,"");const i=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=o(6,i,a),l=o(6,a,r),c=o(6,r,i);return s.concat(l).concat(c)[function(t,e){for(var n=0,o=[],i=0;i<t.length;i++)o.push(parseInt(t.charAt(i),16)%16);for(var a in o)n+=o[a];return parseInt(parseInt(n)%18)}(e)]};String.prototype.toRgb=function(){return vn.warn("String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22."),Cn(this)},c().fn.imageplaceholder=function(t,e,n){e=e||t;var o=Cn(t);this.css("background-color","rgb("+o.r+", "+o.g+", "+o.b+")");var i=this.height()||n||32;if(this.height(i),this.width(i),this.css("color","#fff"),this.css("font-weight","normal"),this.css("text-align","center"),this.css("line-height",i+"px"),this.css("font-size",.55*i+"px"),null!==t&&t.length){var a=e.replace(/\s+/g," ").trim().split(" ",2).map((t=>t[0].toUpperCase())).join("");this.html(a)}},c().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},c()(document).on("ajaxSend",(function(t,e,n){!1===n.crossDomain&&(e.setRequestHeader("requesttoken",lt()),e.setRequestHeader("OCS-APIREQUEST","true"))})),c().fn.selectRange=function(t,e){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(t,e);else if(this.createTextRange){const n=this.createTextRange();n.collapse(!0),n.moveEnd("character",e),n.moveStart("character",t),n.select()}}))},c().fn.extend({showPassword(t){const e={fn:null,args:{}};e.fn=t;const n=function(t,e){e.val(t.val())},o=function(t,e,o){t.is(":checked")?(n(e,o),o.show(),e.hide()):(n(o,e),o.hide(),e.show())};return this.each((function(){const t=c()(this),i=c()(t.data("typetoggle")),a=function(t){const e=c()(t),n=c()("<input />");return n.attr({type:"text",class:e.attr("class"),style:e.attr("style"),size:e.attr("size"),name:e.attr("name")+"-clone",tabindex:e.attr("tabindex"),autocomplete:"off"}),void 0!==e.attr("placeholder")&&n.attr("placeholder",e.attr("placeholder")),n}(t);a.insertAfter(t),e.fn&&(e.args.input=t,e.args.checkbox=i,e.args.clone=a),i.bind("click",(function(){o(i,t,a)})),t.bind("keyup",(function(){n(t,a)})),a.bind("keyup",(function(){n(a,t),t.trigger("keyup")})),a.bind("blur",(function(){t.trigger("focusout")})),o(i,t,a),a.closest("form").submit((function(t){a.prop("type","password")})),e.fn&&e.fn(e.args)}))}}),c().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var bn=i(12448),wn={};wn.styleTagTransform=re(),wn.setAttributes=ne(),wn.insert=te().bind(null,"head"),wn.domAPI=Xt(),wn.insertStyleElement=ie(),Jt()(bn.Z,wn),bn.Z&&bn.Z.locals&&bn.Z.locals;var yn=i(72417),xn={};xn.styleTagTransform=re(),xn.setAttributes=ne(),xn.insert=te().bind(null,"head"),xn.domAPI=Xt(),xn.insertStyleElement=ie(),Jt()(yn.Z,xn),yn.Z&&yn.Z.locals&&yn.Z.locals,c().ajaxSetup({contents:{script:!1}}),c().globalEval=function(){},window.addEventListener("DOMContentLoaded",(function(){Ue(),window.history.pushState?window.onpopstate=_.bind(St.Util.History._onPopState,St.Util.History):c()(window).on("hashchange",_.bind(St.Util.History._onPopState,St.Util.History))}))},12448:(t,e,n)=>{"use strict";n.d(e,{Z:()=>b});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a),s=n(61667),l=n.n(s),c=new URL(n(58188),n.b),u=new URL(n(40337),n.b),d=new URL(n(33178),n.b),A=new URL(n(12081),n.b),p=new URL(n(47868),n.b),h=r()(i()),f=l()(c),m=l()(u),g=l()(d),v=l()(A),C=l()(p);h.push([t.id,".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url("+f+")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("+f+")}.ui-state-active .ui-icon{background-image:url("+f+")}.ui-state-highlight .ui-icon{background-image:url("+m+")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("+g+")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url("+v+") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("+C+") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA",sourcesContent:["/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px 4px 4px 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-bottom-left-radius: var(--border-radius);\n\t\tborder-bottom-right-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary);\n\tcolor: var(--color-primary-text);\n\tborder: 1px solid var(--color-primary-text);\n}\n\n// fix ui-buttons on hover\n.ui-button:hover {\n font-weight:bold !important;\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]);const b=h},72417:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:[".oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 10000;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\twidth: 44px !important;\n\theight: 44px !important;\n\ttop: 4px;\n\tright: 4px;\n\tpadding: 25px;\n\tbackground: var(--icon-close-dark) no-repeat center;\n\topacity: .5;\n\tborder-radius: var(--border-radius-pill);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 9999;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=r},50329:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,'.app-menu[data-v-1fb55f7a]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-1fb55f7a]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-1fb55f7a]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-1fb55f7a]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-1fb55f7a]::before{content:" ";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-1fb55f7a]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-1fb55f7a]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-text);position:relative}.app-menu-main .app-menu-entry img[data-v-1fb55f7a]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-1fb55f7a]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-1fb55f7a]:hover,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-1fb55f7a]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-1fb55f7a]:hover,.app-menu-main[data-v-1fb55f7a]:focus-within,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:hover,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:focus{opacity:1}.app-menu-main:hover img[data-v-1fb55f7a],.app-menu-main:focus-within img[data-v-1fb55f7a],.app-menu-main .app-menu-entry:hover img[data-v-1fb55f7a],.app-menu-main .app-menu-entry:focus img[data-v-1fb55f7a]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main:focus-within .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-1fb55f7a]{opacity:1;bottom:0}.app-menu-main[data-v-1fb55f7a]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-1fb55f7a]::before,.app-menu-main[data-v-1fb55f7a]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-1fb55f7a]::before,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-1fb55f7a]::before,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-1fb55f7a]::before{opacity:0}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-primary-text)}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-1fb55f7a]{position:relative;height:44px;filter:var(--background-invert-if-bright)}.app-menu-popover-entry .app-icon.has-unread[data-v-1fb55f7a]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-1fb55f7a]{width:20px;height:20px;padding:15px}.has-unread[data-v-1fb55f7a]::after{content:"";width:8px;height:8px;background-color:var(--color-primary-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-1fb55f7a]{display:none}',"",{version:3,sources:["webpack://./core/src/components/AppMenu.vue"],names:[],mappings:"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,0CAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,+BAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,qFACC,+BAAA,CAEA,2FACC,SAAA,CACA,yCAAA,CAIF,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,yCAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAtJgB,CAuJhB,WAvJgB,CAwJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,0CAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA",sourcesContent:['\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: " ";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t/* Remove all background and align text color if not expanded */\n\t&:not([aria-expanded="true"]) {\n\t\tcolor: var(--color-primary-text);\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t\tbackground-color: transparent !important;\n\t\t}\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\t\t/* Icons are bright so invert them if bright color theme == bright background is used */\n\t\tfilter: var(--background-invert-if-bright);\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: "";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n'],sourceRoot:""}]);const s=r},88951:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}","",{version:3,sources:["webpack://./core/src/components/UserMenu/UserMenuEntry.vue"],names:[],mappings:"AAEC,2CACC,gBAAA",sourcesContent:["\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n"],sourceRoot:""}]);const s=r},50893:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}","",{version:3,sources:["webpack://./core/src/views/ContactsMenu.vue"],names:[],mappings:"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA",sourcesContent:["\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=r},71445:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".user-menu[data-v-6a818bbc]{margin-right:12px}.user-menu[data-v-6a818bbc] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-6a818bbc] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-text)}.user-menu[data-v-6a818bbc] .header-menu__carret{display:none !important}.user-menu[data-v-6a818bbc] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-6a818bbc]:active,.user-menu__avatar[data-v-6a818bbc]:focus,.user-menu__avatar[data-v-6a818bbc]:hover{border:2px solid var(--color-primary-text)}.user-menu__nav[data-v-6a818bbc]{display:flex;width:100%}.user-menu__nav ul[data-v-6a818bbc]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-6a818bbc] li a,.user-menu__nav ul[data-v-6a818bbc] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-6a818bbc] li a:hover,.user-menu__nav ul[data-v-6a818bbc] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-6a818bbc] li a:focus-visible,.user-menu__nav ul[data-v-6a818bbc] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary) !important;outline:none !important}.user-menu__nav ul[data-v-6a818bbc] li a:active,.user-menu__nav ul[data-v-6a818bbc] li a.active,.user-menu__nav ul[data-v-6a818bbc] li button:active,.user-menu__nav ul[data-v-6a818bbc] li button.active{background-color:var(--color-primary-light)}.user-menu__nav ul[data-v-6a818bbc] li a span,.user-menu__nav ul[data-v-6a818bbc] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li a svg,.user-menu__nav ul[data-v-6a818bbc] li button img,.user-menu__nav ul[data-v-6a818bbc] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-6a818bbc] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}","",{version:3,sources:["webpack://./core/src/views/UserMenu.vue"],names:[],mappings:"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,0CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,0CAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,0DAAA,CACA,uBAAA,CAGD,0MAEC,2CAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA",sourcesContent:["\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=r},10944:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?a:""},2:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?a:""},3:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatarLabel"):a,e))+'">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatarLabel"):a,e))+'">\n'},7:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?a:""},8:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?a:""},9:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"topAction"):a,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?a:"")},14:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'" aria-label="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"topAction"):a,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?a:""},19:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n \t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"hyperlink"):a,e))+'" aria-label="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(a=r(n,"each").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"actions"):a,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?a:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(a=null!=(a=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?a:s)===l?a.call(r,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):a)+'">\n\t\t\t\t\t<img src="'+c(typeof(a=null!=(a=u(n,"icon")||(null!=e?u(e,"icon"):e))?a:s)===l?a.call(r,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):a)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(a=null!=(a=u(n,"title")||(null!=e?u(e,"title"):e))?a:s)===l?a.call(r,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):a)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"avatar"):a,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasTwoActions"):a,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasManyActions"):a,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?a:"")},useData:!0})},20421:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"couldNotLoadText")||(null!=e?r(e,"couldNotLoadText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):a)+"</h2>\n</div>\n"},useData:!0})},34083:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"noContactsFoundText")||(null!=e?r(e,"noContactsFoundText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):a)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?a:s)===l?a.call(r,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?a:s)===l?a.call(r,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):a)+"</a></div>\n"},5:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=e?r(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?a:""},6:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):a)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"unless").call(r,null!=(a=null!=e?s(e,"contacts"):e)?s(a,"length"):a,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?a:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(a=s(n,"if").call(r,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?a:"")},useData:!0})},95386:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"loadingText")||(null!=e?r(e,"loadingText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):a)+"</h2>\n</div>\n"},useData:!0})},66115:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):a)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):a)+'" value="'+c(typeof(a=null!=(a=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?a:s)===l?a.call(r,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):a)+'">\n<div class="content">\n</div>\n'},useData:!0})},47078:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<img src="'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"icon")||(null!=e?r(e,"icon"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"icon",hash:{},data:i,loc:{start:{line:3,column:24},end:{line:3,column:32}}}):a)+'">'},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r,s=null!=e?e:t.nullContext||{},l=t.hooks.helperMissing,c="function",u=t.escapeExpression,d=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<li>\n\t<a href="'+u(typeof(r=null!=(r=d(n,"hyperlink")||(null!=e?d(e,"hyperlink"):e))?r:l)===c?r.call(s,{name:"hyperlink",hash:{},data:i,loc:{start:{line:2,column:10},end:{line:2,column:23}}}):r)+'">\n\t\t'+(null!=(a=d(n,"if").call(s,null!=e?d(e,"icon"):e,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?a:"")+"\n\t\t<span>"+u(typeof(r=null!=(r=d(n,"title")||(null!=e?d(e,"title"):e))?r:l)===c?r.call(s,{name:"title",hash:{},data:i,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):r)+"</span>\n\t</a>\n</li>\n"},useData:!0})},46700:(t,e,n)=>{var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=a(t);return n(e)}function a(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=a,t.exports=i,i.id=46700},12081:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},47868:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},58188:t=>{"use strict";t.exports="data:image/png;base64,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"},33178:t=>{"use strict";t.exports="data:image/png;base64,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"},40337:t=>{"use strict";t.exports="data:image/png;base64,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"},98811:t=>{"use strict";t.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},27373:t=>{"use strict";t.exports="data:image/gif;base64,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"}},i={};function a(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=o,e=[],a.O=(t,n,o,i)=>{if(!n){var r=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||r>=i)&&Object.keys(a.O).every((t=>a.O[t](n[l])))?n.splice(l--,1):(s=!1,i<r&&(r=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=2943,(()=>{a.b=document.baseURI||self.location.href;var t={2943:0};a.O.j=e=>0===t[e];var e=(e,n)=>{var o,i,r=n[0],s=n[1],l=n[2],c=0;if(r.some((e=>0!==t[e]))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(l)var u=l(a)}for(e&&e(n);c<r.length;c++)i=r[c],a.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),a.nc=void 0;var r=a.O(void 0,[7874],(()=>a(36041)));r=a.O(r)})(); -//# sourceMappingURL=core-main.js.map?v=060aef75f1e3deb2a78c
\ No newline at end of file +(()=>{var e,o={12376:(e,o,i)=>{"use strict";var a={};i.r(a),i.d(a,{deleteKey:()=>E,getApps:()=>w,getKeys:()=>y,getValue:()=>x,setValue:()=>k});var r={};i.r(r),i.d(r,{formatLinksPlain:()=>We,formatLinksRich:()=>qe,plainToRich:()=>Ke,richToPlain:()=>Ye});var s={};i.r(s),i.d(s,{dismiss:()=>Ve,query:()=>Je});var l=i(19755),c=i.n(l),u=(i(28594),i(35666),i(35202),i(78595)),d=i(79753),A=i(25108);const p={},h=[];var m=i(18181),f=i(64024),g=i(25108);const v={updatableNotification:null,getDefaultNotificationFunction:null,setDefault(t){this.getDefaultNotificationFunction=t},hide(t,e){m.default.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){c()(this)[0].toastify?c()(this)[0].toastify.hideToast():g.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):g.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:f.Rl;const n=(0,f.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},show(t,e){(e=e||{}).timeout=e.timeout?e.timeout:f.Rl;const n=(0,f.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,c()(n.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,f.PV)(t,{timeout:f.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,c()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||f.TN;const n=(0,f.PV)(t,e);return n.toastElement.toastify=n,c()(n.toastElement)},isHidden:()=>!c()("#content").find(".toastify").length},C=m.default.throttle((()=>{v.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1});function b(t,e,n){"post"!==t&&"delete"!==t||!St.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},c().ajax({type:t.toUpperCase(),url:(0,d.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):St.PasswordConfirmation.requirePasswordConfirmation(_.bind(b,this,t,e,n))}function w(t){b("get","",t)}function y(t,e){b("get","/"+t,e)}function x(t,e,n,o){(o=o||{}).data={defaultValue:n},b("get","/"+t+"/"+e,o)}function k(t,e,n,o){(o=o||{}).data={value:n},b("post","/"+t+"/"+e,o)}function E(t,e,n){b("delete","/"+t+"/"+e,n)}const B=window.oc_appconfig||{},P={getValue:function(t,e,n,o){x(t,e,n,{success:o})},setValue:function(t,e,n){k(t,e,n)},getApps:function(t){w({success:t})},getKeys:function(t,e){y(t,{success:e})},deleteKey:function(t,e){E(t,e)}};var O=i(25108);const T=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var D=i(72316),I=i.n(D),j=i(76591),z=i(25108);const N={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function U(t,e){if(m.default.isArray(t))return m.default.map(t,(function(t){return U(t,e)}));var n={href:t.href};return m.default.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=S(n.href)),n}function S(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function M(t){return t>=200&&t<=299}function L(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],a=t[n];i||(z.warn('No matching DAV property for property "'+n),i=n),(m.default.isBoolean(a)||m.default.isNumber(a))&&(a=""+a),o[i]=a}return o}(n.changed,e.davProperties),o).then((function(t){M(t.status)?m.default.isFunction(e.success)&&e.success(n.toJSON()):m.default.isFunction(e.error)&&e.error(t)}))}const F=I().noConflict();Object.assign(F,{davCall:(t,e)=>{var n=new j.dav.Client({baseUrl:t.url,xmlNamespaces:m.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=m.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,m.default.values(e.davProperties)||[],e.depth,o).then((function(t){if(M(t.status)){if(m.default.isFunction(e.success)){var n=m.default.invert(e.davProperties),o=U(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else m.default.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?L(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){M(i.status)?L(t,e,n,o):m.default.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(M(t.status)){if(m.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=S(i)),void e.success(o)}if(207===t.status){var a=m.default.invert(e.davProperties);e.success(U(t.body,a))}else e.success(t.body)}}else m.default.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:(t=>(e,n,o)=>{var i={type:N[e]||e},a=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=m.default.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var r=n.davProperties;!r&&n.model&&(r=n.model.prototype.davProperties),r&&(m.default.isFunction(r)?i.davProperties=r.call(n):i.davProperties=r),i.davProperties=m.default.extend(i.davProperties||{},o.davProperties),m.default.isUndefined(o.depth)&&(o.depth=a?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(m.default.extend(i,o),n);return n.trigger("request",n,l,o),l})(F)});const R=F;var Q=i(65358);const G=window._oc_config||{};var H=i(25108);const K=D.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0);const e=this.get("fullName");this.get("avatar")&&e&&this.set("avatarLabel",t("core","Avatar of {fullName}",{fullName:e}))}}),Y=D.Collection.extend({model:K}),q=D.View.extend({_collection:void 0,_subViews:[],tagName:"ul",initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new W({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),W=D.View.extend({className:"contact",tagName:"li",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),Z=D.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:m.default.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(m.default.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(m.default.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(m.default.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new q({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:St.generateUrl("/apps/contacts"),canInstallApp:St.isUserAdmin(),contactsAppMgmtURL:St.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),J=function(t){this.initialize(t)};J.prototype={$el:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=c()(t.el),this._view=new Z({el:this.$el}),this._view.on("search",(function(t){this.loadContacts(t)}),this)},_getContacts:function(t){var e=St.generateUrl("/contactsmenu/contacts");return Promise.resolve(c().ajax(e,{method:"POST",data:{filter:t}}))},loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),m.default.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new Y(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),H.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(H.error.bind(this))}};const V=J,X=document.getElementsByTagName("head")[0].getAttribute("data-user"),$=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),tt=void 0!==X&&X;var et=i(25108);const nt={Search:class{constructor(){et.warn("OCA.Search is deprecated. Please use the unified search API instead")}}},ot=t=>"click"===t.type||"keydown"===t.type&&"Enter"===t.key;var it=i(25108);const at={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",at.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",at.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",at.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",at.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,a,r){return c().when(this._getMessageTemplate()).then((function(s){var l="oc-dialog-"+at.dialogsCounter+"-content",u="#"+l,d=s.octemplate({dialog_name:l,title:n,message:e,type:"notice"}),A=c()("<input/>");A.attr("type",r?"password":"text").attr("id",l+"-input").attr("placeholder",a);var p=c()("<label/>").attr("for",l+"-input").text(a+": ");d.append(p),d.append(A),void 0===i&&(i=!1),c()("body").append(d),void 0!==o&&(o=m.default.once(o));var h=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,A.val()),c()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,A.val()),c()(u).ocdialog("close")},defaultButton:!0}];c()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:h,close:function(){void 0!==o&&o(!1,A.val())}}),A.focus(),at.dialogsCounter++}))},filepicker:function(e,n,o,i,a,r,s,l){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===r&&(r=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),A=t("files","New folder");r!==this.FILEPICKER_TYPE_COPY&&r!==this.FILEPICKER_TYPE_MOVE&&r!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=nt.Sharing&&nt.Sharing.PublicApp&&nt.Sharing.PublicApp.fileList?nt.Sharing.PublicApp.fileList.filesClient:St.Files.getClient(),this.filelist=null,s=s||"",l=Object.assign({allowDirectoryChooser:!1},l),c().when(this._getFilePickerTemplate()).then((function(p){var h,m;u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:A,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",l.allowDirectoryChooser),"function"==typeof l.filter&&u.$filePicker.data("filter",l.filter),void 0===a&&(a=!1),void 0===o&&(o=!1),c()(null!==(h=null===(m=l)||void 0===m?void 0:m.target)&&void 0!==h?h:"body").prepend(u.$filePicker),u.$showGridView=c()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){ot(t)&&u._onGridviewChange()})),u._getGridSettings();var f=u.$filePicker.find(".actions.creatable .button-add");r!==u.FILEPICKER_TYPE_CHOOSE||l.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),f.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),f.click()}))})),f.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),St.registerMenu(f,u.$filePicker.find(".menu"),(function(){v.tooltip("hide"),v.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=v.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),v.selectRange(0,e)}));var g=u.$filePicker.find(".filenameform"),v=g.find("input[type='text']"),C=g.find("input[type='submit']");v.on("keydown",(function(t){ot(t)&&(t.stopImmediatePropagation(),t.preventDefault(),g.submit())})),C.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),g.submit()}));g.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=v.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(St.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){v.attr("title",t),v.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),v.tooltip("_fixTitle"),v.tooltip("show"),v.addClass("error")}return!1}()){var n=v.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n,r)})),St.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),v.val(A)}})),v.on("input",(function(t){v.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown",".crumb",u,(function(t){ot(t)&&u._handleTreeListSelect(t,r)})),u.$filelist.on("click keydown","tr",(function(t){ot(t)&&u._handlePickerClick(t,c()(this),r)})),u.$fileListHeader.on("click keydown","a",(function(t){if(ot(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=c()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e,r)}})),u._fillFilePicker(s,r)}));var b=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+c()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];r===at.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){b(at.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):r===at.FILEPICKER_TYPE_CUSTOM?l.buttons.forEach((function(t){w.push({text:t.text,click:function(){b(t.type)},defaultButton:t.defaultButton})})):(r!==at.FILEPICKER_TYPE_COPY&&r!==at.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){b(at.FILEPICKER_TYPE_COPY)},defaultButton:!1}),r!==at.FILEPICKER_TYPE_MOVE&&r!==at.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){b(at.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:a,buttons:w,style:{buttons:"aside"},close:function(){try{c()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var y=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?y.prop("disabled",!1):y.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,a,r,s){return c().when(this._getMessageTemplate()).then((function(l){var u="oc-dialog-"+at.dialogsCounter+"-content",d="#"+u,A=l.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===r&&(r=!1),c()("body").append(A);var p=[];switch(i){case at.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0}];break;case at.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){c()(d).ocdialog("close"),void 0!==a&&a()},defaultButton:!0};break;default:"object"==typeof i&&i.type===at.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==a&&a(!1),c()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==a&&a(!0),c()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}c()(d).ocdialog({closeOnEscape:!0,closeCallback:()=>{a&&a(!1)},modal:r,buttons:p}),at.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,a){var r=this,s=new(c().Deferred),l=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var a=t.getContext("2d").getImageData(0,0,e,n),r=t.getContext("2d").getImageData(0,0,o,i),s=a.data,l=r.data,c=e/o,u=n/i,d=Math.ceil(c/2),A=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var m=4*(h+p*o),f=0,g=0,v=0,C=0,b=0,w=0,y=0,x=(p+.5)*u,k=Math.floor(p*u);k<(p+1)*u;k++)for(var E=Math.abs(x-(k+.5))/A,B=(h+.5)*c,P=E*E,O=Math.floor(h*c);O<(h+1)*c;O++){var T=Math.abs(B-(O+.5))/d,D=Math.sqrt(P+T*T);D>=-1&&D<=1&&(f=2*D*D*D-3*D*D+1)>0&&(y+=f*s[3+(T=4*(O+k*e))],v+=f,s[T+3]<255&&(f=f*s[T+3]/250),C+=f*s[T],b+=f*s[T+1],w+=f*s[T+2],g+=f)}l[m]=C/g,l[m+1]=b/g,l[m+2]=w/g,l[m+3]=y/v}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(r,0,0)},u=function(n,o,i){var a=n.find(".template").clone().removeClass("template").addClass("conflict"),r=a.find(".original"),s=a.find(".replacement");a.data("data",e),a.find(".filename").text(o.name),r.find(".size").text(St.Util.humanFileSize(o.size)),r.find(".mtime").text(St.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(St.Util.humanFileSize(i.size)),s.find(".mtime").text(St.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},A=Files.generatePreviewUrl(d);A=A.replace(/'/g,"%27"),r.find(".icon").css({"background-image":"url('"+A+"')"}),function(t){var e=new(c().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,a,r,s,c,u=(t=i,r=document.createElement("canvas"),s=t.width,c=t.height,s>c?(o=0,n=(s-c)/2):(o=(c-s)/2,n=0),a=Math.min(s,c),r.width=a,r.height=a,r.getContext("2d").drawImage(t,n,o,a,a,0,0,a,a),l(r,a,a,96,96),r.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=St.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;r.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(a),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&r.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&r.find(".size").css("font-weight","bold"),"readonly"===o.status&&(r.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),r.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",A="#"+d;if(this._fileexistsshown){var p=c()(A+" .conflicts");u(p,o,i);var h=c()(A+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});c()(A).parent().children(".oc-dialog-title").text(m),c()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,c().when(this._getFileExistsTemplate()).then((function(n){var l=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:l,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(c()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==a.onCancel&&a.onCancel(e),c()(A).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==a.onContinue&&a.onContinue(c()(A+" .conflict")),c()(A).ocdialog("close")}}];c()(A).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){r._fileexistsshown=!1;try{c()(this).ocdialog("destroy").remove()}catch(t){}}}),c()(A).css("height","auto");var f=p.closest(".oc-dialog").find("button.continue");function g(){var t=p.find(".conflicts .checkbox:checked").length;f.prop("disabled",0===t)}f.prop("disabled",!0),c()(A).find(".allnewfiles").on("click",(function(){c()(A).find('.conflict .replacement input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".allexistingfiles").on("click",(function(){c()(A).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",c()(this).prop("checked"))})),c()(A).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=c()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),c()(A).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=c()(this);t.prop("checked",!t.prop("checked"))})),c()(A).on("click",".replacement,.allnewfiles",(function(){var e=c()(A).find('.conflict .replacement input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allnewfiles").prop("checked",!0),c()(A).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allnewfiles").prop("checked",!1),c()(A).find(".allnewfiles + .count").text("")),g()})),c()(A).on("click",".original,.allexistingfiles",(function(){var e=c()(A).find('.conflict .original input[type="checkbox"]:checked').length;e===c()(A+" .conflict").length?(c()(A).find(".allexistingfiles").prop("checked",!0),c()(A).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(c()(A).find(".allexistingfiles").prop("checked",!1),c()(A).find(".allexistingfiles + .count").text("")),g()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){const e=this;c().get(St.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),c()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){const e=this.$showGridView.hasClass("icon-toggle-filelist");St.currentUser&&c().post(St.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=c().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;c().get(St.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=c()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=c().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;c().get(St.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=c()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=c().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;c().get(St.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=c()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_fillFilePicker:async function(e,n){var o=this;this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",e);var i=this.$filePicker.data("mimetype"),a=this.$filePicker.data("filter");"string"==typeof i&&(i=[i]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s");var r=async function(t){return o.filepicker.filesClient.getFolderContents(t).then(((t,e)=>e))};try{var s=await r(e)}catch(t){it.error("Requested path does not exists, falling back to root"),s=await r("/"),this.$filePicker.data("path","/"),this._changeButtonsText(n,"")}o.filelist=s,i&&i.length>0&&-1===i.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==i.indexOf(t.mimetype)}))),a&&(s=s.filter(a));const l=document.getElementById("showHiddenFiles");"1"!==(null==l?void 0:l.value)&&(s=s.filter((function(t){return!t.name.startsWith(".")})));var u={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:St.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}},d=u[o.filepicker.sortField]||u.name;s=s.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(St.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?d(t,e):-d(t,e)})),o._fillSlug(),0===s.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),c().each(s,(function(n,i){var a,r;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=St.MimeType.getIconUrl("dir-encrypted"):i.icon=St.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(a=St.Util.humanFileSize(parseInt(i.size,10),!0),r=Math.round(160-Math.pow(i.size/1048576,2))):(a=t("files","Pending"),r=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),l=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else l=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:e,filename:i.name,filename1:l,filename2:u,date:St.Util.relativeModifiedDate(i.mtime),size:a,sizeColor:r,icon:i.icon});if("file"===i.type){var A={file:e+"/"+i.name,x:100,y:100},p=new Image,h=St.generateUrl("/core/preview.png?")+c().param(A);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading")},_fillSlug:function(){var e=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty(),this.$dirTree.append("<nav></nav>"),this.$dirTree.append(e);var n=this.$filePicker.data("path"),o=c()('<li data-dir="{dir}" tabindex="0"><a class="{classList}">{name}</a></li>').addClass("crumb"),i=c()('<ul class="breadcrumb"></ul>');if(n){var a=n.split("/");c().each(a,(function(t,e){if(""===(e=a.pop()))return!1;i.prepend(o.octemplate({dir:a.join("/")+"/"+e,name:e}))}))}o.octemplate({dir:"",name:t("core","Home"),classList:"icon-home"},{escapeFunction:null}).addClass("crumb svg crumbhome").prependTo(i),this.$dirTree.find("> nav").prepend(i)},_handleTreeListSelect:function(t,e){var n=t.data,o=c()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o,e);var i=t.target.closest(".oc-dialog"),a=c()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?a.prop("disabled",!1):a.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname"),n),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),a=c()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:a.text(o);break;case this.FILEPICKER_TYPE_MOVE:a.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:a.eq(0).text(o),a.eq(1).text(i)}}},rt=at,st=((t,e)=>{let n=t.getElementsByTagName("head")[0].getAttribute("data-requesttoken");return{getToken:()=>n,setToken:t=>{n=t,e("csrf-token-update",{token:n})}}})(document,u.j8),lt=st.getToken,ct=st.setToken,ut=function(t,e){var n,o,i="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(n in e)i+=n+"="+encodeURIComponent(e[n])+"&";if(i+="requesttoken="+encodeURIComponent(lt()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+ut.iframeCount;ut.fallBackSources[ut.iframeCount]=this,this.iframe=c()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),o="&",-1===t.indexOf("?")&&(o="?"),this.iframe.attr("src",t+o+"fallback=true&fallback_id="+ut.iframeCount+"&"+i),c()("body").append(this.iframe),this.useFallBack=!0,ut.iframeCount++}else o="&",-1===t.indexOf("?")&&(o="?"),this.source=new EventSource(t+o+i),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};ut.fallBackSources=[],ut.iframeCount=0,ut.fallBackCallBack=function(t,e,n){ut.fallBackSources[t].fallBackCallBack(e,n)},ut.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};const dt=ut;var At=i(42515),pt=i(25108);let ht=null,mt=null;const ft=function(t){if(ht){const e=ht;ht.trigger(new(c().Event)("beforeHide")),ht.slideUp(50,(function(){e.trigger(new(c().Event)("afterHide")),t&&t.apply(this,arguments)}))}c()(".menutoggle").attr("aria-expanded",!1),mt&&mt.attr("aria-expanded",!1),c()(".openedMenu").removeClass("openedMenu"),ht=null,mt=null},gt=!!window._oc_isadmin;var vt=i(86834),Ct=i.n(vt),bt=i(31352);const wt={load:bt.XJ,register:bt.z2,_unregister:bt.ET,translate:bt.Iu,translatePlural:bt.uN};Ct().registerHelper("t",(function(t,e){return(0,bt.Iu)(t,e)}));const yt={startSaving(e){this.startAction(e,t("core","Saving …"))},startAction(t,e){c()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving(t,e){this.finishedAction(t,e)},finishedAction(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess(t,e){c()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError(t,e){c()(t).text(e).addClass("error").removeClass("success").show()}};var xt=i(30381),kt=i.n(xt);const Et={callback:null,pageLoadTime:null,init(){c()(".password-confirm-required").on("click",m.default.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=kt().now()},requiresPasswordConfirmation(){const t=this.pageLoadTime-1e3*window.nc_pageLoad,e=kt().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation(e,n,o){n=void 0!==n?n:{};const i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},a=m.default.extend(i,n),r=this;this.requiresPasswordConfirmation()&&St.dialogs.prompt(a.text,a.title,(function(t,e){t&&""!==e?r._confirmPassword(e,a):m.default.isFunction(o)&&o()}),!0,a.label,!0).then((function(){const t=c()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==a.error){const e=c()("<p></p>").addClass("msg warning").text(a.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");const e=t.find("button");e.eq(0).hide(),e.eq(1).text(a.confirm)})),this.callback=e},_confirmPassword(e,n){const o=this;c().ajax({url:(0,d.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success(t){window.nc_lastLogin=t.lastLogin,m.default.isFunction(o.callback)&&o.callback()},error(){n.error=t("core","Failed to authenticate, try again"),St.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Bt={_plugins:{},register(t,e){let n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,n){const o=this.getPlugins(t);for(let t=0;t<o.length;t++)o[t].attach&&o[t].attach(e,n)},detach(t,e,n){const o=this.getPlugins(t);for(let t=0;t<o.length;t++)o[t].detach&&o[t].detach(e,n)}},Pt=window._theme||{},Ot={_handlers:[],_pushState(t,e,n){let o;if(o="string"==typeof t?t:St.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,n=0,o=t.length;n<o;n++)e=t[n],e.style.fill=e.style.fill,e.style.stroke=e.style.stroke,e.removeAttribute("filter"),e.setAttribute("filter","url(#invert)")}n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState(t,e){this._pushState(t,e,!1)},replaceState(t,e){this._pushState(t,e,!0)},addOnPopStateHandler(t){this._handlers.push(t)},_parseHashQuery(){const t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=St.parseQueryString(this._decodeQuery(t))),e=m.default.extend(e||{},St.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,m.default.isString(e)?e=St.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t<this._handlers.length;t++)this._handlers[t](e)}}};var Tt=i(91770),Dt=i(25108);function It(t){const e=[];let n,o=0,i=-1,a=0;for(;o<t.length;){n=t.charAt(o);const r=!a&&"."===n||n>="0"&&n<="9";r!==a&&(i++,e[i]="",a=r),e[i]+=n,o++}return e}const jt={History:Ot,humanFileSize:Tt.sS,computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let n=null;const o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n),n):null)},formatDate:(t,e)=>(void 0===window.TESTING&&Dt.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",kt()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&Dt.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const n=kt()().diff(kt()(e));return n>=0&&n<45e3?t("core","seconds ago"):kt()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const n=t.offsetWidth;e.style.overflow="scroll";let o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let n;const o=It(t),i=It(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){const t=Number(o[n]),e=Number(i[n]);return t==o[n]&&e==i[n]?t-e:o[n].localeCompare(i[n],St.getLanguage())}return o.length-i.length},waitFor(t,e){const n=function(){!0!==t()&&setTimeout(n,e)};n()},isCookieSetToValue(t,e){const n=document.cookie.split(";");for(let o=0;o<n.length;o++){const i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},_t=window._oc_debug;let zt=window._oc_webroot;if(void 0===zt){zt=location.pathname;const t=zt.indexOf("/index.php/");zt=-1!==t?zt.substr(0,t):zt.substr(0,zt.lastIndexOf("/"))}const Nt=zt;var Ut=i(25108);const St={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:t=>!!t.match(G.blacklist_files_regex),addScript:(t,e,n)=>{let o;A.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");const i=(0,d.generateFilePath)(t,"js",e+".js");return p[i]?n&&n():(o=c().Deferred(),c().getScript(i,(()=>o.resolve())),p[i]=o),p[i]},addStyle:(t,e)=>{A.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");const n=(0,d.generateFilePath)(t,"css",e+".css");-1===h.indexOf(n)&&(h.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=c()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),c()("head").append(e)))},AppConfig:P,appConfig:B,appSettings:e=>{if(O.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};c().extend(n,e);var o=c()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=c()("#appsettings_popup");if(0===i.length&&(c()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=c()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{const e=o.hasClass("topright")?"up":"left";c().get((0,d.generateFilePath)(n.appid,"",n.scriptName),(function(o){i.html(o).ready((function(){if(i.prepend('<span class="arrow '+e+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var o;if(!0===n.loadJS)o="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};o=n.loadJS}n.cache&&c().ajaxSetup({cache:!0}),c().getScript((0,d.generateFilePath)(n.appid,"js",o)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:T,Backbone:R,ContactsMenu:V,config:G,currentUser:tt,dialogs:rt,EventSource:dt,getCurrentUser:()=>({uid:tt,displayName:$}),isUserAdmin:()=>gt,L10N:wt,_ajaxConnectionLostHandler:C,_processAjaxError:t=>{(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!St._reloadCalled)&&(m.default.contains([302,303,307,401],t.status)&&St.currentUser?setTimeout((function(){if(!St._userIsNavigatingAway&&!St._reloadCalled){let t=0;const e=5,o=setInterval((function(){v.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(o),St.reload()),t++}),1e3);St._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){St._userIsNavigatingAway||St._reloadCalled||St._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:t=>{t.addEventListener&&(t.addEventListener("load",(()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||c()(document).trigger(new(c().Event)("ajaxError"),t))})),t.addEventListener("error",(()=>{c()(document).trigger(new(c().Event)("ajaxError"),t)})))},getCapabilities:()=>(pt.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,At.getCapabilities)()),hideMenus:ft,registerMenu:function(t,e,n,o){e.addClass("menu");const i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(ht)?ft():(ht&&ft(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),ht=e,mt=t))}))},showMenu:(t,e,n)=>{e.is(ht)||(ft(),ht=e,mt=t,e.trigger(new(c().Event)("beforeShow")),e.show(),e.trigger(new(c().Event)("afterShow")),m.default.isFunction(n)&&n())},unregisterMenu:(t,e)=>{e.is(ht)&&ft(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:Q.EZ,encodePath:Q.Ec,dirname:Q.XX,isSamePath:Q.Mg,joinPaths:Q.RQ,getHost:()=>window.location.host,getHostName:()=>window.location.hostname,getPort:()=>window.location.port,getProtocol:()=>window.location.protocol.split(":")[0],getCanonicalLocale:bt.aj,getLocale:bt.Kd,getLanguage:bt.G3,buildQueryString:t=>t?c().map(t,(function(t,e){let n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):"",parseQueryString:t=>{let e,n;const o={};let i;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const a=t.replace(/\+/g,"%20").split("&");for(let t=0;t<a.length;t++){const r=a[t];e=r.indexOf("="),n=e>=0?[r.substr(0,e),r.substr(e+1)]:[r],n.length&&(i=decodeURIComponent(n[0]),i&&(o[i]=n.length>1?decodeURIComponent(n[1]):null))}return o},msg:yt,Notification:v,PasswordConfirmation:Et,Plugins:Bt,theme:Pt,Util:jt,debug:_t,filePath:d.generateFilePath,generateUrl:d.generateUrl,get:(Mt=window,t=>{const e=t.split("."),n=e.pop();for(let t=0;t<e.length;t++)if(!(Mt=Mt[e[t]]))return!1;return Mt[n]}),set:(t=>(e,n)=>{const o=e.split("."),i=o.pop();for(let e=0;e<o.length;e++)t[o[e]]||(t[o[e]]={}),t=t[o[e]];return t[i]=n,n})(window),getRootPath:d.getRootUrl,imagePath:d.imagePath,redirect:t=>{window.location=t},reload:()=>{window.location.reload()},requestToken:lt(),linkTo:d.linkTo,linkToOCS:(t,e)=>(0,d.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/",linkToRemote:d.generateRemoteUrl,linkToRemoteBase:t=>(0,d.getRootUrl)()+"/remote.php/"+t,webroot:Nt};var Mt;(0,u.Ld)("csrf-token-update",(t=>{OC.requestToken=t.token,Ut.info("OC.requestToken changed",t.token)}));var Lt=i(79954),Ft=i(45994),Rt=i(25108);let Qt=null;const Gt=async()=>{try{const t=await(async()=>{const t=(0,d.generateUrl)("/csrftoken");return(await c().get(t)).token})();ct(t)}catch(t){Rt.error("session heartbeat failed",t)}},Ht=()=>{const t=setInterval(Gt,1e3*(()=>{let t=NaN;return Qt.session_lifetime&&(t=Math.floor(Qt.session_lifetime/2)),Math.min(86400,Math.max(60,isNaN(t)?900:t))})());return Rt.info("session heartbeat polling started"),t};var Kt=i(20144),Yt=i(85750),qt=i.n(Yt);const Wt={name:"ContactsMenu",components:{Contacts:i(12050).Z,NcHeaderMenu:qt()},data:()=>({contactsMenu:null}),mounted(){this.contactsMenu=new St.ContactsMenu({el:"#contactsmenu-menu"})},methods:{handleOpen(){var t;null===(t=this.contactsMenu)||void 0===t||t.loadContacts()}}};var Zt=i(93379),Jt=i.n(Zt),Vt=i(7795),Xt=i.n(Vt),$t=i(90569),te=i.n($t),ee=i(3565),ne=i.n(ee),oe=i(19216),ie=i.n(oe),ae=i(44589),re=i.n(ae),se=i(50893),le={};le.styleTagTransform=re(),le.setAttributes=ne(),le.insert=te().bind(null,"head"),le.domAPI=Xt(),le.insertStyleElement=ie(),Jt()(se.Z,le),se.Z&&se.Z.locals&&se.Z.locals;var ce=i(51900);const ue=(0,ce.Z)(Wt,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{attrs:{id:"contactsmenu","aria-label":t.t("core","Search contacts")},on:{open:t.handleOpen},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("Contacts",{attrs:{size:20}})]},proxy:!0}])},[t._v(" "),e("div",{attrs:{id:"contactsmenu-menu"}})])}),[],!1,null,"1563c388",null).exports;var de=i(12945),Ae=i.n(de),pe=i(76212),he=i.n(pe);const me={name:"AppMenu",components:{NcActions:Ae(),NcActionLink:he()},data:()=>({apps:(0,Lt.j)("core","apps",{}),appLimit:0,observer:null}),computed:{appList(){return Object.values(this.apps)},mainAppList(){return this.appList.slice(0,this.appLimit)},popoverAppList(){return this.appList.slice(this.appLimit)},appLabel:()=>e=>e.name+(e.active?" ("+t("core","Currently open")+")":"")+(e.unread>0?" ("+n("core","{count} notification","{count} notifications",e.unread,{count:e.unread})+")":"")},mounted(){this.observer=new ResizeObserver(this.resize),this.observer.observe(this.$el),this.resize(),(0,u.Ld)("nextcloud:app-menu.refresh",this.setApps)},beforeDestroy(){this.observer.disconnect(),(0,u.r1)("nextcloud:app-menu.refresh",this.setApps)},methods:{setNavigationCounter(t,e){this.$set(this.apps[t],"unread",e)},setApps(t){let{apps:e}=t;this.apps=e},resize(){const t=this.$el.offsetWidth;let e=Math.floor(t/50)-1;1==this.appList.length-e&&e--,e<1&&(e=0),this.appLimit=e}}};var fe=i(22919),ge={};ge.styleTagTransform=re(),ge.setAttributes=ne(),ge.insert=te().bind(null,"head"),ge.domAPI=Xt(),ge.insertStyleElement=ie(),Jt()(fe.Z,ge),fe.Z&&fe.Z.locals&&fe.Z.locals;const ve=(0,ce.Z)(me,(function(){var t=this,e=t._self._c;return e("nav",{staticClass:"app-menu"},[e("ul",{staticClass:"app-menu-main"},t._l(t.mainAppList,(function(n){return e("li",{key:n.id,staticClass:"app-menu-entry",class:{"app-menu-entry__active":n.active},attrs:{"data-app-id":n.id}},[e("a",{class:{"has-unread":n.unread>0},attrs:{href:n.href,"aria-label":t.appLabel(n),title:n.name,"aria-current":!!n.active&&"page",target:n.target?"_blank":void 0,rel:n.target?"noopener noreferrer":void 0}},[e("img",{attrs:{src:n.icon,alt:""}}),t._v(" "),e("div",{staticClass:"app-menu-entry--label"},[t._v("\n\t\t\t\t\t"+t._s(n.name)+"\n\t\t\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])])])})),0),t._v(" "),e("NcActions",{staticClass:"app-menu-more",attrs:{"aria-label":t.t("core","More apps")}},t._l(t.popoverAppList,(function(n){return e("NcActionLink",{key:n.id,staticClass:"app-menu-popover-entry",attrs:{"aria-label":t.appLabel(n),"aria-current":!!n.active&&"page",href:n.href},scopedSlots:t._u([{key:"icon",fn:function(){return[e("div",{staticClass:"app-icon",class:{"has-unread":n.unread>0}},[e("img",{attrs:{src:n.icon,alt:""}})])]},proxy:!0}],null,!0)},[t._v("\n\t\t\t"+t._s(n.name)+"\n\t\t\t"),n.unread>0?e("span",{staticClass:"hidden-visually unread-counter"},[t._v(t._s(n.unread))]):t._e()])})),1)],1)}),[],!1,null,"c8c7b3a6",null).exports;var Ce=i(75925),be=i.n(Ce),we=i(64192),ye=i.n(we);const xe=(0,Lt.j)("core","versionHash",""),ke={name:"UserMenuEntry",components:{NcLoadingIcon:ye()},props:{id:{type:String,required:!0},name:{type:String,required:!0},href:{type:String,required:!0},active:{type:Boolean,required:!0},icon:{type:String,required:!0}},data:()=>({loading:!1}),computed:{cachedIcon(){return"".concat(this.icon,"?v=").concat(xe)}},methods:{handleClick(){this.loading=!0}}};var Ee=i(88951),Be={};Be.styleTagTransform=re(),Be.setAttributes=ne(),Be.insert=te().bind(null,"head"),Be.domAPI=Xt(),Be.insertStyleElement=ie(),Jt()(Ee.Z,Be),Ee.Z&&Ee.Z.locals&&Ee.Z.locals;const Pe=(0,ce.Z)(ke,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"menu-entry",attrs:{id:t.id}},[t.href?e("a",{class:{active:t.active},attrs:{href:t.href},on:{click:function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.handleClick.apply(null,arguments)}}},[t.loading?e("NcLoadingIcon",{staticClass:"menu-entry__loading-icon",attrs:{size:18}}):e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")],1):e("button",[e("img",{attrs:{src:t.cachedIcon,alt:""}}),t._v("\n\t\t"+t._s(t.name)+"\n\t")])])}),[],!1,null,"6e59d13c",null).exports,Oe=(0,Lt.j)("core","settingsNavEntries",[]),Te={name:"UserMenu",components:{NcAvatar:be(),NcHeaderMenu:qt(),UserMenuEntry:Pe},data(){var t;return{settingsNavEntries:Oe,userId:null===(t=(0,Ft.ts)())||void 0===t?void 0:t.uid}},mounted(){(0,u.j8)("core:user-menu:mounted")}};var De=i(87252),Ie={};Ie.styleTagTransform=re(),Ie.setAttributes=ne(),Ie.insert=te().bind(null,"head"),Ie.domAPI=Xt(),Ie.insertStyleElement=ie(),Jt()(De.Z,Ie),De.Z&&De.Z.locals&&De.Z.locals;const je=(0,ce.Z)(Te,(function(){var t=this,e=t._self._c;return e("NcHeaderMenu",{staticClass:"user-menu",attrs:{id:"user-menu","aria-label":t.t("core","Open settings menu")},scopedSlots:t._u([{key:"trigger",fn:function(){return[e("NcAvatar",{staticClass:"user-menu__avatar",attrs:{"disable-menu":!0,"disable-tooltip":!0,user:t.userId}})]},proxy:!0}])},[t._v(" "),e("nav",{staticClass:"user-menu__nav",attrs:{"aria-label":t.t("core","Settings menu")}},[e("ul",t._l(t.settingsNavEntries,(function(n){return e("UserMenuEntry",t._b({key:n.id},"UserMenuEntry",n,!1))})),1)])])}),[],!1,null,"202f7644",null).exports,_e=()=>{setInterval((()=>{c()(".live-relative-timestamp").each((function(){const t=parseInt(c()(this).attr("data-timestamp"),10);c()(this).text(kt()(t).fromNow())}))}),3e4)},ze={zh:"zh-cn",zh_Hans:"zh-cn",zh_Hans_CN:"zh-cn",zh_Hans_HK:"zh-cn",zh_Hans_MO:"zh-cn",zh_Hans_SG:"zh-cn",zh_Hant:"zh-hk",zh_Hant_HK:"zh-hk",zh_Hant_MO:"zh-mo",zh_Hant_TW:"zh-tw"};let Ne=St.getLocale();Object.prototype.hasOwnProperty.call(ze,Ne)&&(Ne=ze[Ne]),kt().locale(Ne);const Ue=()=>{if(c()(window).on("unload.main",(()=>{St._unloadCalled=!0})),c()(window).on("beforeunload.main",(()=>{setTimeout((()=>{St._userIsNavigatingAway=!0,setTimeout((()=>{St._unloadCalled||(St._userIsNavigatingAway=!1)}),1e4)}),1)})),c()(document).on("ajaxError.main",(function(t,e,n){n&&n.allowAuthErrors||St._processAjaxError(e)})),(()=>{if((()=>{try{Qt=(0,Lt.j)("core","config")}catch(t){Qt=St.config}})(),(()=>{if(!Qt.auto_logout||!(0,Ft.ts)())return;let t=Date.now();window.addEventListener("mousemove",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("touchstart",(e=>{t=Date.now(),localStorage.setItem("lastActive",t)})),window.addEventListener("storage",(e=>{"lastActive"===e.key&&(t=e.newValue)})),setInterval((function(){const e=Date.now()-1e3*Qt.session_lifetime;if(t<e){Rt.info("Inactivity timout reached, logging out");const t=(0,d.generateUrl)("/logout")+"?requesttoken="+encodeURIComponent(lt());window.location=t}}),1e3)})(),void 0!==Qt.session_keepalive&&!Qt.session_keepalive)return void Rt.info("session heartbeat disabled");let t=Ht();window.addEventListener("online",(async()=>{Rt.info("browser is online again, resuming heartbeat"),t=Ht();try{await Gt(),Rt.info("session token successfully updated after resuming network"),(0,u.j8)("networkOnline",{success:!0})}catch(t){Rt.error("could not update session token after resuming network",t),(0,u.j8)("networkOnline",{success:!1})}})),window.addEventListener("offline",(()=>{Rt.info("browser is offline, stopping heartbeat"),(0,u.j8)("networkOffline",{}),clearInterval(t),Rt.info("session heartbeat polling stopped")}))})(),St.registerMenu(c()("#expand"),c()("#expanddiv"),!1,!0),c()(document).on("mouseup.closemenus",(t=>{const e=c()(t.target);if(e.closest(".menu").length||e.closest(".menutoggle").length)return!1;St.hideMenus()})),(()=>{Kt.default.mixin({methods:{t:bt.Iu,n:bt.uN}});const t=document.getElementById("header-left__appmenu");if(!t)return;const e=new(Kt.default.extend(ve))({}).$mount(t);Object.assign(OC,{setNavigationCounter(t,n){e.setNavigationCounter(t,n)}})})(),(()=>{const t=document.getElementById("user-menu");t&&new Kt.default({el:t,render:t=>t(je)})})(),(()=>{const t=document.getElementById("contactsmenu");t&&new Kt.default({el:t,render:t=>t(ue)})})(),c()("#app-navigation").length&&!c()("html").hasClass("lte9")&&!c()("#app-content").hasClass("no-snapper")){const t=new Snap({element:document.getElementById("app-content"),disable:"right",maxPosition:300,minDragDistance:100});c()("#app-content").prepend('<div id="app-navigation-toggle" class="icon-menu" style="display:none" tabindex="0"></div>');let e=!1;t.on("animating",(()=>{e=!0})),t.on("animated",(()=>{e=!1})),t.on("start",(()=>{e=!0})),t.on("end",(()=>{e=!1})),t.on("open",(()=>{r.attr("aria-hidden","false")})),t.on("close",(()=>{r.attr("aria-hidden","true")}));const n=t.open,o=t.close,i=()=>{e||"closed"!==t.state().state||n("left")},a=()=>{e||"closed"===t.state().state||o()};window.TESTING||(t.open=()=>{m.default.defer(i)},t.close=()=>{m.default.defer(a)}),c()("#app-navigation-toggle").click((e=>{"left"!==t.state().state&&t.open()})),c()("#app-navigation-toggle").keypress((e=>{"left"===t.state().state?t.close():t.open()}));const r=c()("#app-navigation");r.attr("aria-hidden","true"),r.delegate("a, :button","click",(e=>{const n=c()(e.target);n.is(".app-navigation-noclose")||n.closest(".app-navigation-noclose").length||n.is(".app-navigation-entry-utils-menu-button")||n.closest(".app-navigation-entry-utils-menu-button").length||n.is(".add-new")||n.closest(".add-new").length||n.is("#app-settings")||n.closest("#app-settings").length||t.close()}));let s=!1,l=!0,u=!1;St.allowNavigationBarSlideGesture=()=>{l=!0,u&&(t.enable(),s=!0,u=!1)},St.disallowNavigationBarSlideGesture=()=>{if(l=!1,s){const e=!0;t.disable(e),s=!1,u=!0}};const d=()=>{c()(window).width()>1024?(r.attr("aria-hidden","false"),t.close(),t.disable(),s=!1,u=!1):l?(t.enable(),s=!0,u=!1):u=!0};c()(window).resize(m.default.debounce(d,250)),d()}_e(),Et.init()};i(49226),i(41704),i(78312),i(22634);var Se,Me=i(3682),Le=i(25108);c().prototype.tooltip=(Se=c().prototype.tooltip,function(t){try{return Se.call(this,t)}catch(e){if(e instanceof TypeError&&"destroy"===t)return void 0===window.TESTING&&Le.error("Deprecated call $.tooltip('destroy') has been deprecated and should be removed"),Se.call(this,"dispose");if(e instanceof TypeError&&"fixTitle"===t)return void 0===window.TESTING&&Le.error("Deprecated call $.tooltip('fixTitle') has been deprecated and should be removed"),Se.call(this,"_fixTitle")}});var Fe=i(42152),Re=i.n(Fe),Qe=i(99560),Ge=i.n(Qe);i(18553),i(34140),i(75693),i(99205),i(38554);const He=/(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/gi;function Ke(t){return this.formatLinksRich(t)}function Ye(t){return this.formatLinksPlain(t)}function qe(t){return t.replace(He,(function(t,e,n,o,i){let a=o;return n?"http://"===n&&(a=n+o):n="https://",e+'<a class="external" target="_blank" rel="noopener noreferrer" href="'+n+o+'">'+a+"</a>"+i}))}function We(t){const e=c()("<div></div>").html(t);return e.find("a").each((function(){const t=c()(this);t.html(t.attr("href"))})),e.html()}var Ze=i(25108);function Je(e){const n=(e=e||{}).dismiss||{};c().ajax({type:"GET",url:e.url||(0,d.generateOcsUrl)("core/whatsnew?format=json"),success:e.success||function(e,o,i){!function(e,n,o,i){if(Ze.debug("querying Whats New data was successful: "+n),Ze.debug(e),200!==o.status)return;let a,r,s,l;const c=document.createElement("div");c.classList.add("popovermenu","open","whatsNewPopover","menu-left");const u=document.createElement("ul");a=document.createElement("li"),r=document.createElement("span"),r.className="menuitem",s=document.createElement("span"),s.innerText=t("core","New in")+" "+e.ocs.data.product,s.className="caption",r.appendChild(s),l=document.createElement("span"),l.className="icon-close",l.onclick=function(){Ve(e.ocs.data.version,i)},r.appendChild(l),a.appendChild(r),u.appendChild(a);for(const t in e.ocs.data.whatsNew.regular){const n=e.ocs.data.whatsNew.regular[t];a=document.createElement("li"),r=document.createElement("span"),r.className="menuitem",l=document.createElement("span"),l.className="icon-checkmark",r.appendChild(l),s=document.createElement("p"),s.innerHTML=m.default.escape(n),r.appendChild(s),a.appendChild(r),u.appendChild(a)}m.default.isUndefined(e.ocs.data.changelogURL)||(a=document.createElement("li"),r=document.createElement("a"),r.href=e.ocs.data.changelogURL,r.rel="noreferrer noopener",r.target="_blank",l=document.createElement("span"),l.className="icon-link",r.appendChild(l),s=document.createElement("span"),s.innerText=t("core","View changelog"),r.appendChild(s),a.appendChild(r),u.appendChild(a)),c.appendChild(u),document.body.appendChild(c)}(e,o,i,n)},error:e.error||Xe})}function Ve(t,e){e=e||{},c().ajax({type:"POST",url:e.url||(0,d.generateOcsUrl)("core/whatsnew"),data:{version:encodeURIComponent(t)},success:e.success||$e,error:e.error||tn}),c()(".whatsNewPopover").remove()}function Xe(t,e,n){Ze.debug("querying Whats New Data resulted in an error: "+e+n),Ze.debug(t)}function $e(t){}function tn(t){Ze.debug("dismissing Whats New data resulted in an error: "+t)}const en={disableKeyboardShortcuts:()=>(0,Lt.j)("theming","shortcutsDisabled",!1),setPageHeading:function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}};var nn=i(95573),on=i.n(nn);const an={},rn={},sn={},ln={loadScript(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(rn,n)?Promise.resolve():(rn[n]=!0,new Promise((function(n,o){const i=OC.filePath(t,"js",e),a=document.createElement("script");a.src=i,a.setAttribute("nonce",btoa(OC.requestToken)),a.onload=()=>n(),a.onerror=()=>o(new Error("Failed to load script from ".concat(i))),document.head.appendChild(a)})))},loadStylesheet(t,e){const n=t+e;return Object.prototype.hasOwnProperty.call(sn,n)?Promise.resolve():(sn[n]=!0,new Promise((function(n,o){const i=OC.filePath(t,"css",e),a=document.createElement("link");a.href=i,a.type="text/css",a.rel="stylesheet",a.onload=()=>n(),a.onerror=()=>o(new Error("Failed to load stylesheet from ".concat(i))),document.head.appendChild(a)})))}},cn={success:(t,e)=>(0,f.s$)(t,e),warning:(t,e)=>(0,f.K2)(t,e),error:(t,e)=>(0,f.x2)(t,e),info:(t,e)=>(0,f.JQ)(t,e),message:(t,e)=>(0,f.PV)(t,e)},un={Accessibility:en,AppConfig:a,Collaboration:{registerType(t,e){an[t]=e},trigger:t=>an[t].action(),getTypes:()=>Object.keys(an),getIcon:t=>an[t].typeIconClass||"",getLabel:t=>on()(an[t].typeString||t),getLink:(t,e)=>void 0!==an[t]?an[t].link(e):""},Comments:r,InitialState:{loadState:Lt.j},Loader:ln,Toast:cn,WhatsNew:s};var dn=i(25108);const An=function(){void 0===window.TESTING&&dn.warn.apply(dn,arguments)},pn=(t,e,n)=>{(Array.isArray(t)?t:[t]).forEach((t=>{void 0!==window[t]&&delete window[t],Object.defineProperty(window,t,{get:()=>(An(n?"".concat(t," is deprecated: ").concat(n):"".concat(t," is deprecated")),e())})}))};window._=m.default,pn(["$","jQuery"],(()=>c()),"The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own."),pn("autosize",(()=>Me.Z),"please ship your own, this will be removed in Nextcloud 20"),pn("Backbone",(()=>I()),"please ship your own, this will be removed in Nextcloud 20"),pn(["Clipboard","ClipboardJS"],(()=>Re()),"please ship your own, this will be removed in Nextcloud 20"),window.dav=j.dav,pn("Handlebars",(()=>Ct()),"please ship your own, this will be removed in Nextcloud 20"),pn("md5",(()=>Ge()),"please ship your own, this will be removed in Nextcloud 20"),pn("moment",(()=>kt()),"please ship your own, this will be removed in Nextcloud 20"),window.OC=St,pn("initCore",(()=>Ue),"this is an internal function"),pn("oc_appswebroots",(()=>St.appswebroots),"use OC.appswebroots instead, this will be removed in Nextcloud 20"),pn("oc_config",(()=>St.config),"use OC.config instead, this will be removed in Nextcloud 20"),pn("oc_current_user",(()=>St.getCurrentUser().uid),"use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20"),pn("oc_debug",(()=>St.debug),"use OC.debug instead, this will be removed in Nextcloud 20"),pn("oc_defaults",(()=>St.theme),"use OC.theme instead, this will be removed in Nextcloud 20"),pn("oc_isadmin",St.isUserAdmin,"use OC.isUserAdmin() instead, this will be removed in Nextcloud 20"),pn("oc_requesttoken",(()=>lt()),"use OC.requestToken instead, this will be removed in Nextcloud 20"),pn("oc_webroot",(()=>St.webroot),"use OC.getRootPath() instead, this will be removed in Nextcloud 20"),pn("OCDialogs",(()=>St.dialogs),"use OC.dialogs instead, this will be removed in Nextcloud 20"),window.OCP=un,window.OCA=nt,c().fn.select2=((t,e,n)=>{const o=t,i=function(){return An("The ".concat("select2"," library is deprecated! It will be removed in nextcloud ").concat(19,".")),o.apply(this,arguments)};return Object.assign(i,o),i})(c().fn.select2),window.t=m.default.bind(St.L10N.translate,St.L10N),window.n=m.default.bind(St.L10N.translatePlural,St.L10N),c().fn.avatar=function(t,e,n,o,i,a){const r=function(t){t.imageplaceholder("?"),t.css("background-color","#b9b9b9")};if(void 0!==t&&(t=String(t)),void 0!==a&&(a=String(a)),void 0===e&&(e=this.height()>0?this.height():this.data("size")>0?this.data("size"):64),this.height(e),this.width(e),void 0===t){if(void 0===this.data("user"))return void r(this);t=this.data("user")}t=String(t).replace(/\//g,"");const s=this;let l;l=t===St.getCurrentUser().uid?St.generateUrl("/avatar/{user}/{size}?v={version}",{user:t,size:Math.ceil(e*window.devicePixelRatio),version:oc_userconfig.avatar.version}):St.generateUrl("/avatar/{user}/{size}",{user:t,size:Math.ceil(e*window.devicePixelRatio)});const c=new Image;c.onload=function(){s.clearimageplaceholder(),s.append(c),"function"==typeof i&&i()},c.onerror=function(){s.clearimageplaceholder(),void 0!==a?s.imageplaceholder(t,a):r(s),"function"==typeof i&&i()},e<32?s.addClass("icon-loading-small"):s.addClass("icon-loading"),c.width=e,c.height=e,c.src=l,c.alt=""};const hn=i(47078);c().fn.contactsMenu=function(e,n,o){if(-1===[0,4,6].indexOf(n))return;const i=this;o.append('<div class="menu popovermenu menu-left hidden contactsmenu-popover"> <ul> <li> <a> <span class="icon-loading-small"></span> </a> </li> </ul></div>');const a=o.find("div.contactsmenu-popover");i.on("click keydown",(function(o){if(ot(o)){if(!a.hasClass("hidden"))return a.addClass("hidden"),void a.hide();a.removeClass("hidden"),a.show(),a.hasClass("loaded")||(a.addClass("loaded"),c().ajax(St.generateUrl("/contactsmenu/findOne"),{method:"POST",data:{shareType:n,shareWith:e}}).then((function(e){let n;a.find("ul").find("li").addClass("hidden"),n=e.topAction?[e.topAction].concat(e.actions):[{hyperlink:"#",title:t("core","No action available")}],n.forEach((function(t){a.find("ul").append(hn(t))})),i.trigger("load")}),(function(e){let n;a.find("ul").find("li").addClass("hidden"),n=404===e.status?t("core","No action available"):t("core","Error fetching contact actions"),a.find("ul").append(hn({hyperlink:"#",title:n})),i.trigger("loaderror",e)})))}})),c()(document).click((function(t){const e=a.has(t.target).length>0;let n=i.has(t.target).length>0;i.each((function(){c()(this).is(t.target)&&(n=!0)})),e||n||(a.addClass("hidden"),a.hide())}))},c().fn.exists=function(){return this.length>0},c().fn.filterAttr=function(t,e){return this.filter((function(){return c()(this).attr(t)===e}))};var mn=i(15303);c().widget("oc.ocdialog",{options:{width:"auto",height:"auto",closeButton:!0,closeOnEscape:!0,closeCallback:null,modal:!1},_create(){const t=this;this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,height:this.element[0].style.height},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this.$dialog=c()('<div class="oc-dialog"></div>').attr({tabIndex:-1,role:"dialog"}).insertBefore(this.element),this.$dialog.append(this.element.detach()),this.element.removeAttr("title").addClass("oc-dialog-content").appendTo(this.$dialog),1===t.element.find("input").length&&t.element.find("input").on("keydown",(function(e){if(ot(e)&&t.$buttonrow){const e=t.$buttonrow.find("button.primary");e&&!e.prop("disabled")&&e.click()}})),this.$dialog.css({display:"inline-block",position:"fixed"}),this.enterCallback=null,c()(document).on("keydown keyup",(function(e){if(e.target===t.$dialog.get(0)||0!==t.$dialog.find(c()(e.target)).length)return 27===e.keyCode&&"keydown"===e.type&&t.options.closeOnEscape?(e.stopImmediatePropagation(),t.close(),!1):13===e.keyCode?(e.stopImmediatePropagation(),null!==t.enterCallback?(t.enterCallback(),e.preventDefault(),!1):"keyup"===e.type&&(e.preventDefault(),!1)):void 0})),this._setOptions(this.options),this._createOverlay(),this._useFocusTrap()},_init(){this._trigger("open")},_setOption(e,n){const o=this;switch(e){case"title":if(this.$title)this.$title.text(n);else{const t=c()('<h2 class="oc-dialog-title">'+n+"</h2>");this.$title=t.prependTo(this.$dialog)}this._setSizes();break;case"buttons":if(this.$buttonrow)this.$buttonrow.empty();else{const t=c()('<div class="oc-dialog-buttonrow"></div>');this.$buttonrow=t.appendTo(this.$dialog)}1===n.length?this.$buttonrow.addClass("onebutton"):2===n.length?this.$buttonrow.addClass("twobuttons"):3===n.length&&this.$buttonrow.addClass("threebuttons"),c().each(n,(function(t,e){const n=c()("<button>").text(e.text);e.classes&&n.addClass(e.classes),e.defaultButton&&(n.addClass("primary"),o.$defaultButton=n),o.$buttonrow.append(n),n.on("click keydown",(function(t){ot(t)&&e.click.apply(o.element[0],arguments)}))})),this.$buttonrow.find("button").on("focus",(function(t){o.$buttonrow.find("button").removeClass("primary"),c()(this).addClass("primary")})),this._setSizes();break;case"style":void 0!==n.buttons&&this.$buttonrow.addClass(n.buttons);break;case"closeButton":if(n){const e=c()('<button class="oc-dialog-close"></button>');e.attr("aria-label",t("core",'Close "{dialogTitle}" dialog',{dialogTitle:this.$title||this.options.title})),this.$dialog.prepend(e),e.on("click keydown",(function(t){ot(t)&&(o.options.closeCallback&&o.options.closeCallback(),o.close())}))}else this.$dialog.find(".oc-dialog-close").remove();break;case"width":this.$dialog.css("width",n);break;case"height":this.$dialog.css("height",n);break;case"close":this.closeCB=n}c().Widget.prototype._setOption.apply(this,arguments)},_setOptions(t){c().Widget.prototype._setOptions.apply(this,arguments)},_setSizes(){let t=0;this.$title&&(t+=this.$title.outerHeight(!0)),this.$buttonrow&&(t+=this.$buttonrow.outerHeight(!0)),this.element.css({height:"calc(100% - "+t+"px)"})},_createOverlay(){if(!this.options.modal)return;const t=this;let e=c()("#content");0===e.length&&(e=c()(".content")),this.overlay=c()("<div>").addClass("oc-dialog-dim").appendTo(e),this.overlay.on("click keydown keyup",(function(e){e.target!==t.$dialog.get(0)&&0===t.$dialog.find(c()(e.target)).length&&(e.preventDefault(),e.stopPropagation())}))},_destroyOverlay(){this.options.modal&&this.overlay&&(this.overlay.off("click keydown keyup"),this.overlay.remove(),this.overlay=null)},_useFocusTrap(){Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]});const t=this.$dialog[0];this.focusTrap=(0,mn.createFocusTrap)(t,{allowOutsideClick:!0,trapStack:window._nc_focus_trap,fallbackFocus:t}),this.focusTrap.activate()},_clearFocusTrap(){var t;null===(t=this.focusTrap)||void 0===t||t.deactivate(),this.focusTrap=null},widget(){return this.$dialog},setEnterCallback(t){this.enterCallback=t},unsetEnterCallback(){this.enterCallback=null},close(){this._clearFocusTrap(),this._destroyOverlay();const t=this;setTimeout((function(){t._trigger("close",t)}),200),t.$dialog.remove(),this.destroy()},destroy(){this.$title&&this.$title.remove(),this.$buttonrow&&this.$buttonrow.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),this.element.removeClass("oc-dialog-content").css(this.originalCss).detach().insertBefore(this.$dialog),this.$dialog.remove()}});var fn=i(25108);const gn={init(t,e,n){this.vars=t,this.options=c().extend({},this.options,e),this.elem=n;const o=this;if("function"==typeof this.options.escapeFunction){const t=Object.keys(this.vars);for(let e=0;e<t.length;e++)"string"==typeof this.vars[t[e]]&&(this.vars[t[e]]=o.options.escapeFunction(this.vars[t[e]]))}const i=this._build(this.vars);return c()(i)},_build(t){const e="text/template"===this.elem.attr("type")?this.elem.html():this.elem.get(0).outerHTML;try{return e.replace(/{([^{}]*)}/g,(function(e,n){const o=t[n];return"string"==typeof o||"number"==typeof o?o:e}))}catch(t){fn.error(t,"data:",e)}},options:{escapeFunction:on()}};c().fn.octemplate=function(t,e){if(t=t||{},this.length)return Object.create(gn).init(t,e,this)};var vn=i(25108);const Cn=t=>{var e=t.toLowerCase();function n(t,e,n){this.r=t,this.g=e,this.b=n}function o(t,e,o){var i=[];i.push(e);for(var a=function(t,e){var n=new Array(3);return n[0]=(e[1].r-e[0].r)/t,n[1]=(e[1].g-e[0].g)/t,n[2]=(e[1].b-e[0].b)/t,n}(t,[e,o]),r=1;r<t;r++){var s=parseInt(e.r+a[0]*r),l=parseInt(e.g+a[1]*r),c=parseInt(e.b+a[2]*r);i.push(new n(s,l,c))}return i}null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=Ge()(e)),e=e.replace(/[^0-9a-f]/g,"");const i=new n(182,70,157),a=new n(221,203,85),r=new n(0,130,201),s=o(6,i,a),l=o(6,a,r),c=o(6,r,i);return s.concat(l).concat(c)[function(t,e){for(var n=0,o=[],i=0;i<t.length;i++)o.push(parseInt(t.charAt(i),16)%16);for(var a in o)n+=o[a];return parseInt(parseInt(n)%18)}(e)]};String.prototype.toRgb=function(){return vn.warn("String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22."),Cn(this)},c().fn.imageplaceholder=function(t,e,n){e=e||t;var o=Cn(t);this.css("background-color","rgb("+o.r+", "+o.g+", "+o.b+")");var i=this.height()||n||32;if(this.height(i),this.width(i),this.css("color","#fff"),this.css("font-weight","normal"),this.css("text-align","center"),this.css("line-height",i+"px"),this.css("font-size",.55*i+"px"),null!==t&&t.length){var a=e.replace(/\s+/g," ").trim().split(" ",2).map((t=>t[0].toUpperCase())).join("");this.html(a)}},c().fn.clearimageplaceholder=function(){this.css("background-color",""),this.css("color",""),this.css("font-weight",""),this.css("text-align",""),this.css("line-height",""),this.css("font-size",""),this.html(""),this.removeClass("icon-loading"),this.removeClass("icon-loading-small")},c()(document).on("ajaxSend",(function(t,e,n){!1===n.crossDomain&&(e.setRequestHeader("requesttoken",lt()),e.setRequestHeader("OCS-APIREQUEST","true"))})),c().fn.selectRange=function(t,e){return this.each((function(){if(this.setSelectionRange)this.focus(),this.setSelectionRange(t,e);else if(this.createTextRange){const n=this.createTextRange();n.collapse(!0),n.moveEnd("character",e),n.moveStart("character",t),n.select()}}))},c().fn.extend({showPassword(t){const e={fn:null,args:{}};e.fn=t;const n=function(t,e){e.val(t.val())},o=function(t,e,o){t.is(":checked")?(n(e,o),o.show(),e.hide()):(n(o,e),o.hide(),e.show())};return this.each((function(){const t=c()(this),i=c()(t.data("typetoggle")),a=function(t){const e=c()(t),n=c()("<input />");return n.attr({type:"text",class:e.attr("class"),style:e.attr("style"),size:e.attr("size"),name:e.attr("name")+"-clone",tabindex:e.attr("tabindex"),autocomplete:"off"}),void 0!==e.attr("placeholder")&&n.attr("placeholder",e.attr("placeholder")),n}(t);a.insertAfter(t),e.fn&&(e.args.input=t,e.args.checkbox=i,e.args.clone=a),i.bind("click",(function(){o(i,t,a)})),t.bind("keyup",(function(){n(t,a)})),a.bind("keyup",(function(){n(a,t),t.trigger("keyup")})),a.bind("blur",(function(){t.trigger("focusout")})),o(i,t,a),a.closest("form").submit((function(t){a.prop("type","password")})),e.fn&&e.fn(e.args)}))}}),c().ui.autocomplete.prototype._resizeMenu=function(){this.menu.element.outerWidth(this.element.outerWidth())};var bn=i(12448),wn={};wn.styleTagTransform=re(),wn.setAttributes=ne(),wn.insert=te().bind(null,"head"),wn.domAPI=Xt(),wn.insertStyleElement=ie(),Jt()(bn.Z,wn),bn.Z&&bn.Z.locals&&bn.Z.locals;var yn=i(72417),xn={};xn.styleTagTransform=re(),xn.setAttributes=ne(),xn.insert=te().bind(null,"head"),xn.domAPI=Xt(),xn.insertStyleElement=ie(),Jt()(yn.Z,xn),yn.Z&&yn.Z.locals&&yn.Z.locals,c().ajaxSetup({contents:{script:!1}}),c().globalEval=function(){},window.addEventListener("DOMContentLoaded",(function(){Ue(),window.history.pushState?window.onpopstate=_.bind(St.Util.History._onPopState,St.Util.History):c()(window).on("hashchange",_.bind(St.Util.History._onPopState,St.Util.History))}))},12448:(t,e,n)=>{"use strict";n.d(e,{Z:()=>b});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a),s=n(61667),l=n.n(s),c=new URL(n(58188),n.b),u=new URL(n(40337),n.b),d=new URL(n(33178),n.b),A=new URL(n(12081),n.b),p=new URL(n(47868),n.b),h=r()(i()),m=l()(c),f=l()(u),g=l()(d),v=l()(A),C=l()(p);h.push([t.id,".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary-element);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url("+m+")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("+m+")}.ui-state-active .ui-icon{background-image:url("+m+")}.ui-state-highlight .ui-icon{background-image:url("+f+")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("+g+")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url("+v+") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("+C+") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary-element);color:var(--color-primary-element-text);border:1px solid var(--color-primary-element-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery-ui-fixes.scss"],names:[],mappings:"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,6CAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,6CAAA,CACA,uCAAA,CACA,kDAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA",sourcesContent:["/* Component containers\n----------------------------------*/\n.ui-widget-content {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-main-text);\n}\n.ui-widget-content a {\n\tcolor: var(--color-main-text);\n}\n.ui-widget-header {\n\tborder: none;\n\tcolor: var(--color-main-text);\n\tbackground-image: none;\n}\n.ui-widget-header a {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction states\n----------------------------------*/\n.ui-state-default,\n.ui-widget-content .ui-state-default,\n.ui-widget-header .ui-state-default {\n\tborder: 1px solid var(--color-border);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: #555;\n}\n.ui-state-default a,\n.ui-state-default a:link,\n.ui-state-default a:visited {\n\tcolor: #555;\n}\n.ui-state-hover,\n.ui-widget-content .ui-state-hover,\n.ui-widget-header .ui-state-hover,\n.ui-state-focus,\n.ui-widget-content .ui-state-focus,\n.ui-widget-header .ui-state-focus {\n\tborder: 1px solid #ddd;\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-hover a,\n.ui-state-hover a:hover,\n.ui-state-hover a:link,\n.ui-state-hover a:visited {\n\tcolor: var(--color-main-text);\n}\n.ui-state-active,\n.ui-widget-content .ui-state-active,\n.ui-widget-header .ui-state-active {\n\tborder: 1px solid var(--color-primary-element);\n\tbackground: var(--color-main-background) none;\n\tfont-weight: bold;\n\tcolor: var(--color-main-text);\n}\n.ui-state-active a,\n.ui-state-active a:link,\n.ui-state-active a:visited {\n\tcolor: var(--color-main-text);\n}\n\n/* Interaction Cues\n----------------------------------*/\n.ui-state-highlight,\n.ui-widget-content .ui-state-highlight,\n.ui-widget-header .ui-state-highlight {\n\tborder: 1px solid var(--color-main-background);\n\tbackground: var(--color-main-background) none;\n\tcolor: var(--color-text-light);\n\tfont-weight: 600;\n}\n.ui-state-highlight a,\n.ui-widget-content .ui-state-highlight a,\n.ui-widget-header .ui-state-highlight a {\n\tcolor: var(--color-text-lighter);\n}\n.ui-state-error,\n.ui-widget-content .ui-state-error,\n.ui-widget-header .ui-state-error {\n\tborder: var(--color-error);\n\tbackground: var(--color-error) none;\n\tcolor: #ffffff;\n}\n.ui-state-error a,\n.ui-widget-content .ui-state-error a,\n.ui-widget-header .ui-state-error a {\n\tcolor: #ffffff;\n}\n.ui-state-error-text,\n.ui-widget-content .ui-state-error-text,\n.ui-widget-header .ui-state-error-text {\n\tcolor: #ffffff;\n}\n\n/* Icons\n----------------------------------*/\n.ui-state-default .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-hover .ui-icon,\n.ui-state-focus .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-active .ui-icon {\n\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\n}\n.ui-state-highlight .ui-icon {\n\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\n}\n.ui-state-error .ui-icon,\n.ui-state-error-text .ui-icon {\n\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\n}\n.ui-icon.ui-icon-none {\n\tdisplay: none;\n}\n\n/* Misc visuals\n----------------------------------*/\n/* Overlays */\n.ui-widget-overlay {\n\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\n\topacity: .5;\n}\n.ui-widget-shadow {\n\tmargin: -5px 0 0 -5px;\n\tpadding: 5px;\n\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\n\topacity: .2;\n\tborder-radius: 5px;\n}\n\n/* Tabs customizations */\n.ui-tabs {\n\tborder: none;\n\n\t.ui-tabs-nav.ui-corner-all {\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t.ui-tabs-nav {\n\t\tbackground: none;\n\t\tmargin-bottom: 15px;\n\n\t\t.ui-state-default {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid transparent;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 0 !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\n\t\t.ui-state-hover,\n\t\t.ui-state-active {\n\t\t\tborder: none;\n\t\t\tborder-bottom: 1px solid var(--color-main-text);\n\t\t\tcolor: var(--color-main-text);\n\t\t\ta, a:link, a:hover, a:visited {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t\t.ui-state-active {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n}\n\n/* Select menus */\n.ui-autocomplete {\n\t&.ui-menu {\n\t\tpadding: 0;\n\n\t\t/* scrolling starts from three items,\n\t\t * so hide overflow and scrollbars for a clean layout */\n\t\t&.item-count-1,\n\t\t&.item-count-2 {\n\t\t\toverflow-y: hidden;\n\t\t}\n\n\t\t.ui-menu-item a {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t\tdisplay: block;\n\t\t\tpadding: 4px 4px 4px 14px;\n\n\t\t\t&.ui-state-focus, &.ui-state-active {\n\t\t\t\tbox-shadow: inset 4px 0 var(--color-primary-element);\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ui-widget-content {\n\t\tbackground: var(--color-main-background);\n\t\tborder-top: none;\n\t}\n\n\t&.ui-corner-all {\n\t\tborder-radius: 0;\n\t\tborder-bottom-left-radius: var(--border-radius);\n\t\tborder-bottom-right-radius: var(--border-radius);\n\t}\n\n\t.ui-state-hover, .ui-widget-content .ui-state-hover,\n\t.ui-widget-header .ui-state-hover,\n\t.ui-state-focus,\n\t.ui-widget-content .ui-state-focus,\n\t.ui-widget-header .ui-state-focus {\n\t\tborder: 1px solid transparent;\n\t\tbackground: inherit;\n\t\tcolor: var(--color-primary-element);\n\t}\n\n\t.ui-menu-item {\n\t\ta {\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t}\n}\n\n.ui-button.primary {\n\tbackground-color: var(--color-primary-element);\n\tcolor: var(--color-primary-element-text);\n\tborder: 1px solid var(--color-primary-element-text);\n}\n\n// fix ui-buttons on hover\n.ui-button:hover {\n font-weight:bold !important;\n}\n\n\n/* DRAGGABLE */\n.ui-draggable-handle,\n.ui-selectable {\n\ttouch-action: pan-y;\n}\n"],sourceRoot:""}]);const b=h},72417:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}","",{version:3,sources:["webpack://./core/src/jquery/css/jquery.ocdialog.scss"],names:[],mappings:"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA",sourcesContent:[".oc-dialog {\n\tbackground: var(--color-main-background);\n\tcolor: var(--color-text-light);\n\tborder-radius: var(--border-radius-large);\n\tbox-shadow: 0 0 30px var(--color-box-shadow);\n\tpadding: 24px;\n\tz-index: 10000;\n\tfont-size: 100%;\n\tbox-sizing: border-box;\n\tmin-width: 200px;\n\ttop: 50%;\n\tleft: 50%;\n\ttransform: translate(-50%, -50%);\n\tmax-height: calc(100% - 20px);\n\tmax-width: calc(100% - 20px);\n\toverflow: auto;\n}\n.oc-dialog-title {\n\tbackground: var(--color-main-background);\n}\n.oc-dialog-buttonrow {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground: transparent;\n\tright: 0;\n\tbottom: 0;\n\tpadding: 0;\n\tpadding-top: 10px;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\n\n\t&.twobuttons {\n justify-content: space-between;\n }\n\n\t&.onebutton,\n\t&.twobuttons.aside {\n\t\tjustify-content: flex-end;\n\t}\n\n\tbutton {\n\t white-space: nowrap;\n\t overflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\theight: 44px;\n\t\tmin-width: 44px;\n\t}\n}\n\n.oc-dialog-close {\n\tposition: absolute;\n\twidth: 44px !important;\n\theight: 44px !important;\n\ttop: 4px;\n\tright: 4px;\n\tpadding: 25px;\n\tbackground: var(--icon-close-dark) no-repeat center;\n\topacity: .5;\n\tborder-radius: var(--border-radius-pill);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 1;\n\t}\n}\n\n.oc-dialog-dim {\n\tbackground-color: #000;\n\topacity: .2;\n\tz-index: 9999;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\nbody.theme--dark .oc-dialog-dim {\n\topacity: .8;\n}\n\n.oc-dialog-content {\n\twidth: 100%;\n\tmax-width: 550px;\n}\n\n.oc-dialog.password-confirmation {\n\t.oc-dialog-content {\n\t\twidth: auto;\n\n\t\tinput[type=password] {\n\t\t\twidth: 100%;\n\t\t}\n\t\tlabel {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=r},22919:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,'.app-menu[data-v-c8c7b3a6]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-c8c7b3a6]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-c8c7b3a6]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-c8c7b3a6]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-c8c7b3a6]::before{content:" ";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-element-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-c8c7b3a6]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-c8c7b3a6]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-element-text);position:relative}.app-menu-main .app-menu-entry img[data-v-c8c7b3a6]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-c8c7b3a6]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-element-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:hover,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-c8c7b3a6]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-c8c7b3a6]:hover,.app-menu-main[data-v-c8c7b3a6]:focus-within,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:hover,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:focus{opacity:1}.app-menu-main:hover img[data-v-c8c7b3a6],.app-menu-main:focus-within img[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:hover img[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:focus img[data-v-c8c7b3a6]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main:focus-within .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-c8c7b3a6]{opacity:1;bottom:0}.app-menu-main[data-v-c8c7b3a6]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-c8c7b3a6]::before,.app-menu-main[data-v-c8c7b3a6]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-c8c7b3a6]::before,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-c8c7b3a6]::before,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-c8c7b3a6]::before{opacity:0}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-primary-element-text)}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-c8c7b3a6]{position:relative;height:44px;filter:var(--background-invert-if-bright)}.app-menu-popover-entry .app-icon.has-unread[data-v-c8c7b3a6]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-c8c7b3a6]{width:20px;height:20px;padding:15px}.has-unread[data-v-c8c7b3a6]::after{content:"";width:8px;height:8px;background-color:var(--color-primary-element-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-c8c7b3a6]{display:none}',"",{version:3,sources:["webpack://./core/src/components/AppMenu.vue"],names:[],mappings:"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,kDAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,uCAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,qFACC,uCAAA,CAEA,2FACC,SAAA,CACA,yCAAA,CAIF,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,yCAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAtJgB,CAuJhB,WAvJgB,CAwJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,kDAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA",sourcesContent:['\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: " ";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-element-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t/* Remove all background and align text color if not expanded */\n\t&:not([aria-expanded="true"]) {\n\t\tcolor: var(--color-primary-element-text);\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t\tbackground-color: transparent !important;\n\t\t}\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\t\t/* Icons are bright so invert them if bright color theme == bright background is used */\n\t\tfilter: var(--background-invert-if-bright);\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: "";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-element-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n'],sourceRoot:""}]);const s=r},88951:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}","",{version:3,sources:["webpack://./core/src/components/UserMenu/UserMenuEntry.vue"],names:[],mappings:"AAEC,2CACC,gBAAA",sourcesContent:["\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n"],sourceRoot:""}]);const s=r},50893:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}","",{version:3,sources:["webpack://./core/src/views/ContactsMenu.vue"],names:[],mappings:"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA",sourcesContent:["\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=r},87252:(t,e,n)=>{"use strict";n.d(e,{Z:()=>s});var o=n(87537),i=n.n(o),a=n(23645),r=n.n(a)()(i());r.push([t.id,".user-menu[data-v-202f7644]{margin-right:12px}.user-menu[data-v-202f7644] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-202f7644] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-element)}.user-menu[data-v-202f7644] .header-menu__carret{display:none !important}.user-menu[data-v-202f7644] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-202f7644]:active,.user-menu__avatar[data-v-202f7644]:focus,.user-menu__avatar[data-v-202f7644]:hover{border:2px solid var(--color-primary-element-text)}.user-menu__nav[data-v-202f7644]{display:flex;width:100%}.user-menu__nav ul[data-v-202f7644]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-202f7644] li a,.user-menu__nav ul[data-v-202f7644] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-202f7644] li a:hover,.user-menu__nav ul[data-v-202f7644] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-202f7644] li a:focus-visible,.user-menu__nav ul[data-v-202f7644] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary-element) !important;outline:none !important}.user-menu__nav ul[data-v-202f7644] li a:active,.user-menu__nav ul[data-v-202f7644] li a.active,.user-menu__nav ul[data-v-202f7644] li button:active,.user-menu__nav ul[data-v-202f7644] li button.active{background-color:var(--color-primary-element-light)}.user-menu__nav ul[data-v-202f7644] li a span,.user-menu__nav ul[data-v-202f7644] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-202f7644] li a img,.user-menu__nav ul[data-v-202f7644] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-202f7644] li a img,.user-menu__nav ul[data-v-202f7644] li a svg,.user-menu__nav ul[data-v-202f7644] li button img,.user-menu__nav ul[data-v-202f7644] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-202f7644] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}","",{version:3,sources:["webpack://./core/src/views/UserMenu.vue"],names:[],mappings:"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,6CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,kDAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,kEAAA,CACA,uBAAA,CAGD,0MAEC,mDAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA",sourcesContent:["\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-element-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary-element) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const s=r},10944:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?a:""},2:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?a:""},3:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatarLabel"):a,e))+'">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=32" class="avatar" srcset="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=32 1x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+"&size=64 2x, "+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatar"):a,e))+'&size=128 4x" alt="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"avatarLabel"):a,e))+'">\n'},7:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?a:""},8:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?a:""},9:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(a=null!=e?r(e,"contact"):e)?r(a,"profileUrl"):a,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileTitle"):a,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"topAction"):a,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?a:"")},14:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"profileUrl"):a,e))+'">\n\t\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'" aria-label="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"topAction"):a,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?a:""},19:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"hyperlink"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n \t\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"topAction"):a)?l(a,"title"):a,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"fullName"):a,e))+'</div>\n\t\t<div class="last-message">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"lastMessage"):a,e))+'</div>\n\t\t<div class="email-address">'+s(r(null!=(a=null!=e?l(e,"contact"):e)?l(a,"emailAddresses"):a,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var a,r=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"hyperlink"):a,e))+'" aria-label="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'" title="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n\t<img src="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"icon"):a,e))+'" alt="'+s(r(null!=(a=null!=(a=null!=e?l(e,"contact"):e)?l(a,"secondAction"):a)?l(a,"title"):a,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(a=r(n,"each").call(null!=e?e:t.nullContext||{},null!=(a=null!=e?r(e,"contact"):e)?r(a,"actions"):a,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?a:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(a=null!=(a=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?a:s)===l?a.call(r,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):a)+'">\n\t\t\t\t\t<img src="'+c(typeof(a=null!=(a=u(n,"icon")||(null!=e?u(e,"icon"):e))?a:s)===l?a.call(r,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):a)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(a=null!=(a=u(n,"title")||(null!=e?u(e,"title"):e))?a:s)===l?a.call(r,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):a)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"avatar"):a,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"profileUrl"):a,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasTwoActions"):a,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?a:"")+(null!=(a=s(n,"if").call(r,null!=(a=null!=e?s(e,"contact"):e)?s(a,"hasManyActions"):a,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?a:"")},useData:!0})},20421:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"couldNotLoadText")||(null!=e?r(e,"couldNotLoadText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):a)+"</h2>\n</div>\n"},useData:!0})},34083:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"noContactsFoundText")||(null!=e?r(e,"noContactsFoundText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):a)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?a:s)===l?a.call(r,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?a:s)===l?a.call(r,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):a)+"</a></div>\n"},5:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(a=r(n,"if").call(null!=e?e:t.nullContext||{},null!=e?r(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?a:""},6:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):a)+'">'+c(typeof(a=null!=(a=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?a:s)===l?a.call(r,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):a)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(a=s(n,"unless").call(r,null!=(a=null!=e?s(e,"contacts"):e)?s(a,"length"):a,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?a:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(a=s(n,"if").call(r,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?a:"")},useData:!0})},95386:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"loadingText")||(null!=e?r(e,"loadingText"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):a)+"</h2>\n</div>\n"},useData:!0})},66115:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):a)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(a=null!=(a=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?a:s)===l?a.call(r,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):a)+'" value="'+c(typeof(a=null!=(a=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?a:s)===l?a.call(r,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):a)+'">\n<div class="content">\n</div>\n'},useData:!0})},47078:(t,e,n)=>{var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var a,r=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<img src="'+t.escapeExpression("function"==typeof(a=null!=(a=r(n,"icon")||(null!=e?r(e,"icon"):e))?a:t.hooks.helperMissing)?a.call(null!=e?e:t.nullContext||{},{name:"icon",hash:{},data:i,loc:{start:{line:3,column:24},end:{line:3,column:32}}}):a)+'">'},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var a,r,s=null!=e?e:t.nullContext||{},l=t.hooks.helperMissing,c="function",u=t.escapeExpression,d=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<li>\n\t<a href="'+u(typeof(r=null!=(r=d(n,"hyperlink")||(null!=e?d(e,"hyperlink"):e))?r:l)===c?r.call(s,{name:"hyperlink",hash:{},data:i,loc:{start:{line:2,column:10},end:{line:2,column:23}}}):r)+'">\n\t\t'+(null!=(a=d(n,"if").call(s,null!=e?d(e,"icon"):e,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:3,column:41}}}))?a:"")+"\n\t\t<span>"+u(typeof(r=null!=(r=d(n,"title")||(null!=e?d(e,"title"):e))?r:l)===c?r.call(s,{name:"title",hash:{},data:i,loc:{start:{line:4,column:8},end:{line:4,column:17}}}):r)+"</span>\n\t</a>\n</li>\n"},useData:!0})},46700:(t,e,n)=>{var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=a(t);return n(e)}function a(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=a,t.exports=i,i.id=46700},12081:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAQMAAAC2MCouAAAABlBMVEVmZmZ1dXVT6N0BAAAAUklEQVQIW8XNsQ3AIAwF0bMoKBmBURgNj8YojEBJEcXwu2yQ+p507BTeWDnozPISjPpY4O0W6CqEisUtiG/EF+IT8YG4fznihnhCPCNeEK/89D1Gd22TNOyXVAAAAABJRU5ErkJggg=="},47868:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAABkAQMAAADOquA5AAAAA1BMVEUAAACnej3aAAAADklEQVQYGWMYBaOABgAAAlgAARbiVEcAAAAASUVORK5CYII="},58188:t=>{"use strict";t.exports="data:image/png;base64,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"},33178:t=>{"use strict";t.exports="data:image/png;base64,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"},40337:t=>{"use strict";t.exports="data:image/png;base64,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"},98811:t=>{"use strict";t.exports="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"},27373:t=>{"use strict";t.exports="data:image/gif;base64,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"}},i={};function a(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=o,e=[],a.O=(t,n,o,i)=>{if(!n){var r=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||r>=i)&&Object.keys(a.O).every((t=>a.O[t](n[l])))?n.splice(l--,1):(s=!1,i<r&&(r=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var n in e)a.o(e,n)&&!a.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=2943,(()=>{a.b=document.baseURI||self.location.href;var t={2943:0};a.O.j=e=>0===t[e];var e=(e,n)=>{var o,i,r=n[0],s=n[1],l=n[2],c=0;if(r.some((e=>0!==t[e]))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(l)var u=l(a)}for(e&&e(n);c<r.length;c++)i=r[c],a.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return a.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),a.nc=void 0;var r=a.O(void 0,[7874],(()=>a(12376)));r=a.O(r)})(); +//# sourceMappingURL=core-main.js.map?v=055ee01c3d8b78922e44
\ No newline at end of file diff --git a/dist/core-main.js.map b/dist/core-main.js.map index 8a30764031d..3494224527e 100644 --- a/dist/core-main.js.map +++ b/dist/core-main.js.map @@ -1 +1 @@ -{"version":3,"file":"core-main.js?v=060aef75f1e3deb2a78c","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/session-heartbeat.js","webpack:///nextcloud/core/src/views/ContactsMenu.vue","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/ContactsMenu.vue?41d6","webpack://nextcloud/./core/src/views/ContactsMenu.vue?1de5","webpack://nextcloud/./core/src/views/ContactsMenu.vue?f71b","webpack://nextcloud/./core/src/components/AppMenu.vue?d0fd","webpack:///nextcloud/core/src/components/AppMenu.vue","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/AppMenu.vue?86da","webpack://nextcloud/./core/src/components/AppMenu.vue?95cf","webpack://nextcloud/./core/src/views/UserMenu.vue?4b20","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?6a6f","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?a480","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?4de1","webpack:///nextcloud/core/src/views/UserMenu.vue","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UserMenu.vue?3de1","webpack://nextcloud/./core/src/views/UserMenu.vue?5d6d","webpack:///nextcloud/core/src/init.js","webpack:///nextcloud/core/src/components/MainMenu.js","webpack:///nextcloud/core/src/components/UserMenu.js","webpack:///nextcloud/core/src/components/ContactsMenu.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/OCP/comments.js","webpack:///nextcloud/core/src/OCP/whatsnew.js","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/core/src/OCP/collaboration.js","webpack:///nextcloud/core/src/OCP/loader.js","webpack:///nextcloud/core/src/OCP/toast.js","webpack:///nextcloud/core/src/OCP/index.js","webpack:///nextcloud/core/src/globals.js","webpack:///nextcloud/core/src/jquery/avatar.js","webpack:///nextcloud/core/src/jquery/contactsmenu.js","webpack:///nextcloud/core/src/jquery/exists.js","webpack:///nextcloud/core/src/jquery/filterattr.js","webpack:///nextcloud/core/src/jquery/ocdialog.js","webpack:///nextcloud/core/src/jquery/octemplate.js","webpack:///nextcloud/core/src/jquery/placeholder.js","webpack:///nextcloud/core/src/jquery/requesttoken.js","webpack:///nextcloud/core/src/jquery/selectrange.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/jquery/ui-fixes.js","webpack://nextcloud/./core/src/jquery/css/jquery-ui-fixes.scss?a4c2","webpack://nextcloud/./core/src/jquery/css/jquery.ocdialog.scss?5718","webpack:///nextcloud/core/src/jquery/index.js","webpack:///nextcloud/core/src/main.js","webpack:///nextcloud/core/src/jquery/css/jquery-ui-fixes.scss","webpack:///nextcloud/core/src/jquery/css/jquery.ocdialog.scss","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=style&index=0&id=1fb55f7a&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/core/src/jquery/contactsmenu/jquery_entry.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport Notification from './notification.js'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index.js'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig.js'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing.js'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index.js'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\n\t\tconst fullName = this.get('fullName')\n\t\tif (this.get('avatar') && fullName) {\n\t\t\tthis.set('avatarLabel', t('core', 'Avatar of {fullName}', { fullName }))\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/** @type {string} */\n\ttagName: 'ul',\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {string} */\n\ttagName: 'li',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {string} options.el\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {string} */\n\t$el: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {string} options.el - the selector of the element to render the menu in\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = $(options.el)\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el,\n\t\t})\n\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis.loadContacts(searchTerm)\n\t\t}, this)\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\tloadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search.js'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport OCA from '../OCA/index.js'\nimport { isA11yActivation } from '../Util/a11y.js'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$(options?.target ?? 'body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname, type)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', '.crumb', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path, type)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir, type) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t\tthis._changeButtonsText(type, '')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tif (showHiddenInput?.value !== \"1\") {\n\t\t\tfiles = files.filter(function (file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append('<nav></nav>')\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<li data-dir=\"{dir}\" tabindex=\"0\"><a class=\"{classList}\">{name}</a></li>').addClass('crumb')\n\t\tvar $breadcrumbs = $('<ul class=\"breadcrumb\"></ul>')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t$breadcrumbs.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: t('core', 'Home'),\n\t\t\tclassList: 'icon-home'\n\t\t}, { escapeFunction: null }).addClass('crumb svg crumbhome').prependTo($breadcrumbs)\n\n\n\t\tthis.$dirTree.find('> nav').prepend($breadcrumbs)\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir, type)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'), type)\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken.js'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index.js'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader.js'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport { appSettings } from './appsettings.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport ContactsMenu from './contactsmenu.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC/index.js'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken.js'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval\n\t\t)\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tsetInterval(function() {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"contactsmenu\"\n\t\t:aria-label=\"t('core', 'Search contacts')\"\n\t\t@open=\"handleOpen\">\n\t\t<template #trigger>\n\t\t\t<Contacts :size=\"20\" />\n\t\t</template>\n\t\t<div id=\"contactsmenu-menu\" />\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport Contacts from 'vue-material-design-icons/Contacts.vue'\n\nimport OC from '../OC/index.js'\n\nexport default {\n\tname: 'ContactsMenu',\n\n\tcomponents: {\n\t\tContacts,\n\t\tNcHeaderMenu,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcontactsMenu: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\t// eslint-disable-next-line no-new\n\t\tthis.contactsMenu = new OC.ContactsMenu({\n\t\t\tel: '#contactsmenu-menu',\n\t\t})\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\tthis.contactsMenu?.loadContacts()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContactsMenu.vue?vue&type=template&id=1563c388&scoped=true&\"\nimport script from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1563c388\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{attrs:{\"id\":\"contactsmenu\",\"aria-label\":_vm.t('core', 'Search contacts')},on:{\"open\":_vm.handleOpen},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Contacts',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{attrs:{\"id\":\"contactsmenu-menu\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('nav',{staticClass:\"app-menu\"},[_c('ul',{staticClass:\"app-menu-main\"},_vm._l((_vm.mainAppList),function(app){return _c('li',{key:app.id,staticClass:\"app-menu-entry\",class:{ 'app-menu-entry__active': app.active },attrs:{\"data-app-id\":app.id}},[_c('a',{class:{ 'has-unread': app.unread > 0 },attrs:{\"href\":app.href,\"aria-label\":_vm.appLabel(app),\"title\":app.name,\"aria-current\":app.active ? 'page' : false,\"target\":app.target ? '_blank' : undefined,\"rel\":app.target ? 'noopener noreferrer' : undefined}},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"app-menu-entry--label\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])])])}),0),_vm._v(\" \"),_c('NcActions',{staticClass:\"app-menu-more\",attrs:{\"aria-label\":_vm.t('core', 'More apps')}},_vm._l((_vm.popoverAppList),function(app){return _c('NcActionLink',{key:app.id,staticClass:\"app-menu-popover-entry\",attrs:{\"aria-label\":_vm.appLabel(app),\"aria-current\":app.active ? 'page' : false,\"href\":app.href},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"app-icon\",class:{ 'has-unread': app.unread > 0 }},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}})])]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<nav class=\"app-menu\">\n\t\t<ul class=\"app-menu-main\">\n\t\t\t<li v-for=\"app in mainAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:data-app-id=\"app.id\"\n\t\t\t\tclass=\"app-menu-entry\"\n\t\t\t\t:class=\"{ 'app-menu-entry__active': app.active }\">\n\t\t\t\t<a :href=\"app.href\"\n\t\t\t\t\t:class=\"{ 'has-unread': app.unread > 0 }\"\n\t\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t\t:title=\"app.name\"\n\t\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t\t:target=\"app.target ? '_blank' : undefined\"\n\t\t\t\t\t:rel=\"app.target ? 'noopener noreferrer' : undefined\">\n\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t<div class=\"app-menu-entry--label\">\n\t\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t\t<NcActions class=\"app-menu-more\" :aria-label=\"t('core', 'More apps')\">\n\t\t\t<NcActionLink v-for=\"app in popoverAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t:href=\"app.href\"\n\t\t\t\tclass=\"app-menu-popover-entry\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<div class=\"app-icon\" :class=\"{ 'has-unread': app.unread > 0 }\">\n\t\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t{{ app.name }}\n\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t</NcActionLink>\n\t\t</NcActions>\n\t</nav>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\n\nexport default {\n\tname: 'AppMenu',\n\tcomponents: {\n\t\tNcActions, NcActionLink,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tapps: loadState('core', 'apps', {}),\n\t\t\tappLimit: 0,\n\t\t\tobserver: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\tappList() {\n\t\t\treturn Object.values(this.apps)\n\t\t},\n\t\tmainAppList() {\n\t\t\treturn this.appList.slice(0, this.appLimit)\n\t\t},\n\t\tpopoverAppList() {\n\t\t\treturn this.appList.slice(this.appLimit)\n\t\t},\n\t\tappLabel() {\n\t\t\treturn (app) => app.name\n\t\t\t\t+ (app.active ? ' (' + t('core', 'Currently open') + ')' : '')\n\t\t\t\t+ (app.unread > 0 ? ' (' + n('core', '{count} notification', '{count} notifications', app.unread, { count: app.unread }) + ')' : '')\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.observer = new ResizeObserver(this.resize)\n\t\tthis.observer.observe(this.$el)\n\t\tthis.resize()\n\t\tsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tbeforeDestroy() {\n\t\tthis.observer.disconnect()\n\t\tunsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tmethods: {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tthis.$set(this.apps[id], 'unread', counter)\n\t\t},\n\t\tsetApps({ apps }) {\n\t\t\tthis.apps = apps\n\t\t},\n\t\tresize() {\n\t\t\tconst availableWidth = this.$el.offsetWidth\n\t\t\tlet appCount = Math.floor(availableWidth / 50) - 1\n\t\t\tconst popoverAppCount = this.appList.length - appCount\n\t\t\tif (popoverAppCount === 1) {\n\t\t\t\tappCount--\n\t\t\t}\n\t\t\tif (appCount < 1) {\n\t\t\t\tappCount = 0\n\t\t\t}\n\t\t\tthis.appLimit = appCount\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: \" \";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t/* Remove all background and align text color if not expanded */\n\t&:not([aria-expanded=\"true\"]) {\n\t\tcolor: var(--color-primary-text);\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t\tbackground-color: transparent !important;\n\t\t}\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\t\t/* Icons are bright so invert them if bright color theme == bright background is used */\n\t\tfilter: var(--background-invert-if-bright);\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: \"\";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=1fb55f7a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=1fb55f7a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenu.vue?vue&type=template&id=1fb55f7a&scoped=true&\"\nimport script from \"./AppMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMenu.vue?vue&type=style&index=0&id=1fb55f7a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fb55f7a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{staticClass:\"user-menu\",attrs:{\"id\":\"user-menu\",\"aria-label\":_vm.t('core', 'Open settings menu')},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcAvatar',{staticClass:\"user-menu__avatar\",attrs:{\"disable-menu\":true,\"disable-tooltip\":true,\"user\":_vm.userId}})]},proxy:true}])},[_vm._v(\" \"),_c('nav',{staticClass:\"user-menu__nav\",attrs:{\"aria-label\":_vm.t('core', 'Settings menu')}},[_c('ul',_vm._l((_vm.settingsNavEntries),function(entry){return _c('UserMenuEntry',_vm._b({key:entry.id},'UserMenuEntry',entry,false))}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li :id=\"id\"\n\t\tclass=\"menu-entry\">\n\t\t<a v-if=\"href\"\n\t\t\t:href=\"href\"\n\t\t\t:class=\"{ active }\"\n\t\t\t@click.exact=\"handleClick\">\n\t\t\t<NcLoadingIcon v-if=\"loading\"\n\t\t\t\tclass=\"menu-entry__loading-icon\"\n\t\t\t\t:size=\"18\" />\n\t\t\t<img v-else :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</a>\n\t\t<button v-else>\n\t\t\t<img :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\n\nconst versionHash = loadState('core', 'versionHash', '')\n\nexport default {\n\tname: 'UserMenuEntry',\n\n\tcomponents: {\n\t\tNcLoadingIcon,\n\t},\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcachedIcon() {\n\t\t\treturn `${this.icon}?v=${versionHash}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\thandleClick() {\n\t\t\tthis.loading = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenuEntry.vue?vue&type=template&id=6e59d13c&scoped=true&\"\nimport script from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e59d13c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"menu-entry\",attrs:{\"id\":_vm.id}},[(_vm.href)?_c('a',{class:{ active: _vm.active },attrs:{\"href\":_vm.href},on:{\"click\":function($event){if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.handleClick.apply(null, arguments)}}},[(_vm.loading)?_c('NcLoadingIcon',{staticClass:\"menu-entry__loading-icon\",attrs:{\"size\":18}}):_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")],1):_c('button',[_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"user-menu\"\n\t\tclass=\"user-menu\"\n\t\t:aria-label=\"t('core', 'Open settings menu')\">\n\t\t<template #trigger>\n\t\t\t<NcAvatar class=\"user-menu__avatar\"\n\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t:user=\"userId\" />\n\t\t</template>\n\t\t<nav class=\"user-menu__nav\"\n\t\t\t:aria-label=\"t('core', 'Settings menu')\">\n\t\t\t<ul>\n\t\t\t\t<UserMenuEntry v-for=\"entry in settingsNavEntries\"\n\t\t\t\t\tv-bind=\"entry\"\n\t\t\t\t\t:key=\"entry.id\" />\n\t\t\t</ul>\n\t\t</nav>\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport UserMenuEntry from '../components/UserMenu/UserMenuEntry.vue'\n\nconst settingsNavEntries = loadState('core', 'settingsNavEntries', [])\n\nexport default {\n\tname: 'UserMenu',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcHeaderMenu,\n\t\tUserMenuEntry,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsettingsNavEntries,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t}\n\t},\n\n\tmounted() {\n\t\temit('core:user-menu:mounted')\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=6a818bbc&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=6a818bbc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a818bbc\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author nacho <nacho@ownyourbits.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\n\nimport { initSessionHeartBeat } from './session-heartbeat.js'\nimport OC from './OC/index.js'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu.js'\nimport { setUp as setUpMainMenu } from './components/MainMenu.js'\nimport { setUp as setUpUserMenu } from './components/UserMenu.js'\nimport PasswordConfirmation from './OC/password-confirmation.js'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('<div id=\"app-navigation-toggle\" class=\"icon-menu\" style=\"display:none\" tabindex=\"0\"></div>')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('open', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t})\n\t\tsnapper.on('close', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n\tPasswordConfirmation.init()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport AppMenu from './AppMenu.vue'\n\nexport const setUp = () => {\n\n\tVue.mixin({\n\t\tmethods: {\n\t\t\tt,\n\t\t\tn,\n\t\t},\n\t})\n\n\tconst container = document.getElementById('header-left__appmenu')\n\tif (!container) {\n\t\t// no container, possibly we're on a public page\n\t\treturn\n\t}\n\tconst AppMenuApp = Vue.extend(AppMenu)\n\tconst appMenu = new AppMenuApp({}).$mount(container)\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tappMenu.setNavigationCounter(id, counter)\n\t\t},\n\t})\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport UserMenu from '../views/UserMenu.vue'\n\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('user-menu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(UserMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport ContactsMenu from '../views/ContactsMenu.vue'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('contactsmenu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(ContactsMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n *\n * This is a copy of the backend regex in IURLGenerator, make sure to adjust both when changing\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '<a class=\"external\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"' + protocol + url + '\">' + linkText + '</a>' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('<div></div>').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function {Function} action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig.js'\nimport * as Comments from './comments.js'\nimport * as WhatsNew from './whatsnew.js'\n\nimport Accessibility from './accessibility.js'\nimport Collaboration from './collaboration.js'\nimport Loader from './loader.js'\nimport Toast from './toast.js'\n\n/** @namespace OCP */\nexport default {\n\tAccessibility,\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init.js'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport 'jquery-migrate/dist/jquery-migrate.min.js'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui.js'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport autosize from 'autosize'\nimport Backbone from 'backbone'\nimport './Polyfill/tooltip.js'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap.js'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index.js'\nimport OCP from './OCP/index.js'\nimport OCA from './OCA/index.js'\nimport { getToken as getRequestToken } from './OC/requesttoken.js'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tconsole.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('autosize', () => autosize, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC/index.js'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any <div></div>\n * Here I'm using <div class=\"avatardiv\"></div> as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC/index.js'\nimport { isA11yActivation } from '../Util/a11y.js'\n\nconst LIST = ''\n\t+ '<div class=\"menu popovermenu menu-left hidden contactsmenu-popover\">'\n\t+ ' <ul>'\n\t+ ' <li>'\n\t+ ' <a>'\n\t+ ' <span class=\"icon-loading-small\"></span>'\n\t+ ' </a>'\n\t+ ' </li>'\n\t+ ' </ul>'\n\t+ '</div>'\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.on('click keydown', function(event) {\n\t\tif (!isA11yActivation(event)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(OC.generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { createFocusTrap } from 'focus-trap'\nimport { isA11yActivation } from '../Util/a11y.js'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('<div class=\"oc-dialog\"></div>')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\t// Activate the primary button on enter if there is a single input\n\t\tif (self.element.find('input').length === 1) {\n\t\t\tconst $input = self.element.find('input')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tif (self.$buttonrow) {\n\t\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t\t$button.click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t\tthis._useFocusTrap()\n\t},\n\t_init() {\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('<h2 class=\"oc-dialog-title\">'\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '</h2>')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('<div class=\"oc-dialog-buttonrow\"></div>')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('<button>').text(val.text)\n\t\t\t\tif (val.classes) {\n\t\t\t\t\t$button.addClass(val.classes)\n\t\t\t\t}\n\t\t\t\tif (val.defaultButton) {\n\t\t\t\t\t$button.addClass('primary')\n\t\t\t\t\tself.$defaultButton = $button\n\t\t\t\t}\n\t\t\t\tself.$buttonrow.append($button)\n\t\t\t\t$button.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tval.click.apply(self.element[0], arguments)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.$buttonrow.find('button')\n\t\t\t\t.on('focus', function(event) {\n\t\t\t\t\tself.$buttonrow.find('button').removeClass('primary')\n\t\t\t\t\t$(this).addClass('primary')\n\t\t\t\t})\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'style':\n\t\t\tif (value.buttons !== undefined) {\n\t\t\t\tthis.$buttonrow.addClass(value.buttons)\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'closeButton':\n\t\t\tif (value) {\n\t\t\t\tconst $closeButton = $('<button class=\"oc-dialog-close\"></button>')\n\t\t\t\t$closeButton.attr('aria-label', t('core', 'Close \"{dialogTitle}\" dialog', { dialogTitle: this.$title || this.options.title }))\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\t\tself.close()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('<div>')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.appendTo(contentDiv)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\t_useFocusTrap() {\n\t\t// Create global stack if undefined\n\t\tObject.assign(window, { _nc_focus_trap: window._nc_focus_trap || [] })\n\n\t\tconst dialogElement = this.$dialog[0]\n\t\tthis.focusTrap = createFocusTrap(dialogElement, {\n\t\t\tallowOutsideClick: true,\n\t\t\ttrapStack: window._nc_focus_trap,\n\t\t\tfallbackFocus: dialogElement,\n\t\t})\n\n\t\tthis.focusTrap.activate()\n\t},\n\t_clearFocusTrap() {\n\t\tthis.focusTrap?.deactivate()\n\t\tthis.focusTrap = null\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._clearFocusTrap()\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '<p>Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.</p>'\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '<p>Welcome back {user}</p>';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * <script id=\"contactListItemTemplate\" type=\"text/template\">\n * <tr class=\"contact\" data-id=\"{id}\">\n * <td class=\"name\">\n * <input type=\"checkbox\" name=\"id\" value=\"{id}\" /><span class=\"nametext\">{name}</span>\n * </td>\n * <td class=\"email\">\n * <a href=\"mailto:{email}\">{email}</a>\n * </td>\n * <td class=\"phone\">{phone}</td>\n * </tr>\n * </script>\n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t}\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * @copyright 2016-2018 John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright 2013 Morris Jobke <morris.jobke@gmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Sergey Shliakhov <husband.sergey@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n * <div id=\"albumart\"></div>\n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">T</div>\n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">A</div>\n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tconsole.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken.js'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t}\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport './avatar.js'\nimport './contactsmenu.js'\nimport './exists.js'\nimport './filterattr.js'\nimport './ocdialog.js'\nimport './octemplate.js'\nimport './placeholder.js'\nimport './requesttoken.js'\nimport './selectrange.js'\nimport './showpassword.js'\nimport './ui-fixes.js'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport 'core-js/stable/index.js'\nimport 'regenerator-runtime/runtime.js'\nimport './Polyfill/index.js'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js'\n\nimport './globals.js'\nimport './jquery/index.js'\nimport { initCore } from './init.js'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\t$(window).on('hashchange', _.bind(OC.Util.History._onPopState, OC.Util.History))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-active .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-highlight .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary);color:var(--color-primary-text);border:1px solid var(--color-primary-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,qCAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,qCAAA,CACA,+BAAA,CACA,0CAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA\",\"sourcesContent\":[\"/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px 4px 4px 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-bottom-left-radius: var(--border-radius);\\n\\t\\tborder-bottom-right-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary);\\n\\tcolor: var(--color-primary-text);\\n\\tborder: 1px solid var(--color-primary-text);\\n}\\n\\n// fix ui-buttons on hover\\n.ui-button:hover {\\n font-weight:bold !important;\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\".oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 10000;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\twidth: 44px !important;\\n\\theight: 44px !important;\\n\\ttop: 4px;\\n\\tright: 4px;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-dark) no-repeat center;\\n\\topacity: .5;\\n\\tborder-radius: var(--border-radius-pill);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 9999;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-menu[data-v-1fb55f7a]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-1fb55f7a]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-1fb55f7a]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-1fb55f7a]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-1fb55f7a]::before{content:\\\" \\\";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-1fb55f7a]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-1fb55f7a]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-text);position:relative}.app-menu-main .app-menu-entry img[data-v-1fb55f7a]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-1fb55f7a]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-1fb55f7a]:hover,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-1fb55f7a]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-1fb55f7a]:hover,.app-menu-main[data-v-1fb55f7a]:focus-within,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:hover,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:focus{opacity:1}.app-menu-main:hover img[data-v-1fb55f7a],.app-menu-main:focus-within img[data-v-1fb55f7a],.app-menu-main .app-menu-entry:hover img[data-v-1fb55f7a],.app-menu-main .app-menu-entry:focus img[data-v-1fb55f7a]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main:focus-within .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-1fb55f7a],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-1fb55f7a]{opacity:1;bottom:0}.app-menu-main[data-v-1fb55f7a]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-1fb55f7a]::before,.app-menu-main[data-v-1fb55f7a]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-1fb55f7a]::before,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-1fb55f7a]::before,.app-menu-main .app-menu-entry[data-v-1fb55f7a]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-1fb55f7a]::before{opacity:0}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-primary-text)}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-1fb55f7a] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-1fb55f7a]{position:relative;height:44px;filter:var(--background-invert-if-bright)}.app-menu-popover-entry .app-icon.has-unread[data-v-1fb55f7a]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-1fb55f7a]{width:20px;height:20px;padding:15px}.has-unread[data-v-1fb55f7a]::after{content:\\\"\\\";width:8px;height:8px;background-color:var(--color-primary-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-1fb55f7a]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenu.vue\"],\"names\":[],\"mappings\":\"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,0CAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,+BAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,qFACC,+BAAA,CAEA,2FACC,SAAA,CACA,yCAAA,CAIF,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,yCAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAtJgB,CAuJhB,WAvJgB,CAwJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,0CAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA\",\"sourcesContent\":[\"\\n$header-icon-size: 20px;\\n\\n.app-menu {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\tflex-shrink: 1;\\n\\tflex-wrap: wrap;\\n}\\n.app-menu-main {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\n\\t.app-menu-entry {\\n\\t\\twidth: 50px;\\n\\t\\theight: 50px;\\n\\t\\tposition: relative;\\n\\t\\tdisplay: flex;\\n\\t\\topacity: .7;\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t\\t&.app-menu-entry__active {\\n\\t\\t\\topacity: 1;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tcontent: \\\" \\\";\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\t\\twidth: 12px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\tbottom: 6px;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\twidth: calc(100% - 4px);\\n\\t\\t\\theight: calc(100% - 4px);\\n\\t\\t\\tmargin: 2px;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\ttransition: margin 0.1s ease-in-out;\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((100% - $header-icon-size) / 2);\\n\\t\\t\\tbox-sizing: content-box;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 0;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tfont-size: 12px;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tbottom: -5px;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\ttop: 45%;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmin-width: 100%;\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tletter-spacing: -0.5px;\\n\\t\\t}\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus-within {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\tfont-weight: bolder;\\n\\t\\t\\t\\tbottom: 0;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Show labels\\n\\t&:hover,\\n\\t&:focus-within,\\n\\t.app-menu-entry:hover,\\n\\t.app-menu-entry:focus {\\n\\t\\topacity: 1;\\n\\n\\t\\timg {\\n\\t\\t\\tmargin-top: -8px;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbottom: 0;\\n\\t\\t}\\n\\n\\t\\t&::before, .app-menu-entry::before {\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n::v-deep .app-menu-more .button-vue--vue-tertiary {\\n\\topacity: .7;\\n\\tmargin: 3px;\\n\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t/* Remove all background and align text color if not expanded */\\n\\t&:not([aria-expanded=\\\"true\\\"]) {\\n\\t\\tcolor: var(--color-primary-text);\\n\\n\\t\\t&:hover {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\topacity: 1;\\n\\t\\toutline: none !important;\\n\\t}\\n}\\n\\n.app-menu-popover-entry {\\n\\t.app-icon {\\n\\t\\tposition: relative;\\n\\t\\theight: 44px;\\n\\t\\t/* Icons are bright so invert them if bright color theme == bright background is used */\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\n\\t\\t&.has-unread::after {\\n\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((50px - $header-icon-size) / 2);\\n\\t\\t}\\n\\t}\\n}\\n\\n.has-unread::after {\\n\\tcontent: \\\"\\\";\\n\\twidth: 8px;\\n\\theight: 8px;\\n\\tbackground-color: var(--color-primary-text);\\n\\tborder-radius: 50%;\\n\\tposition: absolute;\\n\\tdisplay: block;\\n\\ttop: 10px;\\n\\tright: 10px;\\n}\\n\\n.unread-counter {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UserMenu/UserMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,gBAAA\",\"sourcesContent\":[\"\\n.menu-entry {\\n\\t&__loading-icon {\\n\\t\\tmargin-right: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/ContactsMenu.vue\"],\"names\":[],\"mappings\":\"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA\",\"sourcesContent\":[\"\\n#contactsmenu-menu {\\n\\t/* show 2.5 to 4.5 entries depending on the screen height */\\n\\theight: calc(100vh - 50px * 3);\\n\\tmax-height: calc(50px * 6 + 2px);\\n\\tmin-height: calc(50px * 3.5);\\n\\twidth: 350px;\\n\\n\\t&:deep {\\n\\t\\t.emptycontent {\\n\\t\\t\\tmargin-top: 5vh !important;\\n\\t\\t\\tmargin-bottom: 1.5vh;\\n\\t\\t\\t.icon-loading,\\n\\t\\t\\t.icon-search {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t#contactsmenu-search {\\n\\t\\t\\twidth: calc(100% - 16px);\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\theight: 34px;\\n\\t\\t}\\n\\n\\t\\t.content {\\n\\t\\t\\t/* fixed max height of the parent container without the search input */\\n\\t\\t\\theight: calc(100vh - 50px * 3 - 50px);\\n\\t\\t\\tmax-height: calc(50px * 5);\\n\\t\\t\\tmin-height: calc(50px * 3.5 - 50px);\\n\\t\\t\\toverflow-y: auto;\\n\\n\\t\\t\\t.footer {\\n\\t\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t\\ta {\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\tpadding: 12px 0;\\n\\t\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tpadding: 2px;\\n\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.contact {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 3px 3px 3px 10px;\\n\\n\\t\\t\\t.avatar {\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.body {\\n\\t\\t\\t\\tflex-grow: 1;\\n\\t\\t\\t\\tpadding-left: 8px;\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\toverflow-x: hidden;\\n\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.last-message, .email-address {\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.top-action, .second-action, .other-actions {\\n\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:not(button) {\\n\\t\\t\\t\\t\\tpadding: 14px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton.other-actions {\\n\\t\\t\\t\\twidth: 44px;\\n\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tborder-color: transparent;\\n\\t\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* actions menu */\\n\\t\\t\\t.menu {\\n\\t\\t\\t\\ttop: 47px;\\n\\t\\t\\t\\tmargin-right: 13px;\\n\\t\\t\\t}\\n\\t\\t\\t.popovermenu::after {\\n\\t\\t\\t\\tright: 2px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-menu[data-v-6a818bbc]{margin-right:12px}.user-menu[data-v-6a818bbc] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-6a818bbc] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-text)}.user-menu[data-v-6a818bbc] .header-menu__carret{display:none !important}.user-menu[data-v-6a818bbc] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-6a818bbc]:active,.user-menu__avatar[data-v-6a818bbc]:focus,.user-menu__avatar[data-v-6a818bbc]:hover{border:2px solid var(--color-primary-text)}.user-menu__nav[data-v-6a818bbc]{display:flex;width:100%}.user-menu__nav ul[data-v-6a818bbc]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-6a818bbc] li a,.user-menu__nav ul[data-v-6a818bbc] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-6a818bbc] li a:hover,.user-menu__nav ul[data-v-6a818bbc] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-6a818bbc] li a:focus-visible,.user-menu__nav ul[data-v-6a818bbc] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary) !important;outline:none !important}.user-menu__nav ul[data-v-6a818bbc] li a:active,.user-menu__nav ul[data-v-6a818bbc] li a.active,.user-menu__nav ul[data-v-6a818bbc] li button:active,.user-menu__nav ul[data-v-6a818bbc] li button.active{background-color:var(--color-primary-light)}.user-menu__nav ul[data-v-6a818bbc] li a span,.user-menu__nav ul[data-v-6a818bbc] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-6a818bbc] li a img,.user-menu__nav ul[data-v-6a818bbc] li a svg,.user-menu__nav ul[data-v-6a818bbc] li button img,.user-menu__nav ul[data-v-6a818bbc] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-6a818bbc] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UserMenu.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,0CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,0CAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,0DAAA,CACA,uBAAA,CAGD,0MAEC,2CAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.user-menu {\\n\\tmargin-right: 12px;\\n\\n\\t&:deep {\\n\\t\\t.header-menu {\\n\\t\\t\\t&__trigger {\\n\\t\\t\\t\\topacity: 1 !important;\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t.user-menu__avatar {\\n\\t\\t\\t\\t\\t\\tborder: 2px solid var(--color-primary-text);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__carret {\\n\\t\\t\\t\\tdisplay: none !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__content {\\n\\t\\t\\t\\twidth: fit-content !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t&:active,\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\tborder: 2px solid var(--color-primary-text);\\n\\t\\t}\\n\\t}\\n\\n\\t&__nav {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\n\\t\\tul {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px;\\n\\n\\t\\t\\t&:deep {\\n\\t\\t\\t\\tli {\\n\\t\\t\\t\\t\\ta,\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tborder-radius: 6px;\\n\\t\\t\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t\\t\\theight: var(--header-menu-item-height);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tpadding: 10px 8px;\\n\\t\\t\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover) !important;\\n\\t\\t\\t\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-primary) !important;\\n\\t\\t\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t\\t\\t&.active {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-primary-light);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\t\\tpadding-bottom: 0;\\n\\t\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t\\t\\t\\tmax-width: 110px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\t\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg,\\n\\t\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\t\\topacity: .7;\\n\\t\\t\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Override global button styles\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\" aria-label=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" aria-label=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<img src=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":24},\"end\":{\"line\":3,\"column\":32}}}) : helper)))\n + \"\\\">\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<li>\\n\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":10},\"end\":{\"line\":2,\"column\":23}}}) : helper)))\n + \"\\\">\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"</span>\\n\t</a>\\n</li>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2943;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2943: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(36041)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","getApps","getKeys","app","getValue","key","defaultValue","setValue","value","deleteKey","appConfig","window","oc_appconfig","AppConfig","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","trigger","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","tagName","render","self","$el","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_view","_contactsPromise","el","loadContacts","_getContacts","Promise","resolve","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","constructor","isA11yActivation","event","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","_options$target","_options","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","target","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","tooltip","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","placement","addClass","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","removeClass","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","async","empty","advancedFilter","getFolderContents","files","_changeButtonsText","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","$breadcrumbs","paths","classList","prependTo","getOcDialog","$element","ctrlKey","copyText","folder","moveText","eq","manageFromDocument","manageToken","global","emit","token","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","patterns","querySelectorAll","pattern","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","generateFilePath","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","seconds","setInterval","clearInterval","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","poll","setRequestToken","startPolling","getInterval","NaN","session_lifetime","isNaN","Contacts","NcHeaderMenu","contactsMenu","mounted","methods","handleOpen","_this$contactsMenu","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","scopedSlots","_u","fn","proxy","_v","NcActions","NcActionLink","apps","loadState","appLimit","observer","computed","appList","values","mainAppList","slice","popoverAppList","appLabel","active","unread","ResizeObserver","resize","observe","setApps","beforeDestroy","disconnect","unsubscribe","setNavigationCounter","counter","$set","_ref","availableWidth","appCount","staticClass","_l","class","_s","_e","versionHash","NcLoadingIcon","String","required","Boolean","cachedIcon","concat","handleClick","$event","shiftKey","altKey","metaKey","settingsNavEntries","NcAvatar","UserMenuEntry","_getCurrentUser","userId","_b","initLiveTimestamps","localeAliases","zh","zh_Hans","zh_Hans_CN","zh_Hans_HK","zh_Hans_MO","zh_Hans_SG","zh_Hant","zh_Hant_HK","zh_Hant_MO","zh_Hant_TW","locale","hasOwnProperty","initCore","allowAuthErrors","initSessionHeartBeat","loadConfig","registerAutoLogout","auto_logout","lastActive","now","localStorage","setItem","newValue","logoutUrl","session_keepalive","setUp","Vue","container","appMenu","AppMenu","$mount","setUpMainMenu","mountPoint","h","UserMenu","setUpUserMenu","setUpContactsMenu","snapper","Snap","disable","maxPosition","minDragDistance","animating","$appNavigation","oldSnapperOpen","open","oldSnapperClose","_snapperOpen","_snapperClose","keypress","delegate","$target","navigationBarSlideGestureEnabled","navigationBarSlideGestureAllowed","navigationBarSlideGestureEnablePending","enable","endCurrentDrag","toggleSnapperOnSize","ex","TypeError","urlRegex","plainToRich","formatLinksRich","richToPlain","formatLinksPlain","leadingSpace","trailingSpace","linkText","$content","$this","dismissOptions","dismiss","menuItem","div","add","innerText","ocs","product","onclick","whatsNew","regular","whatsNewTextItem","innerHTML","changelogURL","rel","onQuerySuccess","onQueryError","onDismissSuccess","onDismissError","disableKeyboardShortcuts","setPageHeading","heading","headingEl","textContent","types","loadedStylesheets","loadScript","scriptPath","btoa","onerror","head","loadStylesheet","stylePath","link","showSuccess","warning","showWarning","showInfo","Accessibility","Collaboration","registerType","typeDefinition","action","getTypes","keys","getIcon","typeIconClass","getLabel","typeString","getLink","Comments","InitialState","Loader","Toast","WhatsNew","warnIfNotTesting","setDeprecatedProp","cb","Array","isArray","defineProperty","autosize","ClipboardJS","md5","OCP","deprecate","func","funcName","oldFunc","newFunc","user","ie8fix","hidedefault","displayname","setAvatarForUnknownUser","$div","devicePixelRatio","oc_userconfig","avatar","clearimageplaceholder","alt","entryTemplate","shareWith","shareType","appendTo","$list","topAction","hyperlink","clickedList","has","clickedTarget","attrName","attrValue","_create","originalCss","display","originalTitle","tabIndex","role","insertBefore","removeAttr","$buttonrow","$button","enterCallback","keyCode","_setOptions","_createOverlay","_useFocusTrap","_init","_trigger","_setOption","$title","_setSizes","$defaultButton","$closeButton","dialogTitle","closeCB","lessHeight","outerHeight","contentDiv","overlay","_destroyOverlay","_nc_focus_trap","dialogElement","focusTrap","createFocusTrap","allowOutsideClick","trapStack","fallbackFocus","activate","_clearFocusTrap","_this$focusTrap","deactivate","widget","setEnterCallback","unsetEnterCallback","destroy","Template","vars","elem","_html","_build","o","outerHTML","r","toRgb","Color","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","red","yellow","blue","palette1","palette2","palette3","maximum","finalInt","hashToInt","seed","rgb","placeholderText","map","word","elm","crossDomain","setRequestHeader","start","end","setSelectionRange","createTextRange","range","collapse","moveEnd","moveStart","select","showPassword","setState","checkbox","$clone","tabindex","autocomplete","cloneElement","insertAfter","outerWidth","contents","onpopstate","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","module","exports","depth0","helpers","partials","stack1","lookupProperty","propertyName","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","webpackContext","req","webpackContextResolve","__webpack_require__","code","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-main.js?v=055ee01c3d8b78922e44","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/session-heartbeat.js","webpack:///nextcloud/core/src/views/ContactsMenu.vue","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/ContactsMenu.vue?41d6","webpack://nextcloud/./core/src/views/ContactsMenu.vue?1de5","webpack://nextcloud/./core/src/views/ContactsMenu.vue?f71b","webpack://nextcloud/./core/src/components/AppMenu.vue?d0fd","webpack:///nextcloud/core/src/components/AppMenu.vue","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/AppMenu.vue?6184","webpack://nextcloud/./core/src/components/AppMenu.vue?95cf","webpack://nextcloud/./core/src/views/UserMenu.vue?4b20","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?6a6f","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?a480","webpack://nextcloud/./core/src/components/UserMenu/UserMenuEntry.vue?4de1","webpack:///nextcloud/core/src/views/UserMenu.vue","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UserMenu.vue?66bc","webpack://nextcloud/./core/src/views/UserMenu.vue?5d6d","webpack:///nextcloud/core/src/init.js","webpack:///nextcloud/core/src/components/MainMenu.js","webpack:///nextcloud/core/src/components/UserMenu.js","webpack:///nextcloud/core/src/components/ContactsMenu.js","webpack:///nextcloud/core/src/Polyfill/tooltip.js","webpack:///nextcloud/core/src/OCP/comments.js","webpack:///nextcloud/core/src/OCP/whatsnew.js","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/core/src/OCP/collaboration.js","webpack:///nextcloud/core/src/OCP/loader.js","webpack:///nextcloud/core/src/OCP/toast.js","webpack:///nextcloud/core/src/OCP/index.js","webpack:///nextcloud/core/src/globals.js","webpack:///nextcloud/core/src/jquery/avatar.js","webpack:///nextcloud/core/src/jquery/contactsmenu.js","webpack:///nextcloud/core/src/jquery/exists.js","webpack:///nextcloud/core/src/jquery/filterattr.js","webpack:///nextcloud/core/src/jquery/ocdialog.js","webpack:///nextcloud/core/src/jquery/octemplate.js","webpack:///nextcloud/core/src/jquery/placeholder.js","webpack:///nextcloud/core/src/jquery/requesttoken.js","webpack:///nextcloud/core/src/jquery/selectrange.js","webpack:///nextcloud/core/src/jquery/showpassword.js","webpack:///nextcloud/core/src/jquery/ui-fixes.js","webpack://nextcloud/./core/src/jquery/css/jquery-ui-fixes.scss?a4c2","webpack://nextcloud/./core/src/jquery/css/jquery.ocdialog.scss?5718","webpack:///nextcloud/core/src/jquery/index.js","webpack:///nextcloud/core/src/main.js","webpack:///nextcloud/core/src/jquery/css/jquery-ui-fixes.scss","webpack:///nextcloud/core/src/jquery/css/jquery.ocdialog.scss","webpack:///nextcloud/core/src/components/AppMenu.vue?vue&type=style&index=0&id=c8c7b3a6&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UserMenu/UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UserMenu.vue?vue&type=style&index=0&id=202f7644&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/core/src/jquery/contactsmenu/jquery_entry.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport Notification from './notification.js'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index.js'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig.js'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing.js'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index.js'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\n\t\tconst fullName = this.get('fullName')\n\t\tif (this.get('avatar') && fullName) {\n\t\t\tthis.set('avatarLabel', t('core', 'Avatar of {fullName}', { fullName }))\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/** @type {string} */\n\ttagName: 'ul',\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {string} */\n\ttagName: 'li',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {string} options.el\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {string} */\n\t$el: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {string} options.el - the selector of the element to render the menu in\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = $(options.el)\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el,\n\t\t})\n\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis.loadContacts(searchTerm)\n\t\t}, this)\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\tloadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search.js'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index.js'\nimport OCA from '../OCA/index.js'\nimport { isA11yActivation } from '../Util/a11y.js'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$(options?.target ?? 'body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname, type)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', '.crumb', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path, type)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir, type) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t\tthis._changeButtonsText(type, '')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tif (showHiddenInput?.value !== \"1\") {\n\t\t\tfiles = files.filter(function (file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append('<nav></nav>')\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<li data-dir=\"{dir}\" tabindex=\"0\"><a class=\"{classList}\">{name}</a></li>').addClass('crumb')\n\t\tvar $breadcrumbs = $('<ul class=\"breadcrumb\"></ul>')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t$breadcrumbs.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: t('core', 'Home'),\n\t\t\tclassList: 'icon-home'\n\t\t}, { escapeFunction: null }).addClass('crumb svg crumbhome').prependTo($breadcrumbs)\n\n\n\t\tthis.$dirTree.find('> nav').prepend($breadcrumbs)\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir, type)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'), type)\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken.js'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Handlebars from 'handlebars'\nimport {\n\tloadTranslations,\n\ttranslate,\n\ttranslatePlural,\n\tregister,\n\tunregister,\n} from '@nextcloud/l10n'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index.js'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index.js'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history.js'\nimport OC from './index.js'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/functions/formatFileSize.html\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human-readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader.js'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error.js'\nimport { AppConfig, appConfig } from './appconfig.js'\nimport { appSettings } from './appsettings.js'\nimport appswebroots from './appswebroots.js'\nimport Backbone from './backbone.js'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string.js'\nimport Config from './config.js'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants.js'\nimport ContactsMenu from './contactsmenu.js'\nimport { currentUser, getCurrentUser } from './currentuser.js'\nimport Dialogs from './dialogs.js'\nimport EventSource from './eventsource.js'\nimport { get, set } from './get_set.js'\nimport { getCapabilities } from './capabilities.js'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host.js'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken.js'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu.js'\nimport { isUserAdmin } from './admin.js'\nimport L10N from './l10n.js'\nimport {\n\tgetCanonicalLocale,\n\tgetLanguage,\n\tgetLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing.js'\nimport msg from './msg.js'\nimport Notification from './notification.js'\nimport PasswordConfirmation from './password-confirmation.js'\nimport Plugins from './plugins.js'\nimport { theme } from './theme.js'\nimport Util from './util.js'\nimport { debug } from './debug.js'\nimport { redirect, reload } from './navigation.js'\nimport webroot from './webroot.js'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLocale,\n\t/**\n\t * @deprecated 26.0.0 use `getLanguage` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetLanguage,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './OC/index.js'\nimport { setToken as setRequestToken, getToken as getRequestToken } from './OC/requesttoken.js'\n\nlet config = null\n/**\n * The legacy jsunit tests overwrite OC.config before calling initCore\n * therefore we need to wait with assigning the config fallback until initCore calls initSessionHeartBeat\n */\nconst loadConfig = () => {\n\ttry {\n\t\tconfig = loadState('core', 'config')\n\t} catch (e) {\n\t\t// This fallback is just for our legacy jsunit tests since we have no way to mock loadState calls\n\t\tconfig = OC.config\n\t}\n}\n\n/**\n * session heartbeat (defaults to enabled)\n *\n * @return {boolean}\n */\nconst keepSessionAlive = () => {\n\treturn config.session_keepalive === undefined\n\t\t|| !!config.session_keepalive\n}\n\n/**\n * get interval in seconds\n *\n * @return {number}\n */\nconst getInterval = () => {\n\tlet interval = NaN\n\tif (config.session_lifetime) {\n\t\tinterval = Math.floor(config.session_lifetime / 2)\n\t}\n\n\t// minimum one minute, max 24 hours, default 15 minutes\n\treturn Math.min(\n\t\t24 * 3600,\n\t\tMath.max(\n\t\t\t60,\n\t\t\tisNaN(interval) ? 900 : interval\n\t\t)\n\t)\n}\n\nconst getToken = async () => {\n\tconst url = generateUrl('/csrftoken')\n\n\t// Not using Axios here as Axios is not stubbable with the sinon fake server\n\t// see https://stackoverflow.com/questions/41516044/sinon-mocha-test-with-async-ajax-calls-didnt-return-promises\n\t// see js/tests/specs/coreSpec.js for the tests\n\tconst resp = await $.get(url)\n\n\treturn resp.token\n}\n\nconst poll = async () => {\n\ttry {\n\t\tconst token = await getToken()\n\t\tsetRequestToken(token)\n\t} catch (e) {\n\t\tconsole.error('session heartbeat failed', e)\n\t}\n}\n\nconst startPolling = () => {\n\tconst interval = setInterval(poll, getInterval() * 1000)\n\n\tconsole.info('session heartbeat polling started')\n\n\treturn interval\n}\n\nconst registerAutoLogout = () => {\n\tif (!config.auto_logout || !getCurrentUser()) {\n\t\treturn\n\t}\n\n\tlet lastActive = Date.now()\n\twindow.addEventListener('mousemove', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('touchstart', e => {\n\t\tlastActive = Date.now()\n\t\tlocalStorage.setItem('lastActive', lastActive)\n\t})\n\n\twindow.addEventListener('storage', e => {\n\t\tif (e.key !== 'lastActive') {\n\t\t\treturn\n\t\t}\n\t\tlastActive = e.newValue\n\t})\n\n\tsetInterval(function() {\n\t\tconst timeout = Date.now() - config.session_lifetime * 1000\n\t\tif (lastActive < timeout) {\n\t\t\tconsole.info('Inactivity timout reached, logging out')\n\t\t\tconst logoutUrl = generateUrl('/logout') + '?requesttoken=' + encodeURIComponent(getRequestToken())\n\t\t\twindow.location = logoutUrl\n\t\t}\n\t}, 1000)\n}\n\n/**\n * Calls the server periodically to ensure that session and CSRF\n * token doesn't expire\n */\nexport const initSessionHeartBeat = () => {\n\tloadConfig()\n\n\tregisterAutoLogout()\n\n\tif (!keepSessionAlive()) {\n\t\tconsole.info('session heartbeat disabled')\n\t\treturn\n\t}\n\tlet interval = startPolling()\n\n\twindow.addEventListener('online', async () => {\n\t\tconsole.info('browser is online again, resuming heartbeat')\n\t\tinterval = startPolling()\n\t\ttry {\n\t\t\tawait poll()\n\t\t\tconsole.info('session token successfully updated after resuming network')\n\n\t\t\t// Let apps know we're online and requests will have the new token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: true,\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error('could not update session token after resuming network', e)\n\n\t\t\t// Let apps know we're online but requests might have an outdated token\n\t\t\temit('networkOnline', {\n\t\t\t\tsuccess: false,\n\t\t\t})\n\t\t}\n\t})\n\twindow.addEventListener('offline', () => {\n\t\tconsole.info('browser is offline, stopping heartbeat')\n\n\t\t// Let apps know we're offline\n\t\temit('networkOffline', {})\n\n\t\tclearInterval(interval)\n\t\tconsole.info('session heartbeat polling stopped')\n\t})\n}\n","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"contactsmenu\"\n\t\t:aria-label=\"t('core', 'Search contacts')\"\n\t\t@open=\"handleOpen\">\n\t\t<template #trigger>\n\t\t\t<Contacts :size=\"20\" />\n\t\t</template>\n\t\t<div id=\"contactsmenu-menu\" />\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport Contacts from 'vue-material-design-icons/Contacts.vue'\n\nimport OC from '../OC/index.js'\n\nexport default {\n\tname: 'ContactsMenu',\n\n\tcomponents: {\n\t\tContacts,\n\t\tNcHeaderMenu,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcontactsMenu: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\t// eslint-disable-next-line no-new\n\t\tthis.contactsMenu = new OC.ContactsMenu({\n\t\t\tel: '#contactsmenu-menu',\n\t\t})\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\tthis.contactsMenu?.loadContacts()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#contactsmenu-menu {\n\t/* show 2.5 to 4.5 entries depending on the screen height */\n\theight: calc(100vh - 50px * 3);\n\tmax-height: calc(50px * 6 + 2px);\n\tmin-height: calc(50px * 3.5);\n\twidth: 350px;\n\n\t&:deep {\n\t\t.emptycontent {\n\t\t\tmargin-top: 5vh !important;\n\t\t\tmargin-bottom: 1.5vh;\n\t\t\t.icon-loading,\n\t\t\t.icon-search {\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\t\t}\n\n\t\t#contactsmenu-search {\n\t\t\twidth: calc(100% - 16px);\n\t\t\tmargin: 8px;\n\t\t\theight: 34px;\n\t\t}\n\n\t\t.content {\n\t\t\t/* fixed max height of the parent container without the search input */\n\t\t\theight: calc(100vh - 50px * 3 - 50px);\n\t\t\tmax-height: calc(50px * 5);\n\t\t\tmin-height: calc(50px * 3.5 - 50px);\n\t\t\toverflow-y: auto;\n\n\t\t\t.footer {\n\t\t\t\ttext-align: center;\n\n\t\t\t\ta {\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tpadding: 12px 0;\n\t\t\t\t\topacity: .5;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\tpadding: 2px;\n\n\t\t\t&:focus-visible {\n\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\n\t\t\t}\n\t\t}\n\n\t\t.contact {\n\t\t\tdisplay: flex;\n\t\t\tposition: relative;\n\t\t\talign-items: center;\n\t\t\tpadding: 3px 3px 3px 10px;\n\n\t\t\t.avatar {\n\t\t\t\theight: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\tdisplay: inline-block;\n\t\t\t}\n\n\t\t\t.body {\n\t\t\t\tflex-grow: 1;\n\t\t\t\tpadding-left: 8px;\n\t\t\t\tmin-width: 0;\n\n\t\t\t\tdiv {\n\t\t\t\t\tposition: relative;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\toverflow-x: hidden;\n\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t}\n\n\t\t\t\t.last-message, .email-address {\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.top-action, .second-action, .other-actions {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\topacity: .5;\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:not(button) {\n\t\t\t\t\tpadding: 14px;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t}\n\n\t\t\t\t&:hover,\n\t\t\t\t&:active,\n\t\t\t\t&:focus {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbutton.other-actions {\n\t\t\t\twidth: 44px;\n\n\t\t\t\t&:focus {\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t\t\t}\n\n\t\t\t\t&:focus-visible {\n\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* actions menu */\n\t\t\t.menu {\n\t\t\t\ttop: 47px;\n\t\t\t\tmargin-right: 13px;\n\t\t\t}\n\t\t\t.popovermenu::after {\n\t\t\t\tright: 2px;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ContactsMenu.vue?vue&type=template&id=1563c388&scoped=true&\"\nimport script from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./ContactsMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ContactsMenu.vue?vue&type=style&index=0&id=1563c388&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1563c388\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{attrs:{\"id\":\"contactsmenu\",\"aria-label\":_vm.t('core', 'Search contacts')},on:{\"open\":_vm.handleOpen},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Contacts',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{attrs:{\"id\":\"contactsmenu-menu\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('nav',{staticClass:\"app-menu\"},[_c('ul',{staticClass:\"app-menu-main\"},_vm._l((_vm.mainAppList),function(app){return _c('li',{key:app.id,staticClass:\"app-menu-entry\",class:{ 'app-menu-entry__active': app.active },attrs:{\"data-app-id\":app.id}},[_c('a',{class:{ 'has-unread': app.unread > 0 },attrs:{\"href\":app.href,\"aria-label\":_vm.appLabel(app),\"title\":app.name,\"aria-current\":app.active ? 'page' : false,\"target\":app.target ? '_blank' : undefined,\"rel\":app.target ? 'noopener noreferrer' : undefined}},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"app-menu-entry--label\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])])])}),0),_vm._v(\" \"),_c('NcActions',{staticClass:\"app-menu-more\",attrs:{\"aria-label\":_vm.t('core', 'More apps')}},_vm._l((_vm.popoverAppList),function(app){return _c('NcActionLink',{key:app.id,staticClass:\"app-menu-popover-entry\",attrs:{\"aria-label\":_vm.appLabel(app),\"aria-current\":app.active ? 'page' : false,\"href\":app.href},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"app-icon\",class:{ 'has-unread': app.unread > 0 }},[_c('img',{attrs:{\"src\":app.icon,\"alt\":\"\"}})])]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(app.name)+\"\\n\\t\\t\\t\"),(app.unread > 0)?_c('span',{staticClass:\"hidden-visually unread-counter\"},[_vm._v(_vm._s(app.unread))]):_vm._e()])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<nav class=\"app-menu\">\n\t\t<ul class=\"app-menu-main\">\n\t\t\t<li v-for=\"app in mainAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:data-app-id=\"app.id\"\n\t\t\t\tclass=\"app-menu-entry\"\n\t\t\t\t:class=\"{ 'app-menu-entry__active': app.active }\">\n\t\t\t\t<a :href=\"app.href\"\n\t\t\t\t\t:class=\"{ 'has-unread': app.unread > 0 }\"\n\t\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t\t:title=\"app.name\"\n\t\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t\t:target=\"app.target ? '_blank' : undefined\"\n\t\t\t\t\t:rel=\"app.target ? 'noopener noreferrer' : undefined\">\n\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t<div class=\"app-menu-entry--label\">\n\t\t\t\t\t\t{{ app.name }}\n\t\t\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t\t<NcActions class=\"app-menu-more\" :aria-label=\"t('core', 'More apps')\">\n\t\t\t<NcActionLink v-for=\"app in popoverAppList\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:aria-label=\"appLabel(app)\"\n\t\t\t\t:aria-current=\"app.active ? 'page' : false\"\n\t\t\t\t:href=\"app.href\"\n\t\t\t\tclass=\"app-menu-popover-entry\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<div class=\"app-icon\" :class=\"{ 'has-unread': app.unread > 0 }\">\n\t\t\t\t\t\t<img :src=\"app.icon\" alt=\"\">\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t{{ app.name }}\n\t\t\t\t<span v-if=\"app.unread > 0\" class=\"hidden-visually unread-counter\">{{ app.unread }}</span>\n\t\t\t</NcActionLink>\n\t\t</NcActions>\n\t</nav>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\n\nexport default {\n\tname: 'AppMenu',\n\tcomponents: {\n\t\tNcActions, NcActionLink,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tapps: loadState('core', 'apps', {}),\n\t\t\tappLimit: 0,\n\t\t\tobserver: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\tappList() {\n\t\t\treturn Object.values(this.apps)\n\t\t},\n\t\tmainAppList() {\n\t\t\treturn this.appList.slice(0, this.appLimit)\n\t\t},\n\t\tpopoverAppList() {\n\t\t\treturn this.appList.slice(this.appLimit)\n\t\t},\n\t\tappLabel() {\n\t\t\treturn (app) => app.name\n\t\t\t\t+ (app.active ? ' (' + t('core', 'Currently open') + ')' : '')\n\t\t\t\t+ (app.unread > 0 ? ' (' + n('core', '{count} notification', '{count} notifications', app.unread, { count: app.unread }) + ')' : '')\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.observer = new ResizeObserver(this.resize)\n\t\tthis.observer.observe(this.$el)\n\t\tthis.resize()\n\t\tsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tbeforeDestroy() {\n\t\tthis.observer.disconnect()\n\t\tunsubscribe('nextcloud:app-menu.refresh', this.setApps)\n\t},\n\tmethods: {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tthis.$set(this.apps[id], 'unread', counter)\n\t\t},\n\t\tsetApps({ apps }) {\n\t\t\tthis.apps = apps\n\t\t},\n\t\tresize() {\n\t\t\tconst availableWidth = this.$el.offsetWidth\n\t\t\tlet appCount = Math.floor(availableWidth / 50) - 1\n\t\t\tconst popoverAppCount = this.appList.length - appCount\n\t\t\tif (popoverAppCount === 1) {\n\t\t\t\tappCount--\n\t\t\t}\n\t\t\tif (appCount < 1) {\n\t\t\t\tappCount = 0\n\t\t\t}\n\t\t\tthis.appLimit = appCount\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$header-icon-size: 20px;\n\n.app-menu {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-shrink: 1;\n\tflex-wrap: wrap;\n}\n.app-menu-main {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\n\t.app-menu-entry {\n\t\twidth: 50px;\n\t\theight: 50px;\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t\topacity: .7;\n\t\tfilter: var(--background-image-invert-if-bright);\n\n\t\t&.app-menu-entry__active {\n\t\t\topacity: 1;\n\n\t\t\t&::before {\n\t\t\t\tcontent: \" \";\n\t\t\t\tposition: absolute;\n\t\t\t\tpointer-events: none;\n\t\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\twidth: 12px;\n\t\t\t\theight: 5px;\n\t\t\t\tborder-radius: 3px;\n\t\t\t\tbackground-color: var(--color-primary-element-text);\n\t\t\t\tleft: 50%;\n\t\t\t\tbottom: 6px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.app-menu-entry--label {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\t\t}\n\n\t\ta {\n\t\t\twidth: calc(100% - 4px);\n\t\t\theight: calc(100% - 4px);\n\t\t\tmargin: 2px;\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\tposition: relative;\n\t\t}\n\n\t\timg {\n\t\t\ttransition: margin 0.1s ease-in-out;\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((100% - $header-icon-size) / 2);\n\t\t\tbox-sizing: content-box;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 0;\n\t\t\tposition: absolute;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\ttext-align: center;\n\t\t\tbottom: -5px;\n\t\t\tleft: 50%;\n\t\t\ttop: 45%;\n\t\t\tdisplay: block;\n\t\t\tmin-width: 100%;\n\t\t\ttransform: translateX(-50%);\n\t\t\ttransition: all 0.1s ease-in-out;\n\t\t\twidth: 100%;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\t\t\tletter-spacing: -0.5px;\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus-within {\n\t\t\topacity: 1;\n\t\t\t.app-menu-entry--label {\n\t\t\t\topacity: 1;\n\t\t\t\tfont-weight: bolder;\n\t\t\t\tbottom: 0;\n\t\t\t\twidth: 100%;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\n\t}\n\n\t// Show labels\n\t&:hover,\n\t&:focus-within,\n\t.app-menu-entry:hover,\n\t.app-menu-entry:focus {\n\t\topacity: 1;\n\n\t\timg {\n\t\t\tmargin-top: -8px;\n\t\t}\n\n\t\t.app-menu-entry--label {\n\t\t\topacity: 1;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t&::before, .app-menu-entry::before {\n\t\t\topacity: 0;\n\t\t}\n\t}\n}\n\n::v-deep .app-menu-more .button-vue--vue-tertiary {\n\topacity: .7;\n\tmargin: 3px;\n\tfilter: var(--background-image-invert-if-bright);\n\n\t/* Remove all background and align text color if not expanded */\n\t&:not([aria-expanded=\"true\"]) {\n\t\tcolor: var(--color-primary-element-text);\n\n\t\t&:hover {\n\t\t\topacity: 1;\n\t\t\tbackground-color: transparent !important;\n\t\t}\n\t}\n\n\t&:focus-visible {\n\t\topacity: 1;\n\t\toutline: none !important;\n\t}\n}\n\n.app-menu-popover-entry {\n\t.app-icon {\n\t\tposition: relative;\n\t\theight: 44px;\n\t\t/* Icons are bright so invert them if bright color theme == bright background is used */\n\t\tfilter: var(--background-invert-if-bright);\n\n\t\t&.has-unread::after {\n\t\t\tbackground-color: var(--color-main-text);\n\t\t}\n\n\t\timg {\n\t\t\twidth: $header-icon-size;\n\t\t\theight: $header-icon-size;\n\t\t\tpadding: calc((50px - $header-icon-size) / 2);\n\t\t}\n\t}\n}\n\n.has-unread::after {\n\tcontent: \"\";\n\twidth: 8px;\n\theight: 8px;\n\tbackground-color: var(--color-primary-element-text);\n\tborder-radius: 50%;\n\tposition: absolute;\n\tdisplay: block;\n\ttop: 10px;\n\tright: 10px;\n}\n\n.unread-counter {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=c8c7b3a6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMenu.vue?vue&type=style&index=0&id=c8c7b3a6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppMenu.vue?vue&type=template&id=c8c7b3a6&scoped=true&\"\nimport script from \"./AppMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./AppMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppMenu.vue?vue&type=style&index=0&id=c8c7b3a6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c8c7b3a6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcHeaderMenu',{staticClass:\"user-menu\",attrs:{\"id\":\"user-menu\",\"aria-label\":_vm.t('core', 'Open settings menu')},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcAvatar',{staticClass:\"user-menu__avatar\",attrs:{\"disable-menu\":true,\"disable-tooltip\":true,\"user\":_vm.userId}})]},proxy:true}])},[_vm._v(\" \"),_c('nav',{staticClass:\"user-menu__nav\",attrs:{\"aria-label\":_vm.t('core', 'Settings menu')}},[_c('ul',_vm._l((_vm.settingsNavEntries),function(entry){return _c('UserMenuEntry',_vm._b({key:entry.id},'UserMenuEntry',entry,false))}),1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<li :id=\"id\"\n\t\tclass=\"menu-entry\">\n\t\t<a v-if=\"href\"\n\t\t\t:href=\"href\"\n\t\t\t:class=\"{ active }\"\n\t\t\t@click.exact=\"handleClick\">\n\t\t\t<NcLoadingIcon v-if=\"loading\"\n\t\t\t\tclass=\"menu-entry__loading-icon\"\n\t\t\t\t:size=\"18\" />\n\t\t\t<img v-else :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</a>\n\t\t<button v-else>\n\t\t\t<img :src=\"cachedIcon\" alt=\"\" />\n\t\t\t{{ name }}\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\n\nconst versionHash = loadState('core', 'versionHash', '')\n\nexport default {\n\tname: 'UserMenuEntry',\n\n\tcomponents: {\n\t\tNcLoadingIcon,\n\t},\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcachedIcon() {\n\t\t\treturn `${this.icon}?v=${versionHash}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\thandleClick() {\n\t\t\tthis.loading = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.menu-entry {\n\t&__loading-icon {\n\t\tmargin-right: 8px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenuEntry.vue?vue&type=template&id=6e59d13c&scoped=true&\"\nimport script from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenuEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenuEntry.vue?vue&type=style&index=0&id=6e59d13c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6e59d13c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"menu-entry\",attrs:{\"id\":_vm.id}},[(_vm.href)?_c('a',{class:{ active: _vm.active },attrs:{\"href\":_vm.href},on:{\"click\":function($event){if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.handleClick.apply(null, arguments)}}},[(_vm.loading)?_c('NcLoadingIcon',{staticClass:\"menu-entry__loading-icon\",attrs:{\"size\":18}}):_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")],1):_c('button',[_c('img',{attrs:{\"src\":_vm.cachedIcon,\"alt\":\"\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2023 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<NcHeaderMenu id=\"user-menu\"\n\t\tclass=\"user-menu\"\n\t\t:aria-label=\"t('core', 'Open settings menu')\">\n\t\t<template #trigger>\n\t\t\t<NcAvatar class=\"user-menu__avatar\"\n\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t:user=\"userId\" />\n\t\t</template>\n\t\t<nav class=\"user-menu__nav\"\n\t\t\t:aria-label=\"t('core', 'Settings menu')\">\n\t\t\t<ul>\n\t\t\t\t<UserMenuEntry v-for=\"entry in settingsNavEntries\"\n\t\t\t\t\tv-bind=\"entry\"\n\t\t\t\t\t:key=\"entry.id\" />\n\t\t\t</ul>\n\t\t</nav>\n\t</NcHeaderMenu>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcHeaderMenu from '@nextcloud/vue/dist/Components/NcHeaderMenu.js'\n\nimport UserMenuEntry from '../components/UserMenu/UserMenuEntry.vue'\n\nconst settingsNavEntries = loadState('core', 'settingsNavEntries', [])\n\nexport default {\n\tname: 'UserMenu',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcHeaderMenu,\n\t\tUserMenuEntry,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsettingsNavEntries,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t}\n\t},\n\n\tmounted() {\n\t\temit('core:user-menu:mounted')\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-menu {\n\tmargin-right: 12px;\n\n\t&:deep {\n\t\t.header-menu {\n\t\t\t&__trigger {\n\t\t\t\topacity: 1 !important;\n\t\t\t\t&:focus-visible {\n\t\t\t\t\t.user-menu__avatar {\n\t\t\t\t\t\tborder: 2px solid var(--color-primary-element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__carret {\n\t\t\t\tdisplay: none !important;\n\t\t\t}\n\n\t\t\t&__content {\n\t\t\t\twidth: fit-content !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t&:active,\n\t\t&:focus,\n\t\t&:hover {\n\t\t\tborder: 2px solid var(--color-primary-element-text);\n\t\t}\n\t}\n\n\t&__nav {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\n\t\tul {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px;\n\n\t\t\t&:deep {\n\t\t\t\tli {\n\t\t\t\t\ta,\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tborder-radius: 6px;\n\t\t\t\t\t\tdisplay: inline-flex;\n\t\t\t\t\t\talign-items: center;\n\t\t\t\t\t\theight: var(--header-menu-item-height);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tpadding: 10px 8px;\n\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\tposition: relative;\n\t\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t\t&:hover {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:focus-visible {\n\t\t\t\t\t\t\tbackground-color: var(--color-background-hover) !important;\n\t\t\t\t\t\t\tbox-shadow: inset 0 0 0 2px var(--color-primary-element) !important;\n\t\t\t\t\t\t\toutline: none !important;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t&:active,\n\t\t\t\t\t\t&.active {\n\t\t\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan {\n\t\t\t\t\t\t\tpadding-bottom: 0;\n\t\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\t\twhite-space: nowrap;\n\t\t\t\t\t\t\toverflow: hidden;\n\t\t\t\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\t\t\t\tmax-width: 110px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg {\n\t\t\t\t\t\t\twidth: 16px;\n\t\t\t\t\t\t\theight: 16px;\n\t\t\t\t\t\t\tmargin-right: 10px;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\timg,\n\t\t\t\t\t\tsvg {\n\t\t\t\t\t\t\topacity: .7;\n\t\t\t\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Override global button styles\n\t\t\t\t\tbutton {\n\t\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\t\tborder: none;\n\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\tmargin: 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=202f7644&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=202f7644&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=202f7644&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=202f7644&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"202f7644\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author nacho <nacho@ownyourbits.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* globals Snap */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\n\nimport { initSessionHeartBeat } from './session-heartbeat.js'\nimport OC from './OC/index.js'\nimport { setUp as setUpContactsMenu } from './components/ContactsMenu.js'\nimport { setUp as setUpMainMenu } from './components/MainMenu.js'\nimport { setUp as setUpUserMenu } from './components/UserMenu.js'\nimport PasswordConfirmation from './OC/password-confirmation.js'\n\n// keep in sync with core/css/variables.scss\nconst breakpointMobileWidth = 1024\n\nconst initLiveTimestamps = () => {\n\t// Update live timestamps every 30 seconds\n\tsetInterval(() => {\n\t\t$('.live-relative-timestamp').each(function() {\n\t\t\tconst timestamp = parseInt($(this).attr('data-timestamp'), 10)\n\t\t\t$(this).text(moment(timestamp).fromNow())\n\t\t})\n\t}, 30 * 1000)\n}\n\n/**\n * Moment doesn't have aliases for every locale and doesn't parse some locale IDs correctly so we need to alias them\n */\nconst localeAliases = {\n\tzh: 'zh-cn',\n\tzh_Hans: 'zh-cn',\n\tzh_Hans_CN: 'zh-cn',\n\tzh_Hans_HK: 'zh-cn',\n\tzh_Hans_MO: 'zh-cn',\n\tzh_Hans_SG: 'zh-cn',\n\tzh_Hant: 'zh-hk',\n\tzh_Hant_HK: 'zh-hk',\n\tzh_Hant_MO: 'zh-mo',\n\tzh_Hant_TW: 'zh-tw',\n}\nlet locale = OC.getLocale()\nif (Object.prototype.hasOwnProperty.call(localeAliases, locale)) {\n\tlocale = localeAliases[locale]\n}\n\n/**\n * Set users locale to moment.js as soon as possible\n */\nmoment.locale(locale)\n\n/**\n * Initializes core\n */\nexport const initCore = () => {\n\t$(window).on('unload.main', () => { OC._unloadCalled = true })\n\t$(window).on('beforeunload.main', () => {\n\t\t// super-trick thanks to http://stackoverflow.com/a/4651049\n\t\t// in case another handler displays a confirmation dialog (ex: navigating away\n\t\t// during an upload), there are two possible outcomes: user clicked \"ok\" or\n\t\t// \"cancel\"\n\n\t\t// first timeout handler is called after unload dialog is closed\n\t\tsetTimeout(() => {\n\t\t\tOC._userIsNavigatingAway = true\n\n\t\t\t// second timeout event is only called if user cancelled (Chrome),\n\t\t\t// but in other browsers it might still be triggered, so need to\n\t\t\t// set a higher delay...\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (!OC._unloadCalled) {\n\t\t\t\t\tOC._userIsNavigatingAway = false\n\t\t\t\t}\n\t\t\t}, 10000)\n\t\t}, 1)\n\t})\n\t$(document).on('ajaxError.main', function(event, request, settings) {\n\t\tif (settings && settings.allowAuthErrors) {\n\t\t\treturn\n\t\t}\n\t\tOC._processAjaxError(request)\n\t})\n\n\tinitSessionHeartBeat()\n\n\tOC.registerMenu($('#expand'), $('#expanddiv'), false, true)\n\n\t// toggle for menus\n\t$(document).on('mouseup.closemenus', event => {\n\t\tconst $el = $(event.target)\n\t\tif ($el.closest('.menu').length || $el.closest('.menutoggle').length) {\n\t\t\t// don't close when clicking on the menu directly or a menu toggle\n\t\t\treturn false\n\t\t}\n\n\t\tOC.hideMenus()\n\t})\n\n\tsetUpMainMenu()\n\tsetUpUserMenu()\n\tsetUpContactsMenu()\n\n\t// just add snapper for logged in users\n\t// and if the app doesn't handle the nav slider itself\n\tif ($('#app-navigation').length && !$('html').hasClass('lte9')\n\t\t&& !$('#app-content').hasClass('no-snapper')) {\n\n\t\t// App sidebar on mobile\n\t\tconst snapper = new Snap({\n\t\t\telement: document.getElementById('app-content'),\n\t\t\tdisable: 'right',\n\t\t\tmaxPosition: 300, // $navigation-width\n\t\t\tminDragDistance: 100,\n\t\t})\n\n\t\t$('#app-content').prepend('<div id=\"app-navigation-toggle\" class=\"icon-menu\" style=\"display:none\" tabindex=\"0\"></div>')\n\n\t\t// keep track whether snapper is currently animating, and\n\t\t// prevent to call open or close while that is the case\n\t\t// to avoid duplicating events (snap.js doesn't check this)\n\t\tlet animating = false\n\t\tsnapper.on('animating', () => {\n\t\t\t// we need this because the trigger button\n\t\t\t// is also implicitly wired to close by snapper\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('animated', () => {\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('start', () => {\n\t\t\t// we need this because dragging triggers that\n\t\t\tanimating = true\n\t\t})\n\t\tsnapper.on('end', () => {\n\t\t\t// we need this because dragging stop triggers that\n\t\t\tanimating = false\n\t\t})\n\t\tsnapper.on('open', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t})\n\t\tsnapper.on('close', () => {\n\t\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t})\n\n\t\t// These are necessary because calling open or close\n\t\t// on snapper during an animation makes it trigger an\n\t\t// unfinishable animation, which itself will continue\n\t\t// triggering animating events and cause high CPU load,\n\t\t//\n\t\t// Ref https://github.com/jakiestfu/Snap.js/issues/216\n\t\tconst oldSnapperOpen = snapper.open\n\t\tconst oldSnapperClose = snapper.close\n\t\tconst _snapperOpen = () => {\n\t\t\tif (animating || snapper.state().state !== 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperOpen('left')\n\t\t}\n\n\t\tconst _snapperClose = () => {\n\t\t\tif (animating || snapper.state().state === 'closed') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\toldSnapperClose()\n\t\t}\n\n\t\t// Needs to be deferred to properly catch in-between\n\t\t// events that snap.js is triggering after dragging.\n\t\t//\n\t\t// Skipped when running unit tests as we are not testing\n\t\t// the snap.js workarounds...\n\t\tif (!window.TESTING) {\n\t\t\tsnapper.open = () => {\n\t\t\t\t_.defer(_snapperOpen)\n\t\t\t}\n\t\t\tsnapper.close = () => {\n\t\t\t\t_.defer(_snapperClose)\n\t\t\t}\n\t\t}\n\n\t\t$('#app-navigation-toggle').click((e) => {\n\t\t\t// close is implicit in the button by snap.js\n\t\t\tif (snapper.state().state !== 'left') {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\t\t$('#app-navigation-toggle').keypress(e => {\n\t\t\tif (snapper.state().state === 'left') {\n\t\t\t\tsnapper.close()\n\t\t\t} else {\n\t\t\t\tsnapper.open()\n\t\t\t}\n\t\t})\n\n\t\t// close sidebar when switching navigation entry\n\t\tconst $appNavigation = $('#app-navigation')\n\t\t$appNavigation.attr('aria-hidden', 'true')\n\t\t$appNavigation.delegate('a, :button', 'click', event => {\n\t\t\tconst $target = $(event.target)\n\t\t\t// don't hide navigation when changing settings or adding things\n\t\t\tif ($target.is('.app-navigation-noclose')\n\t\t\t\t|| $target.closest('.app-navigation-noclose').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.app-navigation-entry-utils-menu-button')\n\t\t\t\t|| $target.closest('.app-navigation-entry-utils-menu-button').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('.add-new')\n\t\t\t\t|| $target.closest('.add-new').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif ($target.is('#app-settings')\n\t\t\t\t|| $target.closest('#app-settings').length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tsnapper.close()\n\t\t})\n\n\t\tlet navigationBarSlideGestureEnabled = false\n\t\tlet navigationBarSlideGestureAllowed = true\n\t\tlet navigationBarSlideGestureEnablePending = false\n\n\t\tOC.allowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = true\n\n\t\t\tif (navigationBarSlideGestureEnablePending) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t}\n\t\t}\n\n\t\tOC.disallowNavigationBarSlideGesture = () => {\n\t\t\tnavigationBarSlideGestureAllowed = false\n\n\t\t\tif (navigationBarSlideGestureEnabled) {\n\t\t\t\tconst endCurrentDrag = true\n\t\t\t\tsnapper.disable(endCurrentDrag)\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\tconst toggleSnapperOnSize = () => {\n\t\t\tif ($(window).width() > breakpointMobileWidth) {\n\t\t\t\t$appNavigation.attr('aria-hidden', 'false')\n\t\t\t\tsnapper.close()\n\t\t\t\tsnapper.disable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = false\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else if (navigationBarSlideGestureAllowed) {\n\t\t\t\tsnapper.enable()\n\n\t\t\t\tnavigationBarSlideGestureEnabled = true\n\t\t\t\tnavigationBarSlideGestureEnablePending = false\n\t\t\t} else {\n\t\t\t\tnavigationBarSlideGestureEnablePending = true\n\t\t\t}\n\t\t}\n\n\t\t$(window).resize(_.debounce(toggleSnapperOnSize, 250))\n\n\t\t// initial call\n\t\ttoggleSnapperOnSize()\n\n\t}\n\n\tinitLiveTimestamps()\n\tPasswordConfirmation.init()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport AppMenu from './AppMenu.vue'\n\nexport const setUp = () => {\n\n\tVue.mixin({\n\t\tmethods: {\n\t\t\tt,\n\t\t\tn,\n\t\t},\n\t})\n\n\tconst container = document.getElementById('header-left__appmenu')\n\tif (!container) {\n\t\t// no container, possibly we're on a public page\n\t\treturn\n\t}\n\tconst AppMenuApp = Vue.extend(AppMenu)\n\tconst appMenu = new AppMenuApp({}).$mount(container)\n\n\tObject.assign(OC, {\n\t\tsetNavigationCounter(id, counter) {\n\t\t\tappMenu.setNavigationCounter(id, counter)\n\t\t},\n\t})\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport UserMenu from '../views/UserMenu.vue'\n\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('user-menu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(UserMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Christopher Ng <chrng8@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport ContactsMenu from '../views/ContactsMenu.vue'\n\n/**\n * @todo move to contacts menu code https://github.com/orgs/nextcloud/projects/31#card-21213129\n */\nexport const setUp = () => {\n\tconst mountPoint = document.getElementById('contactsmenu')\n\tif (mountPoint) {\n\t\t// eslint-disable-next-line no-new\n\t\tnew Vue({\n\t\t\tel: mountPoint,\n\t\t\trender: h => h(ContactsMenu),\n\t\t})\n\t}\n}\n","/**\n * @copyright 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n$.prototype.tooltip = (function(tooltip) {\n\treturn function(config) {\n\t\ttry {\n\t\t\treturn tooltip.call(this, config)\n\t\t} catch (ex) {\n\t\t\tif (ex instanceof TypeError && config === 'destroy') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'destroy\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, 'dispose')\n\t\t\t}\n\t\t\tif (ex instanceof TypeError && config === 'fixTitle') {\n\t\t\t\tif (window.TESTING === undefined) {\n\t\t\t\t\tconsole.error('Deprecated call $.tooltip(\\'fixTitle\\') has been deprecated and should be removed')\n\t\t\t\t}\n\t\t\t\treturn tooltip.call(this, '_fixTitle')\n\t\t\t}\n\t\t}\n\t}\n})($.prototype.tooltip)\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/*\n * Detects links:\n * Either the http(s) protocol is given or two strings, basically limited to ascii with the last\n * word being at least one digit long,\n * followed by at least another character\n *\n * The downside: anything not ascii is excluded. Not sure how common it is in areas using different\n * alphabets… the upside: fake domains with similar looking characters won't be formatted as links\n *\n * This is a copy of the backend regex in IURLGenerator, make sure to adjust both when changing\n */\nconst urlRegex = /(\\s|^)(https?:\\/\\/)((?:[-A-Z0-9+_]+\\.)+[-A-Z]+(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * @param {any} content -\n */\nexport function plainToRich(content) {\n\treturn this.formatLinksRich(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function richToPlain(content) {\n\treturn this.formatLinksPlain(content)\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksRich(content) {\n\treturn content.replace(urlRegex, function(_, leadingSpace, protocol, url, trailingSpace) {\n\t\tlet linkText = url\n\t\tif (!protocol) {\n\t\t\tprotocol = 'https://'\n\t\t} else if (protocol === 'http://') {\n\t\t\tlinkText = protocol + url\n\t\t}\n\n\t\treturn leadingSpace + '<a class=\"external\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"' + protocol + url + '\">' + linkText + '</a>' + trailingSpace\n\t})\n}\n\n/**\n * @param {any} content -\n */\nexport function formatLinksPlain(content) {\n\tconst $content = $('<div></div>').html(content)\n\t$content.find('a').each(function() {\n\t\tconst $this = $(this)\n\t\t$this.html($this.attr('href'))\n\t})\n\treturn $content.html()\n}\n","/**\n * @copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * @param {any} options -\n */\nexport function query(options) {\n\toptions = options || {}\n\tconst dismissOptions = options.dismiss || {}\n\t$.ajax({\n\t\ttype: 'GET',\n\t\turl: options.url || generateOcsUrl('core/whatsnew?format=json'),\n\t\tsuccess: options.success || function(data, statusText, xhr) {\n\t\t\tonQuerySuccess(data, statusText, xhr, dismissOptions)\n\t\t},\n\t\terror: options.error || onQueryError,\n\t})\n}\n\n/**\n * @param {any} version -\n * @param {any} options -\n */\nexport function dismiss(version, options) {\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: 'POST',\n\t\turl: options.url || generateOcsUrl('core/whatsnew'),\n\t\tdata: { version: encodeURIComponent(version) },\n\t\tsuccess: options.success || onDismissSuccess,\n\t\terror: options.error || onDismissError,\n\t})\n\t// remove element immediately\n\t$('.whatsNewPopover').remove()\n}\n\n/**\n * @param {any} data -\n * @param {any} statusText -\n * @param {any} xhr -\n * @param {any} dismissOptions -\n */\nfunction onQuerySuccess(data, statusText, xhr, dismissOptions) {\n\tconsole.debug('querying Whats New data was successful: ' + statusText)\n\tconsole.debug(data)\n\n\tif (xhr.status !== 200) {\n\t\treturn\n\t}\n\n\tlet item, menuItem, text, icon\n\n\tconst div = document.createElement('div')\n\tdiv.classList.add('popovermenu', 'open', 'whatsNewPopover', 'menu-left')\n\n\tconst list = document.createElement('ul')\n\n\t// header\n\titem = document.createElement('li')\n\tmenuItem = document.createElement('span')\n\tmenuItem.className = 'menuitem'\n\n\ttext = document.createElement('span')\n\ttext.innerText = t('core', 'New in') + ' ' + data.ocs.data.product\n\ttext.className = 'caption'\n\tmenuItem.appendChild(text)\n\n\ticon = document.createElement('span')\n\ticon.className = 'icon-close'\n\ticon.onclick = function() {\n\t\tdismiss(data.ocs.data.version, dismissOptions)\n\t}\n\tmenuItem.appendChild(icon)\n\n\titem.appendChild(menuItem)\n\tlist.appendChild(item)\n\n\t// Highlights\n\tfor (const i in data.ocs.data.whatsNew.regular) {\n\t\tconst whatsNewTextItem = data.ocs.data.whatsNew.regular[i]\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('span')\n\t\tmenuItem.className = 'menuitem'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-checkmark'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('p')\n\t\ttext.innerHTML = _.escape(whatsNewTextItem)\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\t// Changelog URL\n\tif (!_.isUndefined(data.ocs.data.changelogURL)) {\n\t\titem = document.createElement('li')\n\n\t\tmenuItem = document.createElement('a')\n\t\tmenuItem.href = data.ocs.data.changelogURL\n\t\tmenuItem.rel = 'noreferrer noopener'\n\t\tmenuItem.target = '_blank'\n\n\t\ticon = document.createElement('span')\n\t\ticon.className = 'icon-link'\n\t\tmenuItem.appendChild(icon)\n\n\t\ttext = document.createElement('span')\n\t\ttext.innerText = t('core', 'View changelog')\n\t\tmenuItem.appendChild(text)\n\n\t\titem.appendChild(menuItem)\n\t\tlist.appendChild(item)\n\t}\n\n\tdiv.appendChild(list)\n\tdocument.body.appendChild(div)\n}\n\n/**\n * @param {any} x -\n * @param {any} t -\n * @param {any} e -\n */\nfunction onQueryError(x, t, e) {\n\tconsole.debug('querying Whats New Data resulted in an error: ' + t + e)\n\tconsole.debug(x)\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissSuccess(data) {\n\t// noop\n}\n\n/**\n * @param {any} data -\n */\nfunction onDismissError(data) {\n\tconsole.debug('dismissing Whats New data resulted in an error: ' + data)\n}\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport escapeHTML from 'escape-html'\n\n/**\n * @typedef TypeDefinition\n * @function {Function} action This action is executed to let the user select a resource\n * @param {string} icon Contains the icon css class for the type\n * @function Object() { [native code] }\n */\n\n/**\n * @type {TypeDefinition[]}\n */\nconst types = {}\n\n/**\n * Those translations will be used by the vue component but they should be shipped with the server\n * FIXME: Those translations should be added to the library\n *\n * @return {Array}\n */\nexport const l10nProjects = () => {\n\treturn [\n\t\tt('core', 'Add to a project'),\n\t\tt('core', 'Show details'),\n\t\tt('core', 'Hide details'),\n\t\tt('core', 'Rename project'),\n\t\tt('core', 'Failed to rename the project'),\n\t\tt('core', 'Failed to create a project'),\n\t\tt('core', 'Failed to add the item to the project'),\n\t\tt('core', 'Connect items to a project to make them easier to find'),\n\t\tt('core', 'Type to search for existing projects'),\n\t]\n}\n\nexport default {\n\t/**\n\t *\n\t * @param {string} type type\n\t * @param {TypeDefinition} typeDefinition typeDefinition\n\t */\n\tregisterType(type, typeDefinition) {\n\t\ttypes[type] = typeDefinition\n\t},\n\ttrigger(type) {\n\t\treturn types[type].action()\n\t},\n\tgetTypes() {\n\t\treturn Object.keys(types)\n\t},\n\tgetIcon(type) {\n\t\treturn types[type].typeIconClass || ''\n\t},\n\tgetLabel(type) {\n\t\treturn escapeHTML(types[type].typeString || type)\n\t},\n\tgetLink(type, id) {\n\t\t/* TODO: Allow action to be executed instead of href as well */\n\t\treturn typeof types[type] !== 'undefined' ? types[type].link(id) : ''\n\t},\n}\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst loadedScripts = {}\nconst loadedStylesheets = {}\n/**\n * @namespace OCP\n * @class Loader\n */\nexport default {\n\n\t/**\n\t * Load a script asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadScript(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedScripts, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedScripts[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst scriptPath = OC.filePath(app, 'js', file)\n\t\t\tconst script = document.createElement('script')\n\t\t\tscript.src = scriptPath\n\t\t\tscript.setAttribute('nonce', btoa(OC.requestToken))\n\t\t\tscript.onload = () => resolve()\n\t\t\tscript.onerror = () => reject(new Error(`Failed to load script from ${scriptPath}`))\n\t\t\tdocument.head.appendChild(script)\n\t\t})\n\t},\n\n\t/**\n\t * Load a stylesheet file asynchronously\n\t *\n\t * @param {string} app the app name\n\t * @param {string} file the script file name\n\t * @return {Promise}\n\t */\n\tloadStylesheet(app, file) {\n\t\tconst key = app + file\n\t\tif (Object.prototype.hasOwnProperty.call(loadedStylesheets, key)) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\t\tloadedStylesheets[key] = true\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst stylePath = OC.filePath(app, 'css', file)\n\t\t\tconst link = document.createElement('link')\n\t\t\tlink.href = stylePath\n\t\t\tlink.type = 'text/css'\n\t\t\tlink.rel = 'stylesheet'\n\t\t\tlink.onload = () => resolve()\n\t\t\tlink.onerror = () => reject(new Error(`Failed to load stylesheet from ${stylePath}`))\n\t\t\tdocument.head.appendChild(link)\n\t\t})\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tshowError,\n\tshowInfo, showMessage,\n\tshowSuccess,\n\tshowWarning,\n} from '@nextcloud/dialogs'\n\nexport default {\n\t/**\n\t * @deprecated 19.0.0 use `showSuccess` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tsuccess(text, options) {\n\t\treturn showSuccess(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showWarning` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\twarning(text, options) {\n\t\treturn showWarning(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showError` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\terror(text, options) {\n\t\treturn showError(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showInfo` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tinfo(text, options) {\n\t\treturn showInfo(text, options)\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `showMessage` from the `@nextcloud/dialogs` package instead\n\t *\n\t * @param {string} text the toast text\n\t * @param {object} options options\n\t * @return {Toast}\n\t */\n\tmessage(text, options) {\n\t\treturn showMessage(text, options)\n\t},\n\n}\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nimport * as AppConfig from './appconfig.js'\nimport * as Comments from './comments.js'\nimport * as WhatsNew from './whatsnew.js'\n\nimport Accessibility from './accessibility.js'\nimport Collaboration from './collaboration.js'\nimport Loader from './loader.js'\nimport Toast from './toast.js'\n\n/** @namespace OCP */\nexport default {\n\tAccessibility,\n\tAppConfig,\n\tCollaboration,\n\tComments,\n\tInitialState: {\n\t\t/**\n\t\t * @deprecated 18.0.0 add https://www.npmjs.com/package/@nextcloud/initial-state to your app\n\t\t */\n\t\tloadState,\n\t},\n\tLoader,\n\t/**\n\t * @deprecated 19.0.0 use the `@nextcloud/dialogs` package instead\n\t */\n\tToast,\n\tWhatsNew,\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable @nextcloud/no-deprecations */\nimport { initCore } from './init.js'\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport 'jquery-migrate/dist/jquery-migrate.min.js'\n// TODO: switch to `jquery-ui` package and import widgets and effects individually\n// `jquery-ui-dist` is used as a workaround for the issue of missing effects\nimport 'jquery-ui-dist/jquery-ui.js'\nimport 'jquery-ui-dist/jquery-ui.css'\nimport 'jquery-ui-dist/jquery-ui.theme.css'\n// END TODO\nimport autosize from 'autosize'\nimport Backbone from 'backbone'\nimport './Polyfill/tooltip.js'\nimport ClipboardJS from 'clipboard'\nimport { dav } from 'davclient.js'\nimport Handlebars from 'handlebars'\nimport md5 from 'blueimp-md5'\nimport moment from 'moment'\nimport 'select2'\nimport 'select2/select2.css'\nimport 'snap.js/dist/snap.js'\nimport 'strengthify'\nimport 'strengthify/strengthify.css'\n\nimport OC from './OC/index.js'\nimport OCP from './OCP/index.js'\nimport OCA from './OCA/index.js'\nimport { getToken as getRequestToken } from './OC/requesttoken.js'\n\nconst warnIfNotTesting = function() {\n\tif (window.TESTING === undefined) {\n\t\tconsole.warn.apply(console, arguments)\n\t}\n}\n\n/**\n * Mark a function as deprecated and automatically\n * warn if used!\n *\n * @param {Function} func the library to deprecate\n * @param {string} funcName the name of the library\n * @param {number} version the version this gets removed\n * @return {Function}\n */\nconst deprecate = (func, funcName, version) => {\n\tconst oldFunc = func\n\tconst newFunc = function() {\n\t\twarnIfNotTesting(`The ${funcName} library is deprecated! It will be removed in nextcloud ${version}.`)\n\t\treturn oldFunc.apply(this, arguments)\n\t}\n\tObject.assign(newFunc, oldFunc)\n\treturn newFunc\n}\n\nconst setDeprecatedProp = (global, cb, msg) => {\n\t(Array.isArray(global) ? global : [global]).forEach(global => {\n\t\tif (window[global] !== undefined) {\n\t\t\tdelete window[global]\n\t\t}\n\t\tObject.defineProperty(window, global, {\n\t\t\tget: () => {\n\t\t\t\tif (msg) {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated: ${msg}`)\n\t\t\t\t} else {\n\t\t\t\t\twarnIfNotTesting(`${global} is deprecated`)\n\t\t\t\t}\n\n\t\t\t\treturn cb()\n\t\t\t},\n\t\t})\n\t})\n}\n\nwindow._ = _\nsetDeprecatedProp(['$', 'jQuery'], () => $, 'The global jQuery is deprecated. It will be removed in a later versions without another warning. Please ship your own.')\nsetDeprecatedProp('autosize', () => autosize, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('Backbone', () => Backbone, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp(['Clipboard', 'ClipboardJS'], () => ClipboardJS, 'please ship your own, this will be removed in Nextcloud 20')\nwindow.dav = dav\nsetDeprecatedProp('Handlebars', () => Handlebars, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('md5', () => md5, 'please ship your own, this will be removed in Nextcloud 20')\nsetDeprecatedProp('moment', () => moment, 'please ship your own, this will be removed in Nextcloud 20')\n\nwindow.OC = OC\nsetDeprecatedProp('initCore', () => initCore, 'this is an internal function')\nsetDeprecatedProp('oc_appswebroots', () => OC.appswebroots, 'use OC.appswebroots instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_config', () => OC.config, 'use OC.config instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_current_user', () => OC.getCurrentUser().uid, 'use OC.getCurrentUser().uid instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_debug', () => OC.debug, 'use OC.debug instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_defaults', () => OC.theme, 'use OC.theme instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_isadmin', OC.isUserAdmin, 'use OC.isUserAdmin() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_requesttoken', () => getRequestToken(), 'use OC.requestToken instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('oc_webroot', () => OC.webroot, 'use OC.getRootPath() instead, this will be removed in Nextcloud 20')\nsetDeprecatedProp('OCDialogs', () => OC.dialogs, 'use OC.dialogs instead, this will be removed in Nextcloud 20')\nwindow.OCP = OCP\nwindow.OCA = OCA\n$.fn.select2 = deprecate($.fn.select2, 'select2', 19)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param [vars] map of placeholder key to value\n * @param {number} [count] number to replace %n with\n * @return {string}\n */\nwindow.t = _.bind(OC.L10N.translate, OC.L10N)\n\n/**\n * translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text_singular the string to translate for exactly one object\n * @param {string} text_plural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param [vars] map of placeholder key to value\n * @return {string} Translated string\n */\nwindow.n = _.bind(OC.L10N.translatePlural, OC.L10N)\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC/index.js'\n\n/**\n * This plugin inserts the right avatar for the user, depending on, whether a\n * custom avatar is uploaded - which it uses then - or not, and display a\n * placeholder with the first letter of the users name instead.\n * For this it queries the core_avatar_get route, thus this plugin is fit very\n * tightly for owncloud, and it may not work anywhere else.\n *\n * You may use this on any <div></div>\n * Here I'm using <div class=\"avatardiv\"></div> as an example.\n *\n * There are 5 ways to call this:\n *\n * 1. $('.avatardiv').avatar('jdoe', 128);\n * This will make the div to jdoe's fitting avatar, with a size of 128px.\n *\n * 2. $('.avatardiv').avatar('jdoe');\n * This will make the div to jdoe's fitting avatar. If the div already has a\n * height, it will be used for the avatars size. Otherwise this plugin will\n * search for 'size' DOM data, to use for avatar size. If neither are available\n * it will default to 64px.\n *\n * 3. $('.avatardiv').avatar();\n * This will search the DOM for 'user' data, to use as the username. If there\n * is no username available it will default to a placeholder with the value of\n * \"?\". The size will be determined the same way, as the second example.\n *\n * 4. $('.avatardiv').avatar('jdoe', 128, true);\n * This will behave like the first example, except it will also append random\n * hashes to the custom avatar images, to force image reloading in IE8.\n *\n * 5. $('.avatardiv').avatar('jdoe', 128, undefined, true);\n * This will behave like the first example, but it will hide the avatardiv, if\n * it will display the default placeholder. undefined is the ie8fix from\n * example 4 and can be either true, or false/undefined, to be ignored.\n *\n * 6. $('.avatardiv').avatar('jdoe', 128, undefined, true, callback);\n * This will behave like the above example, but it will call the function\n * defined in callback after the avatar is placed into the DOM.\n *\n */\n\n$.fn.avatar = function(user, size, ie8fix, hidedefault, callback, displayname) {\n\tconst setAvatarForUnknownUser = function(target) {\n\t\ttarget.imageplaceholder('?')\n\t\ttarget.css('background-color', '#b9b9b9')\n\t}\n\n\tif (typeof (user) !== 'undefined') {\n\t\tuser = String(user)\n\t}\n\tif (typeof (displayname) !== 'undefined') {\n\t\tdisplayname = String(displayname)\n\t}\n\n\tif (typeof (size) === 'undefined') {\n\t\tif (this.height() > 0) {\n\t\t\tsize = this.height()\n\t\t} else if (this.data('size') > 0) {\n\t\t\tsize = this.data('size')\n\t\t} else {\n\t\t\tsize = 64\n\t\t}\n\t}\n\n\tthis.height(size)\n\tthis.width(size)\n\n\tif (typeof (user) === 'undefined') {\n\t\tif (typeof (this.data('user')) !== 'undefined') {\n\t\t\tuser = this.data('user')\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser(this)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// sanitize\n\tuser = String(user).replace(/\\//g, '')\n\n\tconst $div = this\n\tlet url\n\n\t// If this is our own avatar we have to use the version attribute\n\tif (user === OC.getCurrentUser().uid) {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\t})\n\t} else {\n\t\turl = OC.generateUrl(\n\t\t\t'/avatar/{user}/{size}',\n\t\t\t{\n\t\t\t\tuser,\n\t\t\t\tsize: Math.ceil(size * window.devicePixelRatio),\n\t\t\t})\n\t}\n\n\tconst img = new Image()\n\n\t// If the new image loads successfully set it.\n\timg.onload = function() {\n\t\t$div.clearimageplaceholder()\n\t\t$div.append(img)\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\t// Fallback when avatar loading fails:\n\t// Use old placeholder when a displayname attribute is defined,\n\t// otherwise show the unknown user placeholder.\n\timg.onerror = function() {\n\t\t$div.clearimageplaceholder()\n\t\tif (typeof (displayname) !== 'undefined') {\n\t\t\t$div.imageplaceholder(user, displayname)\n\t\t} else {\n\t\t\tsetAvatarForUnknownUser($div)\n\t\t}\n\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback()\n\t\t}\n\t}\n\n\tif (size < 32) {\n\t\t$div.addClass('icon-loading-small')\n\t} else {\n\t\t$div.addClass('icon-loading')\n\t}\n\timg.width = size\n\timg.height = size\n\timg.src = url\n\timg.alt = ''\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport OC from '../OC/index.js'\nimport { isA11yActivation } from '../Util/a11y.js'\n\nconst LIST = ''\n\t+ '<div class=\"menu popovermenu menu-left hidden contactsmenu-popover\">'\n\t+ ' <ul>'\n\t+ ' <li>'\n\t+ ' <a>'\n\t+ ' <span class=\"icon-loading-small\"></span>'\n\t+ ' </a>'\n\t+ ' </li>'\n\t+ ' </ul>'\n\t+ '</div>'\n\nconst entryTemplate = require('./contactsmenu/jquery_entry.handlebars')\n\n$.fn.contactsMenu = function(shareWith, shareType, appendTo) {\n\t// 0 - user, 4 - email, 6 - remote\n\tconst allowedTypes = [0, 4, 6]\n\tif (allowedTypes.indexOf(shareType) === -1) {\n\t\treturn\n\t}\n\n\tconst $div = this\n\tappendTo.append(LIST)\n\tconst $list = appendTo.find('div.contactsmenu-popover')\n\n\t$div.on('click keydown', function(event) {\n\t\tif (!isA11yActivation(event)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!$list.hasClass('hidden')) {\n\t\t\t$list.addClass('hidden')\n\t\t\t$list.hide()\n\t\t\treturn\n\t\t}\n\n\t\t$list.removeClass('hidden')\n\t\t$list.show()\n\n\t\tif ($list.hasClass('loaded')) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('loaded')\n\t\t$.ajax(OC.generateUrl('/contactsmenu/findOne'), {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tshareType,\n\t\t\t\tshareWith,\n\t\t\t},\n\t\t}).then(function(data) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet actions\n\t\t\tif (!data.topAction) {\n\t\t\t\tactions = [{\n\t\t\t\t\thyperlink: '#',\n\t\t\t\t\ttitle: t('core', 'No action available'),\n\t\t\t\t}]\n\t\t\t} else {\n\t\t\t\tactions = [data.topAction].concat(data.actions)\n\t\t\t}\n\n\t\t\tactions.forEach(function(action) {\n\t\t\t\t$list.find('ul').append(entryTemplate(action))\n\t\t\t})\n\n\t\t\t$div.trigger('load')\n\t\t}, function(jqXHR) {\n\t\t\t$list.find('ul').find('li').addClass('hidden')\n\n\t\t\tlet title\n\t\t\tif (jqXHR.status === 404) {\n\t\t\t\ttitle = t('core', 'No action available')\n\t\t\t} else {\n\t\t\t\ttitle = t('core', 'Error fetching contact actions')\n\t\t\t}\n\n\t\t\t$list.find('ul').append(entryTemplate({\n\t\t\t\thyperlink: '#',\n\t\t\t\ttitle,\n\t\t\t}))\n\n\t\t\t$div.trigger('loaderror', jqXHR)\n\t\t})\n\t})\n\n\t$(document).click(function(event) {\n\t\tconst clickedList = ($list.has(event.target).length > 0)\n\t\tlet clickedTarget = ($div.has(event.target).length > 0)\n\n\t\t$div.each(function() {\n\t\t\tif ($(this).is(event.target)) {\n\t\t\t\tclickedTarget = true\n\t\t\t}\n\t\t})\n\n\t\tif (clickedList || clickedTarget) {\n\t\t\treturn\n\t\t}\n\n\t\t$list.addClass('hidden')\n\t\t$list.hide()\n\t})\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * check if an element exists.\n * allows you to write if ($('#myid').exists()) to increase readability\n *\n * @see {@link http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery}\n * @return {boolean}\n */\n$.fn.exists = function() {\n\treturn this.length > 0\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Filter jQuery selector by attribute value\n *\n * @param {string} attrName attribute name\n * @param {string} attrValue attribute value\n * @return {void}\n */\n$.fn.filterAttr = function(attrName, attrValue) {\n\treturn this.filter(function() {\n\t\treturn $(this).attr(attrName) === attrValue\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Gary Kim <gary@garykim.dev>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { createFocusTrap } from 'focus-trap'\nimport { isA11yActivation } from '../Util/a11y.js'\n\n$.widget('oc.ocdialog', {\n\toptions: {\n\t\twidth: 'auto',\n\t\theight: 'auto',\n\t\tcloseButton: true,\n\t\tcloseOnEscape: true,\n\t\tcloseCallback: null,\n\t\tmodal: false,\n\t},\n\t_create() {\n\t\tconst self = this\n\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[0].style.display,\n\t\t\twidth: this.element[0].style.width,\n\t\t\theight: this.element[0].style.height,\n\t\t}\n\n\t\tthis.originalTitle = this.element.attr('title')\n\t\tthis.options.title = this.options.title || this.originalTitle\n\n\t\tthis.$dialog = $('<div class=\"oc-dialog\"></div>')\n\t\t\t.attr({\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: 'dialog',\n\t\t\t})\n\t\t\t.insertBefore(this.element)\n\t\tthis.$dialog.append(this.element.detach())\n\t\tthis.element.removeAttr('title').addClass('oc-dialog-content').appendTo(this.$dialog)\n\n\t\t// Activate the primary button on enter if there is a single input\n\t\tif (self.element.find('input').length === 1) {\n\t\t\tconst $input = self.element.find('input')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tif (self.$buttonrow) {\n\t\t\t\t\t\tconst $button = self.$buttonrow.find('button.primary')\n\t\t\t\t\t\tif ($button && !$button.prop('disabled')) {\n\t\t\t\t\t\t\t$button.click()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.$dialog.css({\n\t\t\tdisplay: 'inline-block',\n\t\t\tposition: 'fixed',\n\t\t})\n\n\t\tthis.enterCallback = null\n\n\t\t$(document).on('keydown keyup', function(event) {\n\t\t\tif (\n\t\t\t\tevent.target !== self.$dialog.get(0)\n\t\t\t\t&& self.$dialog.find($(event.target)).length === 0\n\t\t\t) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// Escape\n\t\t\tif (\n\t\t\t\tevent.keyCode === 27\n\t\t\t\t&& event.type === 'keydown'\n\t\t\t\t&& self.options.closeOnEscape\n\t\t\t) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tself.close()\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Enter\n\t\t\tif (event.keyCode === 13) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tif (self.enterCallback !== null) {\n\t\t\t\t\tself.enterCallback()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\t\t})\n\n\t\tthis._setOptions(this.options)\n\t\tthis._createOverlay()\n\t\tthis._useFocusTrap()\n\t},\n\t_init() {\n\t\tthis._trigger('open')\n\t},\n\t_setOption(key, value) {\n\t\tconst self = this\n\t\tswitch (key) {\n\t\tcase 'title':\n\t\t\tif (this.$title) {\n\t\t\t\tthis.$title.text(value)\n\t\t\t} else {\n\t\t\t\tconst $title = $('<h2 class=\"oc-dialog-title\">'\n\t\t\t\t\t\t+ value\n\t\t\t\t\t\t+ '</h2>')\n\t\t\t\tthis.$title = $title.prependTo(this.$dialog)\n\t\t\t}\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'buttons':\n\t\t\tif (this.$buttonrow) {\n\t\t\t\tthis.$buttonrow.empty()\n\t\t\t} else {\n\t\t\t\tconst $buttonrow = $('<div class=\"oc-dialog-buttonrow\"></div>')\n\t\t\t\tthis.$buttonrow = $buttonrow.appendTo(this.$dialog)\n\t\t\t}\n\t\t\tif (value.length === 1) {\n\t\t\t\tthis.$buttonrow.addClass('onebutton')\n\t\t\t} else if (value.length === 2) {\n\t\t\t\tthis.$buttonrow.addClass('twobuttons')\n\t\t\t} else if (value.length === 3) {\n\t\t\t\tthis.$buttonrow.addClass('threebuttons')\n\t\t\t}\n\t\t\t$.each(value, function(idx, val) {\n\t\t\t\tconst $button = $('<button>').text(val.text)\n\t\t\t\tif (val.classes) {\n\t\t\t\t\t$button.addClass(val.classes)\n\t\t\t\t}\n\t\t\t\tif (val.defaultButton) {\n\t\t\t\t\t$button.addClass('primary')\n\t\t\t\t\tself.$defaultButton = $button\n\t\t\t\t}\n\t\t\t\tself.$buttonrow.append($button)\n\t\t\t\t$button.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tval.click.apply(self.element[0], arguments)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.$buttonrow.find('button')\n\t\t\t\t.on('focus', function(event) {\n\t\t\t\t\tself.$buttonrow.find('button').removeClass('primary')\n\t\t\t\t\t$(this).addClass('primary')\n\t\t\t\t})\n\t\t\tthis._setSizes()\n\t\t\tbreak\n\t\tcase 'style':\n\t\t\tif (value.buttons !== undefined) {\n\t\t\t\tthis.$buttonrow.addClass(value.buttons)\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'closeButton':\n\t\t\tif (value) {\n\t\t\t\tconst $closeButton = $('<button class=\"oc-dialog-close\"></button>')\n\t\t\t\t$closeButton.attr('aria-label', t('core', 'Close \"{dialogTitle}\" dialog', { dialogTitle: this.$title || this.options.title }))\n\t\t\t\tthis.$dialog.prepend($closeButton)\n\t\t\t\t$closeButton.on('click keydown', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself.options.closeCallback && self.options.closeCallback()\n\t\t\t\t\t\tself.close()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis.$dialog.find('.oc-dialog-close').remove()\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'width':\n\t\t\tthis.$dialog.css('width', value)\n\t\t\tbreak\n\t\tcase 'height':\n\t\t\tthis.$dialog.css('height', value)\n\t\t\tbreak\n\t\tcase 'close':\n\t\t\tthis.closeCB = value\n\t\t\tbreak\n\t\t}\n\t\t// this._super(key, value);\n\t\t$.Widget.prototype._setOption.apply(this, arguments)\n\t},\n\t_setOptions(options) {\n\t\t// this._super(options);\n\t\t$.Widget.prototype._setOptions.apply(this, arguments)\n\t},\n\t_setSizes() {\n\t\tlet lessHeight = 0\n\t\tif (this.$title) {\n\t\t\tlessHeight += this.$title.outerHeight(true)\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tlessHeight += this.$buttonrow.outerHeight(true)\n\t\t}\n\t\tthis.element.css({\n\t\t\theight: 'calc(100% - ' + lessHeight + 'px)',\n\t\t})\n\t},\n\t_createOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tconst self = this\n\t\tlet contentDiv = $('#content')\n\t\tif (contentDiv.length === 0) {\n\t\t\t// nextcloud-vue compatibility\n\t\t\tcontentDiv = $('.content')\n\t\t}\n\t\tthis.overlay = $('<div>')\n\t\t\t.addClass('oc-dialog-dim')\n\t\t\t.appendTo(contentDiv)\n\t\tthis.overlay.on('click keydown keyup', function(event) {\n\t\t\tif (event.target !== self.$dialog.get(0) && self.$dialog.find($(event.target)).length === 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t}\n\t\t})\n\t},\n\t_destroyOverlay() {\n\t\tif (!this.options.modal) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.overlay) {\n\t\t\tthis.overlay.off('click keydown keyup')\n\t\t\tthis.overlay.remove()\n\t\t\tthis.overlay = null\n\t\t}\n\t},\n\t_useFocusTrap() {\n\t\t// Create global stack if undefined\n\t\tObject.assign(window, { _nc_focus_trap: window._nc_focus_trap || [] })\n\n\t\tconst dialogElement = this.$dialog[0]\n\t\tthis.focusTrap = createFocusTrap(dialogElement, {\n\t\t\tallowOutsideClick: true,\n\t\t\ttrapStack: window._nc_focus_trap,\n\t\t\tfallbackFocus: dialogElement,\n\t\t})\n\n\t\tthis.focusTrap.activate()\n\t},\n\t_clearFocusTrap() {\n\t\tthis.focusTrap?.deactivate()\n\t\tthis.focusTrap = null\n\t},\n\twidget() {\n\t\treturn this.$dialog\n\t},\n\tsetEnterCallback(callback) {\n\t\tthis.enterCallback = callback\n\t},\n\tunsetEnterCallback() {\n\t\tthis.enterCallback = null\n\t},\n\tclose() {\n\t\tthis._clearFocusTrap()\n\t\tthis._destroyOverlay()\n\t\tconst self = this\n\t\t// Ugly hack to catch remaining keyup events.\n\t\tsetTimeout(function() {\n\t\t\tself._trigger('close', self)\n\t\t}, 200)\n\n\t\tself.$dialog.remove()\n\t\tthis.destroy()\n\t},\n\tdestroy() {\n\t\tif (this.$title) {\n\t\t\tthis.$title.remove()\n\t\t}\n\t\tif (this.$buttonrow) {\n\t\t\tthis.$buttonrow.remove()\n\t\t}\n\n\t\tif (this.originalTitle) {\n\t\t\tthis.element.attr('title', this.originalTitle)\n\t\t}\n\t\tthis.element.removeClass('oc-dialog-content')\n\t\t\t.css(this.originalCss).detach().insertBefore(this.$dialog)\n\t\tthis.$dialog.remove()\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport escapeHTML from 'escape-html'\n\n/**\n * jQuery plugin for micro templates\n *\n * Strings are automatically escaped, but that can be disabled by setting\n * escapeFunction to null.\n *\n * Usage examples:\n *\n * var htmlStr = '<p>Bake, uncovered, until the {greasystuff} is melted and the {pasta} is heated through, about {min} minutes.</p>'\n * $(htmlStr).octemplate({greasystuff: 'cheese', pasta: 'macaroni', min: 10});\n *\n * var htmlStr = '<p>Welcome back {user}</p>';\n * $(htmlStr).octemplate({user: 'John Q. Public'}, {escapeFunction: null});\n *\n * Be aware that the target string must be wrapped in an HTML element for the\n * plugin to work. The following won't work:\n *\n * var textStr = 'Welcome back {user}';\n * $(textStr).octemplate({user: 'John Q. Public'});\n *\n * For anything larger than one-liners, you can use a simple $.get() ajax\n * request to get the template, or you can embed them it the page using the\n * text/template type:\n *\n * <script id=\"contactListItemTemplate\" type=\"text/template\">\n * <tr class=\"contact\" data-id=\"{id}\">\n * <td class=\"name\">\n * <input type=\"checkbox\" name=\"id\" value=\"{id}\" /><span class=\"nametext\">{name}</span>\n * </td>\n * <td class=\"email\">\n * <a href=\"mailto:{email}\">{email}</a>\n * </td>\n * <td class=\"phone\">{phone}</td>\n * </tr>\n * </script>\n *\n * var $tmpl = $('#contactListItemTemplate');\n * var contacts = // fetched in some ajax call\n *\n * $.each(contacts, function(idx, contact) {\n * $contactList.append(\n * $tmpl.octemplate({\n * id: contact.getId(),\n * name: contact.getDisplayName(),\n * email: contact.getPreferredEmail(),\n * phone: contact.getPreferredPhone(),\n * });\n * );\n * });\n */\n/**\n * Object Template\n * Inspired by micro templating done by e.g. underscore.js\n */\nconst Template = {\n\tinit(vars, options, elem) {\n\t\t// Mix in the passed in options with the default options\n\t\tthis.vars = vars\n\t\tthis.options = $.extend({}, this.options, options)\n\n\t\tthis.elem = elem\n\t\tconst self = this\n\n\t\tif (typeof this.options.escapeFunction === 'function') {\n\t\t\tconst keys = Object.keys(this.vars)\n\t\t\tfor (let key = 0; key < keys.length; key++) {\n\t\t\t\tif (typeof this.vars[keys[key]] === 'string') {\n\t\t\t\t\tthis.vars[keys[key]] = self.options.escapeFunction(this.vars[keys[key]])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst _html = this._build(this.vars)\n\t\treturn $(_html)\n\t},\n\t// From stackoverflow.com/questions/1408289/best-way-to-do-variable-interpolation-in-javascript\n\t_build(o) {\n\t\tconst data = this.elem.attr('type') === 'text/template' ? this.elem.html() : this.elem.get(0).outerHTML\n\t\ttry {\n\t\t\treturn data.replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = o[b]\n\t\t\t\t\treturn typeof r === 'string' || typeof r === 'number' ? r : a\n\t\t\t\t}\n\t\t\t)\n\t\t} catch (e) {\n\t\t\tconsole.error(e, 'data:', data)\n\t\t}\n\t},\n\toptions: {\n\t\tescapeFunction: escapeHTML,\n\t},\n}\n\n$.fn.octemplate = function(vars, options) {\n\tvars = vars || {}\n\tif (this.length) {\n\t\tconst _template = Object.create(Template)\n\t\treturn _template.init(vars, options, this)\n\t}\n}\n","/**\n * @copyright 2016-2018 John Molakvoæ <skjnldsv@protonmail.com>\n * @copyright 2013 Morris Jobke <morris.jobke@gmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Sergey Shliakhov <husband.sergey@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport md5 from 'blueimp-md5'\n\n/*\n * Adds a background color to the element called on and adds the first character\n * of the passed in string. This string is also the seed for the generation of\n * the background color.\n *\n * You have following HTML:\n *\n * <div id=\"albumart\"></div>\n *\n * And call this from Javascript:\n *\n * $('#albumart').imageplaceholder('The Album Title');\n *\n * Which will result in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">T</div>\n *\n * You may also call it like this, to have a different background, than the seed:\n *\n * $('#albumart').imageplaceholder('The Album Title', 'Album Title');\n *\n * Resulting in:\n *\n * <div id=\"albumart\" style=\"background-color: rgb(121, 90, 171); ... \">A</div>\n *\n */\n\n/*\n* Alternatively, you can use the prototype function to convert your string to rgb colors:\n*\n* \"a6741a86aded5611a8e46ce16f2ad646\".toRgb()\n*\n* Will return the rgb parameters within the following object:\n*\n* Color {r: 208, g: 158, b: 109}\n*\n*/\n\nconst toRgb = (s) => {\n\t// Normalize hash\n\tvar hash = s.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tfunction Color(r, g, b) {\n\t\tthis.r = r\n\t\tthis.g = g\n\t\tthis.b = b\n\t}\n\n\tfunction stepCalc(steps, ends) {\n\t\tvar step = new Array(3)\n\t\tstep[0] = (ends[1].r - ends[0].r) / steps\n\t\tstep[1] = (ends[1].g - ends[0].g) / steps\n\t\tstep[2] = (ends[1].b - ends[0].b) / steps\n\t\treturn step\n\t}\n\n\tfunction mixPalette(steps, color1, color2) {\n\t\tvar palette = []\n\t\tpalette.push(color1)\n\t\tvar step = stepCalc(steps, [color1, color2])\n\t\tfor (var i = 1; i < steps; i++) {\n\t\t\tvar r = parseInt(color1.r + (step[0] * i))\n\t\t\tvar g = parseInt(color1.g + (step[1] * i))\n\t\t\tvar b = parseInt(color1.b + (step[2] * i))\n\t\t\tpalette.push(new Color(r, g, b))\n\t\t}\n\t\treturn palette\n\t}\n\n\tconst red = new Color(182, 70, 157);\n\tconst yellow = new Color(221, 203, 85);\n\tconst blue = new Color(0, 130, 201); // Nextcloud blue\n\t// Number of steps to go from a color to another\n\t// 3 colors * 6 will result in 18 generated colors\n\tconst steps = 6;\n\n\tconst palette1 = mixPalette(steps, red, yellow);\n\tconst palette2 = mixPalette(steps, yellow, blue);\n\tconst palette3 = mixPalette(steps, blue, red);\n\n\tconst finalPalette = palette1.concat(palette2).concat(palette3);\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tvar finalInt = 0\n\t\tvar result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (var i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\t\t// Adds up all results\n\t\tfor (var j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt) % maximum)\n\t}\n\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nString.prototype.toRgb = function() {\n\tconsole.warn('String.prototype.toRgb is deprecated! It will be removed in Nextcloud 22.')\n\n\treturn toRgb(this)\n}\n\n$.fn.imageplaceholder = function(seed, text, size) {\n\ttext = text || seed\n\n\t// Compute the hash\n\tvar rgb = toRgb(seed)\n\tthis.css('background-color', 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')')\n\n\t// Placeholders are square\n\tvar height = this.height() || size || 32\n\tthis.height(height)\n\tthis.width(height)\n\n\t// CSS rules\n\tthis.css('color', '#fff')\n\tthis.css('font-weight', 'normal')\n\tthis.css('text-align', 'center')\n\n\t// calculate the height\n\tthis.css('line-height', height + 'px')\n\tthis.css('font-size', (height * 0.55) + 'px')\n\n\tif (seed !== null && seed.length) {\n\t\tvar placeholderText = text.replace(/\\s+/g, ' ').trim().split(' ', 2).map((word) => word[0].toUpperCase()).join('')\n\t\tthis.html(placeholderText);\n\t}\n}\n\n$.fn.clearimageplaceholder = function() {\n\tthis.css('background-color', '')\n\tthis.css('color', '')\n\tthis.css('font-weight', '')\n\tthis.css('text-align', '')\n\tthis.css('line-height', '')\n\tthis.css('font-size', '')\n\tthis.html('')\n\tthis.removeClass('icon-loading')\n\tthis.removeClass('icon-loading-small')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport { getToken } from '../OC/requesttoken.js'\n\n$(document).on('ajaxSend', function(elm, xhr, settings) {\n\tif (settings.crossDomain === false) {\n\t\txhr.setRequestHeader('requesttoken', getToken())\n\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t}\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * select a range in an input field\n *\n * @see {@link http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area}\n * @param {number} start start selection from\n * @param {number} end number of char from start\n * @return {void}\n */\n$.fn.selectRange = function(start, end) {\n\treturn this.each(function() {\n\t\tif (this.setSelectionRange) {\n\t\t\tthis.focus()\n\t\t\tthis.setSelectionRange(start, end)\n\t\t} else if (this.createTextRange) {\n\t\t\tconst range = this.createTextRange()\n\t\t\trange.collapse(true)\n\t\t\trange.moveEnd('character', end)\n\t\t\trange.moveStart('character', start)\n\t\t\trange.select()\n\t\t}\n\t})\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * @name Show Password\n * @description\n * @version 1.3.0\n * @requires Jquery 1.5\n *\n * @author Jan Jarfalk <jan.jarfalk@unwrongest.com>\n * author-website http://www.unwrongest.com\n *\n * special-thanks Michel Gratton\n *\n * @license MIT\n */\n$.fn.extend({\n\tshowPassword(c) {\n\n\t\t// Setup callback object\n\t\tconst callback = { fn: null, args: {} }\n\t\tcallback.fn = c\n\n\t\t// Clones passwords and turn the clones into text inputs\n\t\tconst cloneElement = function(element) {\n\n\t\t\tconst $element = $(element)\n\n\t\t\tconst $clone = $('<input />')\n\n\t\t\t// Name added for JQuery Validation compatibility\n\t\t\t// Element name is required to avoid script warning.\n\t\t\t$clone.attr({\n\t\t\t\ttype: 'text',\n\t\t\t\tclass: $element.attr('class'),\n\t\t\t\tstyle: $element.attr('style'),\n\t\t\t\tsize: $element.attr('size'),\n\t\t\t\tname: $element.attr('name') + '-clone',\n\t\t\t\ttabindex: $element.attr('tabindex'),\n\t\t\t\tautocomplete: 'off',\n\t\t\t})\n\n\t\t\tif ($element.attr('placeholder') !== undefined) {\n\t\t\t\t$clone.attr('placeholder', $element.attr('placeholder'))\n\t\t\t}\n\n\t\t\treturn $clone\n\n\t\t}\n\n\t\t// Transfers values between two elements\n\t\tconst update = function(a, b) {\n\t\t\tb.val(a.val())\n\t\t}\n\n\t\t// Shows a or b depending on checkbox\n\t\tconst setState = function(checkbox, a, b) {\n\n\t\t\tif (checkbox.is(':checked')) {\n\t\t\t\tupdate(a, b)\n\t\t\t\tb.show()\n\t\t\t\ta.hide()\n\t\t\t} else {\n\t\t\t\tupdate(b, a)\n\t\t\t\tb.hide()\n\t\t\t\ta.show()\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.each(function() {\n\n\t\t\tconst $input = $(this)\n\t\t\tconst $checkbox = $($input.data('typetoggle'))\n\n\t\t\t// Create clone\n\t\t\tconst $clone = cloneElement($input)\n\t\t\t$clone.insertAfter($input)\n\n\t\t\t// Set callback arguments\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.args.input = $input\n\t\t\t\tcallback.args.checkbox = $checkbox\n\t\t\t\tcallback.args.clone = $clone\n\t\t\t}\n\n\t\t\t$checkbox.bind('click', function() {\n\t\t\t\tsetState($checkbox, $input, $clone)\n\t\t\t})\n\n\t\t\t$input.bind('keyup', function() {\n\t\t\t\tupdate($input, $clone)\n\t\t\t})\n\n\t\t\t$clone.bind('keyup', function() {\n\t\t\t\tupdate($clone, $input)\n\n\t\t\t\t// Added for JQuery Validation compatibility\n\t\t\t\t// This will trigger validation if it's ON for keyup event\n\t\t\t\t$input.trigger('keyup')\n\n\t\t\t})\n\n\t\t\t// Added for JQuery Validation compatibility\n\t\t\t// This will trigger validation if it's ON for blur event\n\t\t\t$clone.bind('blur', function() {\n\t\t\t\t$input.trigger('focusout')\n\t\t\t})\n\n\t\t\tsetState($checkbox, $input, $clone)\n\n\t\t\t// set type of password field clone (type=text) to password right on submit\n\t\t\t// to prevent browser save the value of this field\n\t\t\t$clone.closest('form').submit(function(e) {\n\t\t\t\t// .prop has to be used, because .attr throws\n\t\t\t\t// an error while changing a type of an input\n\t\t\t\t// element\n\t\t\t\t$clone.prop('type', 'password')\n\t\t\t})\n\n\t\t\tif (callback.fn) {\n\t\t\t\tcallback.fn(callback.args)\n\t\t\t}\n\n\t\t})\n\t},\n})\n","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n// Set autocomplete width the same as the related input\n// See http://stackoverflow.com/a/11845718\n$.ui.autocomplete.prototype._resizeMenu = function() {\n\tconst ul = this.menu.element\n\tul.outerWidth(this.element.outerWidth())\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery-ui-fixes.scss\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./jquery.ocdialog.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nimport './avatar.js'\nimport './contactsmenu.js'\nimport './exists.js'\nimport './filterattr.js'\nimport './ocdialog.js'\nimport './octemplate.js'\nimport './placeholder.js'\nimport './requesttoken.js'\nimport './selectrange.js'\nimport './showpassword.js'\nimport './ui-fixes.js'\n\nimport './css/jquery-ui-fixes.scss'\nimport './css/jquery.ocdialog.scss'\n\n/**\n * Disable automatic evaluation of responses for $.ajax() functions (and its\n * higher-level alternatives like $.get() and $.post()).\n *\n * If a response to a $.ajax() request returns a content type of \"application/javascript\"\n * JQuery would previously execute the response body. This is a pretty unexpected\n * behaviour and can result in a bypass of our Content-Security-Policy as well as\n * multiple unexpected XSS vectors.\n */\n$.ajaxSetup({\n\tcontents: {\n\t\tscript: false,\n\t},\n})\n\n/**\n * Disable execution of eval in jQuery. We do require an allowed eval CSP\n * configuration at the moment for handlebars et al. But for jQuery there is\n * not much of a reason to execute JavaScript directly via eval.\n *\n * This thus mitigates some unexpected XSS vectors.\n */\n$.globalEval = function() {\n}\n","/**\n * @copyright 2018 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport 'core-js/stable/index.js'\nimport 'regenerator-runtime/runtime.js'\nimport './Polyfill/index.js'\n\n// If you remove the line below, tests won't pass\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index.js'\n\nimport './globals.js'\nimport './jquery/index.js'\nimport { initCore } from './init.js'\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tinitCore()\n\n\t// fallback to hashchange when no history support\n\tif (window.history.pushState) {\n\t\twindow.onpopstate = _.bind(OC.Util.History._onPopState, OC.Util.History)\n\t} else {\n\t\t$(window).on('hashchange', _.bind(OC.Util.History._onPopState, OC.Util.History))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"images/ui-icons_1d2d44_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"images/ui-icons_ffffff_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"images/ui-icons_ffd27a_256x240.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"images/ui-bg_diagonals-thick_20_666666_40x40.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"images/ui-bg_flat_10_000000_40x100.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ui-widget-content{border:1px solid var(--color-border);background:var(--color-main-background) none;color:var(--color-main-text)}.ui-widget-content a{color:var(--color-main-text)}.ui-widget-header{border:none;color:var(--color-main-text);background-image:none}.ui-widget-header a{color:var(--color-main-text)}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid var(--color-border);background:var(--color-main-background) none;font-weight:bold;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ddd;background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:var(--color-main-text)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid var(--color-primary-element);background:var(--color-main-background) none;font-weight:bold;color:var(--color-main-text)}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:var(--color-main-text)}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid var(--color-main-background);background:var(--color-main-background) none;color:var(--color-text-light);font-weight:600}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:var(--color-text-lighter)}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:var(--color-error);background:var(--color-error) none;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-state-default .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-active .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.ui-state-highlight .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.ui-icon.ui-icon-none{display:none}.ui-widget-overlay{background:#666 url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") 50% 50% repeat;opacity:.5}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") 50% 50% repeat-x;opacity:.2;border-radius:5px}.ui-tabs{border:none}.ui-tabs .ui-tabs-nav.ui-corner-all{border-bottom-left-radius:0;border-bottom-right-radius:0}.ui-tabs .ui-tabs-nav{background:none;margin-bottom:15px}.ui-tabs .ui-tabs-nav .ui-state-default{border:none;border-bottom:1px solid rgba(0,0,0,0);font-weight:normal;margin:0 !important;padding:0 !important}.ui-tabs .ui-tabs-nav .ui-state-hover,.ui-tabs .ui-tabs-nav .ui-state-active{border:none;border-bottom:1px solid var(--color-main-text);color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-hover a,.ui-tabs .ui-tabs-nav .ui-state-hover a:link,.ui-tabs .ui-tabs-nav .ui-state-hover a:hover,.ui-tabs .ui-tabs-nav .ui-state-hover a:visited,.ui-tabs .ui-tabs-nav .ui-state-active a,.ui-tabs .ui-tabs-nav .ui-state-active a:link,.ui-tabs .ui-tabs-nav .ui-state-active a:hover,.ui-tabs .ui-tabs-nav .ui-state-active a:visited{color:var(--color-main-text)}.ui-tabs .ui-tabs-nav .ui-state-active{font-weight:bold}.ui-autocomplete.ui-menu{padding:0}.ui-autocomplete.ui-menu.item-count-1,.ui-autocomplete.ui-menu.item-count-2{overflow-y:hidden}.ui-autocomplete.ui-menu .ui-menu-item a{color:var(--color-text-lighter);display:block;padding:4px 4px 4px 14px}.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-focus,.ui-autocomplete.ui-menu .ui-menu-item a.ui-state-active{box-shadow:inset 4px 0 var(--color-primary-element);color:var(--color-main-text)}.ui-autocomplete.ui-widget-content{background:var(--color-main-background);border-top:none}.ui-autocomplete.ui-corner-all{border-radius:0;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.ui-autocomplete .ui-state-hover,.ui-autocomplete .ui-widget-content .ui-state-hover,.ui-autocomplete .ui-widget-header .ui-state-hover,.ui-autocomplete .ui-state-focus,.ui-autocomplete .ui-widget-content .ui-state-focus,.ui-autocomplete .ui-widget-header .ui-state-focus{border:1px solid rgba(0,0,0,0);background:inherit;color:var(--color-primary-element)}.ui-autocomplete .ui-menu-item a{border-radius:0 !important}.ui-button.primary{background-color:var(--color-primary-element);color:var(--color-primary-element-text);border:1px solid var(--color-primary-element-text)}.ui-button:hover{font-weight:bold !important}.ui-draggable-handle,.ui-selectable{touch-action:pan-y}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery-ui-fixes.scss\"],\"names\":[],\"mappings\":\"AAEA,mBACC,oCAAA,CACA,4CAAA,CACA,4BAAA,CAED,qBACC,4BAAA,CAED,kBACC,WAAA,CACA,4BAAA,CACA,qBAAA,CAED,oBACC,4BAAA,CAKD,2FAGC,oCAAA,CACA,4CAAA,CACA,gBAAA,CACA,UAAA,CAED,yEAGC,UAAA,CAED,0KAMC,qBAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,2FAIC,4BAAA,CAED,wFAGC,6CAAA,CACA,4CAAA,CACA,gBAAA,CACA,4BAAA,CAED,sEAGC,4BAAA,CAKD,iGAGC,6CAAA,CACA,4CAAA,CACA,6BAAA,CACA,eAAA,CAED,uGAGC,+BAAA,CAED,qFAGC,yBAAA,CACA,kCAAA,CACA,UAAA,CAED,2FAGC,UAAA,CAED,oGAGC,UAAA,CAKD,2BACC,wDAAA,CAED,kDAEC,wDAAA,CAED,0BACC,wDAAA,CAED,6BACC,wDAAA,CAED,uDAEC,wDAAA,CAED,sBACC,YAAA,CAMD,mBACC,sEAAA,CACA,UAAA,CAED,kBACC,oBAAA,CACA,WAAA,CACA,wEAAA,CACA,UAAA,CACA,iBAAA,CAID,SACC,WAAA,CAEA,oCACC,2BAAA,CACA,4BAAA,CAGD,sBACC,eAAA,CACA,kBAAA,CAEA,wCACC,WAAA,CACA,qCAAA,CACA,kBAAA,CACA,mBAAA,CACA,oBAAA,CAGD,6EAEC,WAAA,CACA,8CAAA,CACA,4BAAA,CACA,0WACC,4BAAA,CAGF,uCACC,gBAAA,CAOF,yBACC,SAAA,CAIA,4EAEC,iBAAA,CAGD,yCACC,+BAAA,CACA,aAAA,CACA,wBAAA,CAEA,iHACC,mDAAA,CACA,4BAAA,CAKH,mCACC,uCAAA,CACA,eAAA,CAGD,+BACC,eAAA,CACA,8CAAA,CACA,+CAAA,CAGD,gRAKC,8BAAA,CACA,kBAAA,CACA,kCAAA,CAIA,iCACC,0BAAA,CAKH,mBACC,6CAAA,CACA,uCAAA,CACA,kDAAA,CAID,iBACI,2BAAA,CAKJ,oCAEC,kBAAA\",\"sourcesContent\":[\"/* Component containers\\n----------------------------------*/\\n.ui-widget-content {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-content a {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-widget-header {\\n\\tborder: none;\\n\\tcolor: var(--color-main-text);\\n\\tbackground-image: none;\\n}\\n.ui-widget-header a {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction states\\n----------------------------------*/\\n.ui-state-default,\\n.ui-widget-content .ui-state-default,\\n.ui-widget-header .ui-state-default {\\n\\tborder: 1px solid var(--color-border);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: #555;\\n}\\n.ui-state-default a,\\n.ui-state-default a:link,\\n.ui-state-default a:visited {\\n\\tcolor: #555;\\n}\\n.ui-state-hover,\\n.ui-widget-content .ui-state-hover,\\n.ui-widget-header .ui-state-hover,\\n.ui-state-focus,\\n.ui-widget-content .ui-state-focus,\\n.ui-widget-header .ui-state-focus {\\n\\tborder: 1px solid #ddd;\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-hover a,\\n.ui-state-hover a:hover,\\n.ui-state-hover a:link,\\n.ui-state-hover a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active,\\n.ui-widget-content .ui-state-active,\\n.ui-widget-header .ui-state-active {\\n\\tborder: 1px solid var(--color-primary-element);\\n\\tbackground: var(--color-main-background) none;\\n\\tfont-weight: bold;\\n\\tcolor: var(--color-main-text);\\n}\\n.ui-state-active a,\\n.ui-state-active a:link,\\n.ui-state-active a:visited {\\n\\tcolor: var(--color-main-text);\\n}\\n\\n/* Interaction Cues\\n----------------------------------*/\\n.ui-state-highlight,\\n.ui-widget-content .ui-state-highlight,\\n.ui-widget-header .ui-state-highlight {\\n\\tborder: 1px solid var(--color-main-background);\\n\\tbackground: var(--color-main-background) none;\\n\\tcolor: var(--color-text-light);\\n\\tfont-weight: 600;\\n}\\n.ui-state-highlight a,\\n.ui-widget-content .ui-state-highlight a,\\n.ui-widget-header .ui-state-highlight a {\\n\\tcolor: var(--color-text-lighter);\\n}\\n.ui-state-error,\\n.ui-widget-content .ui-state-error,\\n.ui-widget-header .ui-state-error {\\n\\tborder: var(--color-error);\\n\\tbackground: var(--color-error) none;\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error a,\\n.ui-widget-content .ui-state-error a,\\n.ui-widget-header .ui-state-error a {\\n\\tcolor: #ffffff;\\n}\\n.ui-state-error-text,\\n.ui-widget-content .ui-state-error-text,\\n.ui-widget-header .ui-state-error-text {\\n\\tcolor: #ffffff;\\n}\\n\\n/* Icons\\n----------------------------------*/\\n.ui-state-default .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-hover .ui-icon,\\n.ui-state-focus .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-active .ui-icon {\\n\\tbackground-image: url('images/ui-icons_1d2d44_256x240.png');\\n}\\n.ui-state-highlight .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffffff_256x240.png');\\n}\\n.ui-state-error .ui-icon,\\n.ui-state-error-text .ui-icon {\\n\\tbackground-image: url('images/ui-icons_ffd27a_256x240.png');\\n}\\n.ui-icon.ui-icon-none {\\n\\tdisplay: none;\\n}\\n\\n/* Misc visuals\\n----------------------------------*/\\n/* Overlays */\\n.ui-widget-overlay {\\n\\tbackground: #666666 url('images/ui-bg_diagonals-thick_20_666666_40x40.png') 50% 50% repeat;\\n\\topacity: .5;\\n}\\n.ui-widget-shadow {\\n\\tmargin: -5px 0 0 -5px;\\n\\tpadding: 5px;\\n\\tbackground: #000000 url('images/ui-bg_flat_10_000000_40x100.png') 50% 50% repeat-x;\\n\\topacity: .2;\\n\\tborder-radius: 5px;\\n}\\n\\n/* Tabs customizations */\\n.ui-tabs {\\n\\tborder: none;\\n\\n\\t.ui-tabs-nav.ui-corner-all {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t.ui-tabs-nav {\\n\\t\\tbackground: none;\\n\\t\\tmargin-bottom: 15px;\\n\\n\\t\\t.ui-state-default {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid transparent;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t}\\n\\n\\t\\t.ui-state-hover,\\n\\t\\t.ui-state-active {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-main-text);\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\ta, a:link, a:hover, a:visited {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.ui-state-active {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Select menus */\\n.ui-autocomplete {\\n\\t&.ui-menu {\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* scrolling starts from three items,\\n\\t\\t * so hide overflow and scrollbars for a clean layout */\\n\\t\\t&.item-count-1,\\n\\t\\t&.item-count-2 {\\n\\t\\t\\toverflow-y: hidden;\\n\\t\\t}\\n\\n\\t\\t.ui-menu-item a {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 4px 4px 4px 14px;\\n\\n\\t\\t\\t&.ui-state-focus, &.ui-state-active {\\n\\t\\t\\t\\tbox-shadow: inset 4px 0 var(--color-primary-element);\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ui-widget-content {\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tborder-top: none;\\n\\t}\\n\\n\\t&.ui-corner-all {\\n\\t\\tborder-radius: 0;\\n\\t\\tborder-bottom-left-radius: var(--border-radius);\\n\\t\\tborder-bottom-right-radius: var(--border-radius);\\n\\t}\\n\\n\\t.ui-state-hover, .ui-widget-content .ui-state-hover,\\n\\t.ui-widget-header .ui-state-hover,\\n\\t.ui-state-focus,\\n\\t.ui-widget-content .ui-state-focus,\\n\\t.ui-widget-header .ui-state-focus {\\n\\t\\tborder: 1px solid transparent;\\n\\t\\tbackground: inherit;\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\n\\t.ui-menu-item {\\n\\t\\ta {\\n\\t\\t\\tborder-radius: 0 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ui-button.primary {\\n\\tbackground-color: var(--color-primary-element);\\n\\tcolor: var(--color-primary-element-text);\\n\\tborder: 1px solid var(--color-primary-element-text);\\n}\\n\\n// fix ui-buttons on hover\\n.ui-button:hover {\\n font-weight:bold !important;\\n}\\n\\n\\n/* DRAGGABLE */\\n.ui-draggable-handle,\\n.ui-selectable {\\n\\ttouch-action: pan-y;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".oc-dialog{background:var(--color-main-background);color:var(--color-text-light);border-radius:var(--border-radius-large);box-shadow:0 0 30px var(--color-box-shadow);padding:24px;z-index:10000;font-size:100%;box-sizing:border-box;min-width:200px;top:50%;left:50%;transform:translate(-50%, -50%);max-height:calc(100% - 20px);max-width:calc(100% - 20px);overflow:auto}.oc-dialog-title{background:var(--color-main-background)}.oc-dialog-buttonrow{position:relative;display:flex;background:rgba(0,0,0,0);right:0;bottom:0;padding:0;padding-top:10px;box-sizing:border-box;width:100%;background-image:linear-gradient(rgba(255, 255, 255, 0), var(--color-main-background))}.oc-dialog-buttonrow.twobuttons{justify-content:space-between}.oc-dialog-buttonrow.onebutton,.oc-dialog-buttonrow.twobuttons.aside{justify-content:flex-end}.oc-dialog-buttonrow button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px;min-width:44px}.oc-dialog-close{position:absolute;width:44px !important;height:44px !important;top:4px;right:4px;padding:25px;background:var(--icon-close-dark) no-repeat center;opacity:.5;border-radius:var(--border-radius-pill)}.oc-dialog-close:hover,.oc-dialog-close:focus,.oc-dialog-close:active{opacity:1}.oc-dialog-dim{background-color:#000;opacity:.2;z-index:9999;position:fixed;top:0;left:0;width:100%;height:100%}body.theme--dark .oc-dialog-dim{opacity:.8}.oc-dialog-content{width:100%;max-width:550px}.oc-dialog.password-confirmation .oc-dialog-content{width:auto}.oc-dialog.password-confirmation .oc-dialog-content input[type=password]{width:100%}.oc-dialog.password-confirmation .oc-dialog-content label{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/jquery/css/jquery.ocdialog.scss\"],\"names\":[],\"mappings\":\"AAAA,WACC,uCAAA,CACA,6BAAA,CACA,wCAAA,CACA,2CAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CACA,qBAAA,CACA,eAAA,CACA,OAAA,CACA,QAAA,CACA,+BAAA,CACA,4BAAA,CACA,2BAAA,CACA,aAAA,CAED,iBACC,uCAAA,CAED,qBACC,iBAAA,CACA,YAAA,CACA,wBAAA,CACA,OAAA,CACA,QAAA,CACA,SAAA,CACA,gBAAA,CACA,qBAAA,CACA,UAAA,CACA,sFAAA,CAEA,gCACO,6BAAA,CAGP,qEAEC,wBAAA,CAGD,4BACI,kBAAA,CACA,eAAA,CACH,sBAAA,CACA,WAAA,CACA,cAAA,CAIF,iBACC,iBAAA,CACA,qBAAA,CACA,sBAAA,CACA,OAAA,CACA,SAAA,CACA,YAAA,CACA,kDAAA,CACA,UAAA,CACA,uCAAA,CAEA,sEAGC,SAAA,CAIF,eACC,qBAAA,CACA,UAAA,CACA,YAAA,CACA,cAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,WAAA,CAGD,gCACC,UAAA,CAGD,mBACC,UAAA,CACA,eAAA,CAIA,oDACC,UAAA,CAEA,yEACC,UAAA,CAED,0DACC,YAAA\",\"sourcesContent\":[\".oc-dialog {\\n\\tbackground: var(--color-main-background);\\n\\tcolor: var(--color-text-light);\\n\\tborder-radius: var(--border-radius-large);\\n\\tbox-shadow: 0 0 30px var(--color-box-shadow);\\n\\tpadding: 24px;\\n\\tz-index: 10000;\\n\\tfont-size: 100%;\\n\\tbox-sizing: border-box;\\n\\tmin-width: 200px;\\n\\ttop: 50%;\\n\\tleft: 50%;\\n\\ttransform: translate(-50%, -50%);\\n\\tmax-height: calc(100% - 20px);\\n\\tmax-width: calc(100% - 20px);\\n\\toverflow: auto;\\n}\\n.oc-dialog-title {\\n\\tbackground: var(--color-main-background);\\n}\\n.oc-dialog-buttonrow {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tbackground: transparent;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\tpadding: 0;\\n\\tpadding-top: 10px;\\n\\tbox-sizing: border-box;\\n\\twidth: 100%;\\n\\tbackground-image: linear-gradient(rgba(255, 255, 255, 0.0), var(--color-main-background));\\n\\n\\t&.twobuttons {\\n justify-content: space-between;\\n }\\n\\n\\t&.onebutton,\\n\\t&.twobuttons.aside {\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n\\n\\tbutton {\\n\\t white-space: nowrap;\\n\\t overflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\theight: 44px;\\n\\t\\tmin-width: 44px;\\n\\t}\\n}\\n\\n.oc-dialog-close {\\n\\tposition: absolute;\\n\\twidth: 44px !important;\\n\\theight: 44px !important;\\n\\ttop: 4px;\\n\\tright: 4px;\\n\\tpadding: 25px;\\n\\tbackground: var(--icon-close-dark) no-repeat center;\\n\\topacity: .5;\\n\\tborder-radius: var(--border-radius-pill);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n.oc-dialog-dim {\\n\\tbackground-color: #000;\\n\\topacity: .2;\\n\\tz-index: 9999;\\n\\tposition: fixed;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\nbody.theme--dark .oc-dialog-dim {\\n\\topacity: .8;\\n}\\n\\n.oc-dialog-content {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n}\\n\\n.oc-dialog.password-confirmation {\\n\\t.oc-dialog-content {\\n\\t\\twidth: auto;\\n\\n\\t\\tinput[type=password] {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\tlabel {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-menu[data-v-c8c7b3a6]{width:100%;display:flex;flex-shrink:1;flex-wrap:wrap}.app-menu-main[data-v-c8c7b3a6]{display:flex;flex-wrap:nowrap}.app-menu-main .app-menu-entry[data-v-c8c7b3a6]{width:50px;height:50px;position:relative;display:flex;opacity:.7;filter:var(--background-image-invert-if-bright)}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-c8c7b3a6]{opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active[data-v-c8c7b3a6]::before{content:\\\" \\\";position:absolute;pointer-events:none;border-bottom-color:var(--color-main-background);transform:translateX(-50%);width:12px;height:5px;border-radius:3px;background-color:var(--color-primary-element-text);left:50%;bottom:6px;display:block;transition:all .1s ease-in-out;opacity:1}.app-menu-main .app-menu-entry.app-menu-entry__active .app-menu-entry--label[data-v-c8c7b3a6]{font-weight:bold}.app-menu-main .app-menu-entry a[data-v-c8c7b3a6]{width:calc(100% - 4px);height:calc(100% - 4px);margin:2px;color:var(--color-primary-element-text);position:relative}.app-menu-main .app-menu-entry img[data-v-c8c7b3a6]{transition:margin .1s ease-in-out;width:20px;height:20px;padding:calc((100% - 20px)/2);box-sizing:content-box}.app-menu-main .app-menu-entry .app-menu-entry--label[data-v-c8c7b3a6]{opacity:0;position:absolute;font-size:12px;color:var(--color-primary-element-text);text-align:center;bottom:-5px;left:50%;top:45%;display:block;min-width:100%;transform:translateX(-50%);transition:all .1s ease-in-out;width:100%;text-overflow:ellipsis;overflow:hidden;letter-spacing:-0.5px}.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:hover,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:focus-within{opacity:1}.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:focus-within .app-menu-entry--label[data-v-c8c7b3a6]{opacity:1;font-weight:bolder;bottom:0;width:100%;text-overflow:ellipsis;overflow:hidden}.app-menu-main[data-v-c8c7b3a6]:hover,.app-menu-main[data-v-c8c7b3a6]:focus-within,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:hover,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:focus{opacity:1}.app-menu-main:hover img[data-v-c8c7b3a6],.app-menu-main:focus-within img[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:hover img[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:focus img[data-v-c8c7b3a6]{margin-top:-8px}.app-menu-main:hover .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main:focus-within .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:hover .app-menu-entry--label[data-v-c8c7b3a6],.app-menu-main .app-menu-entry:focus .app-menu-entry--label[data-v-c8c7b3a6]{opacity:1;bottom:0}.app-menu-main[data-v-c8c7b3a6]:hover::before,.app-menu-main:hover .app-menu-entry[data-v-c8c7b3a6]::before,.app-menu-main[data-v-c8c7b3a6]:focus-within::before,.app-menu-main:focus-within .app-menu-entry[data-v-c8c7b3a6]::before,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:hover::before,.app-menu-main .app-menu-entry:hover .app-menu-entry[data-v-c8c7b3a6]::before,.app-menu-main .app-menu-entry[data-v-c8c7b3a6]:focus::before,.app-menu-main .app-menu-entry:focus .app-menu-entry[data-v-c8c7b3a6]::before{opacity:0}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary{opacity:.7;margin:3px;filter:var(--background-image-invert-if-bright)}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]){color:var(--color-primary-element-text)}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary:not([aria-expanded=true]):hover{opacity:1;background-color:rgba(0,0,0,0) !important}[data-v-c8c7b3a6] .app-menu-more .button-vue--vue-tertiary:focus-visible{opacity:1;outline:none !important}.app-menu-popover-entry .app-icon[data-v-c8c7b3a6]{position:relative;height:44px;filter:var(--background-invert-if-bright)}.app-menu-popover-entry .app-icon.has-unread[data-v-c8c7b3a6]::after{background-color:var(--color-main-text)}.app-menu-popover-entry .app-icon img[data-v-c8c7b3a6]{width:20px;height:20px;padding:15px}.has-unread[data-v-c8c7b3a6]::after{content:\\\"\\\";width:8px;height:8px;background-color:var(--color-primary-element-text);border-radius:50%;position:absolute;display:block;top:10px;right:10px}.unread-counter[data-v-c8c7b3a6]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/AppMenu.vue\"],\"names\":[],\"mappings\":\"AAGA,2BACC,UAAA,CACA,YAAA,CACA,aAAA,CACA,cAAA,CAED,gCACC,YAAA,CACA,gBAAA,CAEA,gDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,YAAA,CACA,UAAA,CACA,+CAAA,CAEA,uEACC,SAAA,CAEA,+EACC,WAAA,CACA,iBAAA,CACA,mBAAA,CACA,gDAAA,CACA,0BAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,kDAAA,CACA,QAAA,CACA,UAAA,CACA,aAAA,CACA,8BAAA,CACA,SAAA,CAGD,8FACC,gBAAA,CAIF,kDACC,sBAAA,CACA,uBAAA,CACA,UAAA,CACA,uCAAA,CACA,iBAAA,CAGD,oDACC,iCAAA,CACA,UAvDgB,CAwDhB,WAxDgB,CAyDhB,6BAAA,CACA,sBAAA,CAGD,uEACC,SAAA,CACA,iBAAA,CACA,cAAA,CACA,uCAAA,CACA,iBAAA,CACA,WAAA,CACA,QAAA,CACA,OAAA,CACA,aAAA,CACA,cAAA,CACA,0BAAA,CACA,8BAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CACA,qBAAA,CAGD,mHAEC,SAAA,CACA,iKACC,SAAA,CACA,kBAAA,CACA,QAAA,CACA,UAAA,CACA,sBAAA,CACA,eAAA,CAOH,+LAIC,SAAA,CAEA,+MACC,eAAA,CAGD,2RACC,SAAA,CACA,QAAA,CAGD,8fACC,SAAA,CAKH,2DACC,UAAA,CACA,UAAA,CACA,+CAAA,CAGA,qFACC,uCAAA,CAEA,2FACC,SAAA,CACA,yCAAA,CAIF,yEACC,SAAA,CACA,uBAAA,CAKD,mDACC,iBAAA,CACA,WAAA,CAEA,yCAAA,CAEA,qEACC,uCAAA,CAGD,uDACC,UAtJgB,CAuJhB,WAvJgB,CAwJhB,YAAA,CAKH,oCACC,UAAA,CACA,SAAA,CACA,UAAA,CACA,kDAAA,CACA,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,QAAA,CACA,UAAA,CAGD,iCACC,YAAA\",\"sourcesContent\":[\"\\n$header-icon-size: 20px;\\n\\n.app-menu {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\tflex-shrink: 1;\\n\\tflex-wrap: wrap;\\n}\\n.app-menu-main {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\n\\t.app-menu-entry {\\n\\t\\twidth: 50px;\\n\\t\\theight: 50px;\\n\\t\\tposition: relative;\\n\\t\\tdisplay: flex;\\n\\t\\topacity: .7;\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t\\t&.app-menu-entry__active {\\n\\t\\t\\topacity: 1;\\n\\n\\t\\t\\t&::before {\\n\\t\\t\\t\\tcontent: \\\" \\\";\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\t\\twidth: 12px;\\n\\t\\t\\t\\theight: 5px;\\n\\t\\t\\t\\tborder-radius: 3px;\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element-text);\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\tbottom: 6px;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\twidth: calc(100% - 4px);\\n\\t\\t\\theight: calc(100% - 4px);\\n\\t\\t\\tmargin: 2px;\\n\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\ttransition: margin 0.1s ease-in-out;\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((100% - $header-icon-size) / 2);\\n\\t\\t\\tbox-sizing: content-box;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 0;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tfont-size: 12px;\\n\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tbottom: -5px;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\ttop: 45%;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmin-width: 100%;\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\ttransition: all 0.1s ease-in-out;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tletter-spacing: -0.5px;\\n\\t\\t}\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus-within {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\t.app-menu-entry--label {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\tfont-weight: bolder;\\n\\t\\t\\t\\tbottom: 0;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t}\\n\\n\\t// Show labels\\n\\t&:hover,\\n\\t&:focus-within,\\n\\t.app-menu-entry:hover,\\n\\t.app-menu-entry:focus {\\n\\t\\topacity: 1;\\n\\n\\t\\timg {\\n\\t\\t\\tmargin-top: -8px;\\n\\t\\t}\\n\\n\\t\\t.app-menu-entry--label {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbottom: 0;\\n\\t\\t}\\n\\n\\t\\t&::before, .app-menu-entry::before {\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n::v-deep .app-menu-more .button-vue--vue-tertiary {\\n\\topacity: .7;\\n\\tmargin: 3px;\\n\\tfilter: var(--background-image-invert-if-bright);\\n\\n\\t/* Remove all background and align text color if not expanded */\\n\\t&:not([aria-expanded=\\\"true\\\"]) {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\n\\t\\t&:hover {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\topacity: 1;\\n\\t\\toutline: none !important;\\n\\t}\\n}\\n\\n.app-menu-popover-entry {\\n\\t.app-icon {\\n\\t\\tposition: relative;\\n\\t\\theight: 44px;\\n\\t\\t/* Icons are bright so invert them if bright color theme == bright background is used */\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\n\\t\\t&.has-unread::after {\\n\\t\\t\\tbackground-color: var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\twidth: $header-icon-size;\\n\\t\\t\\theight: $header-icon-size;\\n\\t\\t\\tpadding: calc((50px - $header-icon-size) / 2);\\n\\t\\t}\\n\\t}\\n}\\n\\n.has-unread::after {\\n\\tcontent: \\\"\\\";\\n\\twidth: 8px;\\n\\theight: 8px;\\n\\tbackground-color: var(--color-primary-element-text);\\n\\tborder-radius: 50%;\\n\\tposition: absolute;\\n\\tdisplay: block;\\n\\ttop: 10px;\\n\\tright: 10px;\\n}\\n\\n.unread-counter {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".menu-entry__loading-icon[data-v-6e59d13c]{margin-right:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UserMenu/UserMenuEntry.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,gBAAA\",\"sourcesContent\":[\"\\n.menu-entry {\\n\\t&__loading-icon {\\n\\t\\tmargin-right: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#contactsmenu-menu[data-v-1563c388]{height:calc(100vh - 150px);max-height:302px;min-height:175px;width:350px}#contactsmenu-menu[data-v-1563c388] .emptycontent{margin-top:5vh !important;margin-bottom:1.5vh}#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-loading,#contactsmenu-menu[data-v-1563c388] .emptycontent .icon-search{display:inline-block}#contactsmenu-menu[data-v-1563c388] #contactsmenu-search{width:calc(100% - 16px);margin:8px;height:34px}#contactsmenu-menu[data-v-1563c388] .content{height:calc(100vh - 150px - 50px);max-height:250px;min-height:125px;overflow-y:auto}#contactsmenu-menu[data-v-1563c388] .content .footer{text-align:center}#contactsmenu-menu[data-v-1563c388] .content .footer a{display:block;width:100%;padding:12px 0;opacity:.5}#contactsmenu-menu[data-v-1563c388] a{padding:2px}#contactsmenu-menu[data-v-1563c388] a:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text) !important}#contactsmenu-menu[data-v-1563c388] .contact{display:flex;position:relative;align-items:center;padding:3px 3px 3px 10px}#contactsmenu-menu[data-v-1563c388] .contact .avatar{height:32px;width:32px;display:inline-block}#contactsmenu-menu[data-v-1563c388] .contact .body{flex-grow:1;padding-left:8px;min-width:0}#contactsmenu-menu[data-v-1563c388] .contact .body div{position:relative;width:100%;overflow-x:hidden;text-overflow:ellipsis}#contactsmenu-menu[data-v-1563c388] .contact .body .last-message,#contactsmenu-menu[data-v-1563c388] .contact .body .email-address{color:var(--color-text-maxcontrast)}#contactsmenu-menu[data-v-1563c388] .contact .top-action,#contactsmenu-menu[data-v-1563c388] .contact .second-action,#contactsmenu-menu[data-v-1563c388] .contact .other-actions{width:16px;height:16px;opacity:.5;cursor:pointer}#contactsmenu-menu[data-v-1563c388] .contact .top-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .second-action:not(button),#contactsmenu-menu[data-v-1563c388] .contact .other-actions:not(button){padding:14px}#contactsmenu-menu[data-v-1563c388] .contact .top-action img,#contactsmenu-menu[data-v-1563c388] .contact .second-action img,#contactsmenu-menu[data-v-1563c388] .contact .other-actions img{filter:var(--background-invert-if-dark)}#contactsmenu-menu[data-v-1563c388] .contact .top-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .top-action:active,#contactsmenu-menu[data-v-1563c388] .contact .top-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .second-action:hover,#contactsmenu-menu[data-v-1563c388] .contact .second-action:active,#contactsmenu-menu[data-v-1563c388] .contact .second-action:focus,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:hover,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:active,#contactsmenu-menu[data-v-1563c388] .contact .other-actions:focus{opacity:1}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions{width:44px}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus{border-color:rgba(0,0,0,0);box-shadow:0 0 0 2px var(--color-main-text)}#contactsmenu-menu[data-v-1563c388] .contact button.other-actions:focus-visible{border-radius:var(--border-radius-pill)}#contactsmenu-menu[data-v-1563c388] .contact .menu{top:47px;margin-right:13px}#contactsmenu-menu[data-v-1563c388] .contact .popovermenu::after{right:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/ContactsMenu.vue\"],\"names\":[],\"mappings\":\"AACA,oCAEC,0BAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CAGC,kDACC,yBAAA,CACA,mBAAA,CACA,+HAEC,oBAAA,CAIF,yDACC,uBAAA,CACA,UAAA,CACA,WAAA,CAGD,6CAEC,iCAAA,CACA,gBAAA,CACA,gBAAA,CACA,eAAA,CAEA,qDACC,iBAAA,CAEA,uDACC,aAAA,CACA,UAAA,CACA,cAAA,CACA,UAAA,CAKH,sCACC,WAAA,CAEA,oDACC,4DAAA,CAIF,6CACC,YAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CAEA,qDACC,WAAA,CACA,UAAA,CACA,oBAAA,CAGD,mDACC,WAAA,CACA,gBAAA,CACA,WAAA,CAEA,uDACC,iBAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAA,CAGD,mIACC,mCAAA,CAIF,iLACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CAEA,qNACC,YAAA,CAED,6LACC,uCAAA,CAGD,4kBAGC,SAAA,CAIF,kEACC,UAAA,CAEA,wEACC,0BAAA,CACA,2CAAA,CAGD,gFACC,uCAAA,CAKF,mDACC,QAAA,CACA,iBAAA,CAED,iEACC,SAAA\",\"sourcesContent\":[\"\\n#contactsmenu-menu {\\n\\t/* show 2.5 to 4.5 entries depending on the screen height */\\n\\theight: calc(100vh - 50px * 3);\\n\\tmax-height: calc(50px * 6 + 2px);\\n\\tmin-height: calc(50px * 3.5);\\n\\twidth: 350px;\\n\\n\\t&:deep {\\n\\t\\t.emptycontent {\\n\\t\\t\\tmargin-top: 5vh !important;\\n\\t\\t\\tmargin-bottom: 1.5vh;\\n\\t\\t\\t.icon-loading,\\n\\t\\t\\t.icon-search {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t#contactsmenu-search {\\n\\t\\t\\twidth: calc(100% - 16px);\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\theight: 34px;\\n\\t\\t}\\n\\n\\t\\t.content {\\n\\t\\t\\t/* fixed max height of the parent container without the search input */\\n\\t\\t\\theight: calc(100vh - 50px * 3 - 50px);\\n\\t\\t\\tmax-height: calc(50px * 5);\\n\\t\\t\\tmin-height: calc(50px * 3.5 - 50px);\\n\\t\\t\\toverflow-y: auto;\\n\\n\\t\\t\\t.footer {\\n\\t\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t\\ta {\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\tpadding: 12px 0;\\n\\t\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tpadding: 2px;\\n\\n\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-main-text) !important; // override rule in core/css/headers.scss #header a:focus-visible\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.contact {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tposition: relative;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 3px 3px 3px 10px;\\n\\n\\t\\t\\t.avatar {\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.body {\\n\\t\\t\\t\\tflex-grow: 1;\\n\\t\\t\\t\\tpadding-left: 8px;\\n\\t\\t\\t\\tmin-width: 0;\\n\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\toverflow-x: hidden;\\n\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.last-message, .email-address {\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.top-action, .second-action, .other-actions {\\n\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:not(button) {\\n\\t\\t\\t\\t\\tpadding: 14px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton.other-actions {\\n\\t\\t\\t\\twidth: 44px;\\n\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tborder-color: transparent;\\n\\t\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* actions menu */\\n\\t\\t\\t.menu {\\n\\t\\t\\t\\ttop: 47px;\\n\\t\\t\\t\\tmargin-right: 13px;\\n\\t\\t\\t}\\n\\t\\t\\t.popovermenu::after {\\n\\t\\t\\t\\tright: 2px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-menu[data-v-202f7644]{margin-right:12px}.user-menu[data-v-202f7644] .header-menu__trigger{opacity:1 !important}.user-menu[data-v-202f7644] .header-menu__trigger:focus-visible .user-menu__avatar{border:2px solid var(--color-primary-element)}.user-menu[data-v-202f7644] .header-menu__carret{display:none !important}.user-menu[data-v-202f7644] .header-menu__content{width:fit-content !important}.user-menu__avatar[data-v-202f7644]:active,.user-menu__avatar[data-v-202f7644]:focus,.user-menu__avatar[data-v-202f7644]:hover{border:2px solid var(--color-primary-element-text)}.user-menu__nav[data-v-202f7644]{display:flex;width:100%}.user-menu__nav ul[data-v-202f7644]{display:flex;flex-direction:column;gap:2px}.user-menu__nav ul[data-v-202f7644] li a,.user-menu__nav ul[data-v-202f7644] li button{border-radius:6px;display:inline-flex;align-items:center;height:var(--header-menu-item-height);color:var(--color-main-text);padding:10px 8px;box-sizing:border-box;white-space:nowrap;position:relative;width:100%}.user-menu__nav ul[data-v-202f7644] li a:hover,.user-menu__nav ul[data-v-202f7644] li button:hover{background-color:var(--color-background-hover)}.user-menu__nav ul[data-v-202f7644] li a:focus-visible,.user-menu__nav ul[data-v-202f7644] li button:focus-visible{background-color:var(--color-background-hover) !important;box-shadow:inset 0 0 0 2px var(--color-primary-element) !important;outline:none !important}.user-menu__nav ul[data-v-202f7644] li a:active,.user-menu__nav ul[data-v-202f7644] li a.active,.user-menu__nav ul[data-v-202f7644] li button:active,.user-menu__nav ul[data-v-202f7644] li button.active{background-color:var(--color-primary-element-light)}.user-menu__nav ul[data-v-202f7644] li a span,.user-menu__nav ul[data-v-202f7644] li button span{padding-bottom:0;color:var(--color-main-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}.user-menu__nav ul[data-v-202f7644] li a img,.user-menu__nav ul[data-v-202f7644] li button img{width:16px;height:16px;margin-right:10px}.user-menu__nav ul[data-v-202f7644] li a img,.user-menu__nav ul[data-v-202f7644] li a svg,.user-menu__nav ul[data-v-202f7644] li button img,.user-menu__nav ul[data-v-202f7644] li button svg{opacity:.7;filter:var(--background-invert-if-dark)}.user-menu__nav ul[data-v-202f7644] li button{background-color:rgba(0,0,0,0);border:none;font-weight:normal;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UserMenu.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,iBAAA,CAIE,kDACC,oBAAA,CAEC,mFACC,6CAAA,CAKH,iDACC,uBAAA,CAGD,kDACC,4BAAA,CAMF,+HAGC,kDAAA,CAIF,iCACC,YAAA,CACA,UAAA,CAEA,oCACC,YAAA,CACA,qBAAA,CACA,OAAA,CAIE,uFAEC,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,qCAAA,CACA,4BAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA,CACA,iBAAA,CACA,UAAA,CAEA,mGACC,8CAAA,CAGD,mHACC,yDAAA,CACA,kEAAA,CACA,uBAAA,CAGD,0MAEC,mDAAA,CAGD,iGACC,gBAAA,CACA,4BAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CAGD,+FACC,UAAA,CACA,WAAA,CACA,iBAAA,CAGD,8LAEC,UAAA,CACA,uCAAA,CAKF,8CACC,8BAAA,CACA,WAAA,CACA,kBAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.user-menu {\\n\\tmargin-right: 12px;\\n\\n\\t&:deep {\\n\\t\\t.header-menu {\\n\\t\\t\\t&__trigger {\\n\\t\\t\\t\\topacity: 1 !important;\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t.user-menu__avatar {\\n\\t\\t\\t\\t\\t\\tborder: 2px solid var(--color-primary-element);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__carret {\\n\\t\\t\\t\\tdisplay: none !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__content {\\n\\t\\t\\t\\twidth: fit-content !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t&:active,\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\tborder: 2px solid var(--color-primary-element-text);\\n\\t\\t}\\n\\t}\\n\\n\\t&__nav {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\n\\t\\tul {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px;\\n\\n\\t\\t\\t&:deep {\\n\\t\\t\\t\\tli {\\n\\t\\t\\t\\t\\ta,\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tborder-radius: 6px;\\n\\t\\t\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t\\t\\theight: var(--header-menu-item-height);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tpadding: 10px 8px;\\n\\t\\t\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\tposition: relative;\\n\\t\\t\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-background-hover) !important;\\n\\t\\t\\t\\t\\t\\t\\tbox-shadow: inset 0 0 0 2px var(--color-primary-element) !important;\\n\\t\\t\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t&:active,\\n\\t\\t\\t\\t\\t\\t&.active {\\n\\t\\t\\t\\t\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\tspan {\\n\\t\\t\\t\\t\\t\\t\\tpadding-bottom: 0;\\n\\t\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t\\t\\t\\t\\tmax-width: 110px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg {\\n\\t\\t\\t\\t\\t\\t\\twidth: 16px;\\n\\t\\t\\t\\t\\t\\t\\theight: 16px;\\n\\t\\t\\t\\t\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\timg,\\n\\t\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\t\\topacity: .7;\\n\\t\\t\\t\\t\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t// Override global button styles\\n\\t\\t\\t\\t\\tbutton {\\n\\t\\t\\t\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatarLabel\") : stack1), depth0))\n + \"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\" aria-label=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" aria-label=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<img src=\\\"\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":24},\"end\":{\"line\":3,\"column\":32}}}) : helper)))\n + \"\\\">\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<li>\\n\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":10},\"end\":{\"line\":2,\"column\":23}}}) : helper)))\n + \"\\\">\\n\t\t\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"icon\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":3,\"column\":41}}})) != null ? stack1 : \"\")\n + \"\\n\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":8},\"end\":{\"line\":4,\"column\":17}}}) : helper)))\n + \"</span>\\n\t</a>\\n</li>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2943;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2943: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(12376)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","getApps","getKeys","app","getValue","key","defaultValue","setValue","value","deleteKey","appConfig","window","oc_appconfig","AppConfig","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","trigger","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","tagName","render","self","$el","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_view","_contactsPromise","el","loadContacts","_getContacts","Promise","resolve","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","constructor","isA11yActivation","event","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","_options$target","_options","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","target","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","tooltip","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","placement","addClass","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","removeClass","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","async","empty","advancedFilter","getFolderContents","files","_changeButtonsText","mimetype","showHiddenInput","getElementById","startsWith","Comparators","fileInfo1","fileInfo2","comparator","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","$breadcrumbs","paths","classList","prependTo","getOcDialog","$element","ctrlKey","copyText","folder","moveText","eq","manageFromDocument","manageToken","global","emit","token","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","patterns","querySelectorAll","pattern","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","b","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","generateFilePath","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","seconds","setInterval","clearInterval","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","poll","setRequestToken","startPolling","getInterval","NaN","session_lifetime","isNaN","Contacts","NcHeaderMenu","contactsMenu","mounted","methods","handleOpen","_this$contactsMenu","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","scopedSlots","_u","fn","proxy","_v","NcActions","NcActionLink","apps","loadState","appLimit","observer","computed","appList","values","mainAppList","slice","popoverAppList","appLabel","active","unread","ResizeObserver","resize","observe","setApps","beforeDestroy","disconnect","unsubscribe","setNavigationCounter","counter","$set","_ref","availableWidth","appCount","staticClass","_l","class","_s","_e","versionHash","NcLoadingIcon","String","required","Boolean","cachedIcon","concat","handleClick","$event","shiftKey","altKey","metaKey","settingsNavEntries","NcAvatar","UserMenuEntry","_getCurrentUser","userId","_b","initLiveTimestamps","localeAliases","zh","zh_Hans","zh_Hans_CN","zh_Hans_HK","zh_Hans_MO","zh_Hans_SG","zh_Hant","zh_Hant_HK","zh_Hant_MO","zh_Hant_TW","locale","hasOwnProperty","initCore","allowAuthErrors","initSessionHeartBeat","loadConfig","registerAutoLogout","auto_logout","lastActive","now","localStorage","setItem","newValue","logoutUrl","session_keepalive","setUp","Vue","container","appMenu","AppMenu","$mount","setUpMainMenu","mountPoint","h","UserMenu","setUpUserMenu","setUpContactsMenu","snapper","Snap","disable","maxPosition","minDragDistance","animating","$appNavigation","oldSnapperOpen","open","oldSnapperClose","_snapperOpen","_snapperClose","keypress","delegate","$target","navigationBarSlideGestureEnabled","navigationBarSlideGestureAllowed","navigationBarSlideGestureEnablePending","enable","endCurrentDrag","toggleSnapperOnSize","ex","TypeError","urlRegex","plainToRich","formatLinksRich","richToPlain","formatLinksPlain","leadingSpace","trailingSpace","linkText","$content","$this","dismissOptions","dismiss","menuItem","div","add","innerText","ocs","product","onclick","whatsNew","regular","whatsNewTextItem","innerHTML","changelogURL","rel","onQuerySuccess","onQueryError","onDismissSuccess","onDismissError","disableKeyboardShortcuts","setPageHeading","heading","headingEl","textContent","types","loadedStylesheets","loadScript","scriptPath","btoa","onerror","head","loadStylesheet","stylePath","link","showSuccess","warning","showWarning","showInfo","Accessibility","Collaboration","registerType","typeDefinition","action","getTypes","keys","getIcon","typeIconClass","getLabel","typeString","getLink","Comments","InitialState","Loader","Toast","WhatsNew","warnIfNotTesting","setDeprecatedProp","cb","Array","isArray","defineProperty","autosize","ClipboardJS","md5","OCP","deprecate","func","funcName","oldFunc","newFunc","user","ie8fix","hidedefault","displayname","setAvatarForUnknownUser","$div","devicePixelRatio","oc_userconfig","avatar","clearimageplaceholder","alt","entryTemplate","shareWith","shareType","appendTo","$list","topAction","hyperlink","clickedList","has","clickedTarget","attrName","attrValue","_create","originalCss","display","originalTitle","tabIndex","role","insertBefore","removeAttr","$buttonrow","$button","enterCallback","keyCode","_setOptions","_createOverlay","_useFocusTrap","_init","_trigger","_setOption","$title","_setSizes","$defaultButton","$closeButton","dialogTitle","closeCB","lessHeight","outerHeight","contentDiv","overlay","_destroyOverlay","_nc_focus_trap","dialogElement","focusTrap","createFocusTrap","allowOutsideClick","trapStack","fallbackFocus","activate","_clearFocusTrap","_this$focusTrap","deactivate","widget","setEnterCallback","unsetEnterCallback","destroy","Template","vars","elem","_html","_build","o","outerHTML","r","toRgb","Color","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","red","yellow","blue","palette1","palette2","palette3","maximum","finalInt","hashToInt","seed","rgb","placeholderText","map","word","elm","crossDomain","setRequestHeader","start","end","setSelectionRange","createTextRange","range","collapse","moveEnd","moveStart","select","showPassword","setState","checkbox","$clone","tabindex","autocomplete","cloneElement","insertAfter","outerWidth","contents","onpopstate","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","module","exports","depth0","helpers","partials","stack1","lookupProperty","propertyName","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","webpackContext","req","webpackContextResolve","__webpack_require__","code","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/core-profile.js b/dist/core-profile.js index 33741a198a2..768aa801da8 100644 --- a/dist/core-profile.js +++ b/dist/core-profile.js @@ -1,3 +1,3 @@ /*! For license information please see core-profile.js.LICENSE.txt */ -(()=>{"use strict";var n,e={15737:(n,e,a)=>{var r=a(20144),i=a(45994),o=a(31352),A=a(2324),s=a(17499);const c=null===(l=(0,i.ts)())?(0,s.IY)().setApp("core").build():(0,s.IY)().setApp("core").setUid(l.uid).build();var l,d=a(78595),p=a(79954),C=a(79753),u=a(64024),_=a(75925),f=a.n(_),v=a(12945),g=a.n(v),h=a(76212),m=a.n(h),x=a(50246),b=a(73229),y=a(86158);const k={name:"PrimaryActionButton",props:{disabled:{type:Boolean,default:!1},href:{type:String,required:!0},icon:{type:String,required:!0},target:{type:String,required:!0,validator:t=>["_self","_blank","_parent","_top"].includes(t)}},computed:{colorPrimaryText:()=>getComputedStyle(document.body).getPropertyValue("--color-primary-text").trim()}};var w=a(93379),B=a.n(w),E=a(7795),D=a.n(E),I=a(90569),S=a.n(I),P=a(3565),O=a.n(P),U=a(19216),z=a.n(U),j=a(44589),M=a.n(j),G=a(81001),Z={};Z.styleTagTransform=M(),Z.setAttributes=O(),Z.insert=S().bind(null,"head"),Z.domAPI=D(),Z.insertStyleElement=z(),B()(G.Z,Z),G.Z&&G.Z.locals&&G.Z.locals;var W=a(51900);const Y=(0,W.Z)(k,(function(){var t=this,n=t._self._c;return n("a",t._g({staticClass:"profile__primary-action-button",class:{disabled:t.disabled},attrs:{href:t.href,target:t.target,rel:"noopener noreferrer nofollow"}},t.$listeners),[n("img",{staticClass:"icon",class:[t.icon,{"icon-invert":"#ffffff"===t.colorPrimaryText}],attrs:{src:t.icon}}),t._v(" "),t._t("default")],2)}),[],!1,null,"35d5c4b6",null).exports,T=(0,p.j)("core","status",{}),{userId:q,displayname:F,address:$,organisation:N,role:K,headline:L,biography:V,actions:H,isUserAvatarVisible:R}=(0,p.j)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1}),J={name:"Profile",components:{AccountIcon:y.Z,NcActionLink:m(),NcActions:g(),NcAvatar:f(),MapMarkerIcon:x.Z,PencilIcon:b.default,PrimaryActionButton:Y},data:()=>({status:T,userId:q,displayname:F,address:$,organisation:N,role:K,headline:L,biography:V,actions:H,isUserAvatarVisible:R,sections:OCA.Core.ProfileSections.getSections()}),computed:{isCurrentUser(){var t;return(null===(t=(0,i.ts)())||void 0===t?void 0:t.uid)===this.userId},allActions(){return this.actions},primaryAction(){return this.allActions.length?this.allActions[0]:null},middleActions(){return this.allActions.slice(1,4).length?this.allActions.slice(1,4):null},otherActions(){return this.allActions.slice(4).length?this.allActions.slice(4):null},settingsUrl:()=>(0,C.generateUrl)("/settings/user"),colorMainBackground:()=>getComputedStyle(document.body).getPropertyValue("--color-main-background").trim(),emptyProfileMessage(){return this.isCurrentUser?t("core","You have not added any info yet"):t("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted(){document.title="".concat(this.displayname||this.userId," - ").concat(document.title),(0,d.Ld)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy(){(0,d.r1)("user_status:status.updated",this.handleStatusUpdate)},methods:{handleStatusUpdate(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal(){const n=document.querySelector(".user-status-menu-item__toggle");this.isCurrentUser&&(n?n.click():(0,u.x2)(t("core","Error opening the user status modal, try hard refreshing the page")))}}};var Q=a(57476),X={};X.styleTagTransform=M(),X.setAttributes=O(),X.insert=S().bind(null,"head"),X.domAPI=D(),X.insertStyleElement=z(),B()(Q.Z,X),Q.Z&&Q.Z.locals&&Q.Z.locals;var tt=a(99037),nt={};nt.styleTagTransform=M(),nt.setAttributes=O(),nt.insert=S().bind(null,"head"),nt.domAPI=D(),nt.insertStyleElement=z(),B()(tt.Z,nt),tt.Z&&tt.Z.locals&&tt.Z.locals;const et=(0,W.Z)(J,(function(){var t=this,n=t._self._c;return n("div",{staticClass:"profile"},[n("div",{staticClass:"profile__header"},[n("div",{staticClass:"profile__header__container"},[n("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),n("h2",{staticClass:"profile__header__container__displayname"},[t._v("\n\t\t\t\t"+t._s(t.displayname||t.userId)+"\n\t\t\t\t"),t.isCurrentUser?n("a",{staticClass:"primary profile__header__container__edit-button",attrs:{href:t.settingsUrl}},[n("PencilIcon",{staticClass:"pencil-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t")],1):t._e()]),t._v(" "),t.status.icon||t.status.message?n("div",{staticClass:"profile__header__container__status-text",class:{interactive:t.isCurrentUser},on:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t")]):t._e()])]),t._v(" "),n("div",{staticClass:"profile__wrapper"},[n("div",{staticClass:"profile__content"},[n("div",{staticClass:"profile__sidebar"},[n("NcAvatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),n("div",{staticClass:"user-actions"},[t.primaryAction?n("PrimaryActionButton",{staticClass:"user-actions__primary",attrs:{href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t\t")]):t._e(),t._v(" "),n("div",{staticClass:"user-actions__other"},[t._l(t.middleActions,(function(e){return n("NcActions",{key:e.id,staticStyle:{"background-position":"14px center","background-size":"16px","background-repeat":"no-repeat"},style:{backgroundImage:"url(".concat(e.icon,")"),..."#181818"===t.colorMainBackground&&{filter:"invert(1)"}},attrs:{"default-icon":e.icon}},[n("NcActionLink",{attrs:{"close-after-click":!0,icon:e.icon,href:e.target,target:"phone"===e.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(e.title)+"\n\t\t\t\t\t\t\t")])],1)})),t._v(" "),t.otherActions?[n("NcActions",{attrs:{"force-menu":!0}},t._l(t.otherActions,(function(e){return n("NcActionLink",{key:e.id,class:{"icon-invert":"#181818"===t.colorMainBackground},attrs:{"close-after-click":!0,icon:e.icon,href:e.target,target:"phone"===e.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t\t"+t._s(e.title)+"\n\t\t\t\t\t\t\t\t")])})),1)]:t._e()],2)],1)],1),t._v(" "),n("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?n("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?n("div",{staticClass:"detail"},[n("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?n("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?n("div",{staticClass:"detail"},[n("p",[n("MapMarkerIcon",{staticClass:"map-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography||t.sections.length>0?[t.headline?n("div",{staticClass:"profile__blocks-headline"},[n("h3",[t._v(t._s(t.headline))])]):t._e(),t._v(" "),t.biography?n("div",{staticClass:"profile__blocks-biography"},[n("p",[t._v(t._s(t.biography))])]):t._e(),t._v(" "),t._l(t.sections,(function(e,a){return n("div",{key:a,ref:"section-"+a,refInFor:!0,staticClass:"profile__additionalContent"},[n(e(t.$refs["section-"+a],t.userId),{tag:"component",attrs:{userId:t.userId}})],1)}))]:[n("div",{staticClass:"profile__blocks-empty-info"},[n("AccountIcon",{attrs:{size:60,"fill-color":"var(--color-text-maxcontrast)"}}),t._v(" "),n("h3",[t._v(t._s(t.emptyProfileMessage))]),t._v(" "),n("p",[t._v(t._s(t.t("core","The headline and about sections will show up here")))])],1)]],2)])])])}),[],!1,null,"c8c42fa4",null).exports;a.nc=btoa((0,i.IH)()),window.OCA||(window.OCA={}),window.OCA.Core||(window.OCA.Core={}),Object.assign(window.OCA.Core,{ProfileSections:new class{constructor(){var t,n,e;t=this,e=void 0,(n=function(t){var n=function(t,n){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var a=e.call(t,"string");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof n?n:String(n)}(n="_sections"))in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,this._sections=[]}registerSection(t){this._sections.push(t)}getSections(){return this._sections}}}),r.default.use(A.default),r.default.mixin({props:{logger:c},methods:{t:o.Iu}});const at=r.default.extend(et);window.addEventListener("DOMContentLoaded",(()=>{(new at).$mount("#vue-profile")}))},81001:(t,n,e)=>{e.d(n,{Z:()=>A});var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([t.id,".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./core/src/components/Profile/PrimaryActionButton.vue"],names:[],mappings:"AACA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA",sourcesContent:["\n.profile__primary-action-button {\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\twidth: 188px;\n\theight: 44px;\n\tpadding: 0 16px;\n\tline-height: 44px;\n\ttext-align: center;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-primary-element);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-bottom: 2px;\n\t\tmargin-right: 4px;\n\n\t\t&.icon-invert {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n}\n"],sourceRoot:""}]);const A=o},57476:(t,n,e)=>{e.d(n,{Z:()=>A});var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([t.id,"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAEA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA",sourcesContent:["\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n"],sourceRoot:""}]);const A=o},99037:(t,n,e)=>{e.d(n,{Z:()=>A});var a=e(87537),r=e.n(a),i=e(23645),o=e.n(i)()(r());o.push([t.id,".profile[data-v-c8c42fa4]{width:100%;overflow-y:auto}.profile__header[data-v-c8c42fa4]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-c8c42fa4]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-c8c42fa4]{grid-row:1/3}.profile__header__container__displayname[data-v-c8c42fa4],.profile__header__container__status-text[data-v-c8c42fa4]{color:var(--color-main-text)}.profile__header__container__displayname[data-v-c8c42fa4]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-c8c42fa4]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-c8c42fa4]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-c8c42fa4]:hover,.profile__header__container__edit-button[data-v-c8c42fa4]:focus,.profile__header__container__edit-button[data-v-c8c42fa4]:active{color:var(--color-primary-element);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-c8c42fa4]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-c8c42fa4]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-c8c42fa4]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-c8c42fa4]:hover,.profile__header__container__status-text.interactive[data-v-c8c42fa4]:focus,.profile__header__container__status-text.interactive[data-v-c8c42fa4]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-c8c42fa4]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-c8c42fa4] .avatar.avatardiv,.profile__sidebar h2[data-v-c8c42fa4]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-c8c42fa4] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-c8c42fa4] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__wrapper[data-v-c8c42fa4]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-c8c42fa4]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-c8c42fa4]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-c8c42fa4],.profile__blocks h3[data-v-c8c42fa4]{overflow-wrap:anywhere}.profile__blocks-details[data-v-c8c42fa4]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-c8c42fa4]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-c8c42fa4]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-c8c42fa4]{margin-top:10px}.profile__blocks-headline h3[data-v-c8c42fa4]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-c8c42fa4]{white-space:pre-line}.profile__blocks h3[data-v-c8c42fa4],.profile__blocks p[data-v-c8c42fa4]{cursor:text}.profile__blocks-empty-info[data-v-c8c42fa4]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-c8c42fa4]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-c8c42fa4]{height:250px;position:unset}.profile__header__container[data-v-c8c42fa4]{grid-template-columns:unset}.profile__header__container__displayname[data-v-c8c42fa4]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-c8c42fa4]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-c8c42fa4]{margin:4px auto}.profile__content[data-v-c8c42fa4]{display:block}.profile__blocks[data-v-c8c42fa4]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-c8c42fa4]{margin:0}.profile__sidebar[data-v-c8c42fa4]{margin:unset;position:unset}}.user-actions[data-v-c8c42fa4]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-c8c42fa4]{margin:0 auto}.user-actions__other[data-v-c8c42fa4]{display:flex;justify-content:center;gap:0 4px}.user-actions__other a[data-v-c8c42fa4]{filter:var(--background-invert-if-dark)}.icon-invert[data-v-c8c42fa4] .action-link__icon{filter:invert(1)}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAIA,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAlBiB,CAmBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,4BAAA,CAGD,0DACC,WAjCgB,CAkChB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,kCAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA/EgB,CAgFhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7JkB,CA8JlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtKkB,CAwKlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CACA,wCACC,uCAAA,CAMF,iDACC,gBAAA",sourcesContent:["\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px!important;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t\ta {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n"],sourceRoot:""}]);const A=o}},a={};function r(t){var n=a[t];if(void 0!==n)return n.exports;var i=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=e,n=[],r.O=(t,e,a,i)=>{if(!e){var o=1/0;for(l=0;l<n.length;l++){e=n[l][0],a=n[l][1],i=n[l][2];for(var A=!0,s=0;s<e.length;s++)(!1&i||o>=i)&&Object.keys(r.O).every((t=>r.O[t](e[s])))?e.splice(s--,1):(A=!1,i<o&&(o=i));if(A){n.splice(l--,1);var c=a();void 0!==c&&(t=c)}}return t}i=i||0;for(var l=n.length;l>0&&n[l-1][2]>i;l--)n[l]=n[l-1];n[l]=[e,a,i]},r.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return r.d(n,{a:n}),n},r.d=(t,n)=>{for(var e in n)r.o(n,e)&&!r.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=9651,(()=>{r.b=document.baseURI||self.location.href;var t={9651:0};r.O.j=n=>0===t[n];var n=(n,e)=>{var a,i,o=e[0],A=e[1],s=e[2],c=0;if(o.some((n=>0!==t[n]))){for(a in A)r.o(A,a)&&(r.m[a]=A[a]);if(s)var l=s(r)}for(n&&n(e);c<o.length;c++)i=o[c],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(l)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))})(),r.nc=void 0;var i=r.O(void 0,[7874],(()=>r(15737)));i=r.O(i)})(); -//# sourceMappingURL=core-profile.js.map?v=8f124ca36ed5e81dd44e
\ No newline at end of file +(()=>{"use strict";var a,n={9002:(a,n,e)=>{var r=e(20144),i=e(45994),o=e(31352),A=e(2324),s=e(17499);const l=null===(d=(0,i.ts)())?(0,s.IY)().setApp("core").build():(0,s.IY)().setApp("core").setUid(d.uid).build();var d,c=e(78595),p=e(79954),C=e(79753),u=e(64024),_=e(75925),v=e.n(_),g=e(12945),m=e.n(g),h=e(76212),f=e.n(h),x=e(50246),b=e(73229),y=e(86158);const k={name:"PrimaryActionButton",props:{disabled:{type:Boolean,default:!1},href:{type:String,required:!0},icon:{type:String,required:!0},target:{type:String,required:!0,validator:t=>["_self","_blank","_parent","_top"].includes(t)}},computed:{colorPrimaryText:()=>getComputedStyle(document.body).getPropertyValue("--color-primary-element-text").trim()}};var w=e(93379),B=e.n(w),E=e(7795),D=e.n(E),I=e(90569),S=e.n(I),P=e(3565),O=e.n(P),U=e(19216),z=e.n(U),j=e(44589),M=e.n(j),G=e(34949),Z={};Z.styleTagTransform=M(),Z.setAttributes=O(),Z.insert=S().bind(null,"head"),Z.domAPI=D(),Z.insertStyleElement=z(),B()(G.Z,Z),G.Z&&G.Z.locals&&G.Z.locals;var W=e(51900);const Y=(0,W.Z)(k,(function(){var t=this,a=t._self._c;return a("a",t._g({staticClass:"profile__primary-action-button",class:{disabled:t.disabled},attrs:{href:t.href,target:t.target,rel:"noopener noreferrer nofollow"}},t.$listeners),[a("img",{staticClass:"icon",class:[t.icon,{"icon-invert":"#ffffff"===t.colorPrimaryText}],attrs:{src:t.icon}}),t._v(" "),t._t("default")],2)}),[],!1,null,"5b5fe9f6",null).exports,T=(0,p.j)("core","status",{}),{userId:q,displayname:F,address:$,organisation:N,role:K,headline:L,biography:V,actions:H,isUserAvatarVisible:R}=(0,p.j)("core","profileParameters",{userId:null,displayname:null,address:null,organisation:null,role:null,headline:null,biography:null,actions:[],isUserAvatarVisible:!1}),J={name:"Profile",components:{AccountIcon:y.Z,NcActionLink:f(),NcActions:m(),NcAvatar:v(),MapMarkerIcon:x.Z,PencilIcon:b.default,PrimaryActionButton:Y},data:()=>({status:T,userId:q,displayname:F,address:$,organisation:N,role:K,headline:L,biography:V,actions:H,isUserAvatarVisible:R,sections:OCA.Core.ProfileSections.getSections()}),computed:{isCurrentUser(){var t;return(null===(t=(0,i.ts)())||void 0===t?void 0:t.uid)===this.userId},allActions(){return this.actions},primaryAction(){return this.allActions.length?this.allActions[0]:null},middleActions(){return this.allActions.slice(1,4).length?this.allActions.slice(1,4):null},otherActions(){return this.allActions.slice(4).length?this.allActions.slice(4):null},settingsUrl:()=>(0,C.generateUrl)("/settings/user"),colorMainBackground:()=>getComputedStyle(document.body).getPropertyValue("--color-main-background").trim(),emptyProfileMessage(){return this.isCurrentUser?t("core","You have not added any info yet"):t("core","{user} has not added any info yet",{user:this.displayname||this.userId})}},mounted(){document.title="".concat(this.displayname||this.userId," - ").concat(document.title),(0,c.Ld)("user_status:status.updated",this.handleStatusUpdate)},beforeDestroy(){(0,c.r1)("user_status:status.updated",this.handleStatusUpdate)},methods:{handleStatusUpdate(t){this.isCurrentUser&&t.userId===this.userId&&(this.status=t)},openStatusModal(){const a=document.querySelector(".user-status-menu-item__toggle");this.isCurrentUser&&(a?a.click():(0,u.x2)(t("core","Error opening the user status modal, try hard refreshing the page")))}}};var Q=e(41724),X={};X.styleTagTransform=M(),X.setAttributes=O(),X.insert=S().bind(null,"head"),X.domAPI=D(),X.insertStyleElement=z(),B()(Q.Z,X),Q.Z&&Q.Z.locals&&Q.Z.locals;var tt=e(31487),at={};at.styleTagTransform=M(),at.setAttributes=O(),at.insert=S().bind(null,"head"),at.domAPI=D(),at.insertStyleElement=z(),B()(tt.Z,at),tt.Z&&tt.Z.locals&&tt.Z.locals;const nt=(0,W.Z)(J,(function(){var t=this,a=t._self._c;return a("div",{staticClass:"profile"},[a("div",{staticClass:"profile__header"},[a("div",{staticClass:"profile__header__container"},[a("div",{staticClass:"profile__header__container__placeholder"}),t._v(" "),a("h2",{staticClass:"profile__header__container__displayname"},[t._v("\n\t\t\t\t"+t._s(t.displayname||t.userId)+"\n\t\t\t\t"),t.isCurrentUser?a("a",{staticClass:"primary profile__header__container__edit-button",attrs:{href:t.settingsUrl}},[a("PencilIcon",{staticClass:"pencil-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t"+t._s(t.t("core","Edit Profile"))+"\n\t\t\t\t")],1):t._e()]),t._v(" "),t.status.icon||t.status.message?a("div",{staticClass:"profile__header__container__status-text",class:{interactive:t.isCurrentUser},on:{click:function(a){return a.preventDefault(),a.stopPropagation(),t.openStatusModal.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.status.icon)+" "+t._s(t.status.message)+"\n\t\t\t")]):t._e()])]),t._v(" "),a("div",{staticClass:"profile__wrapper"},[a("div",{staticClass:"profile__content"},[a("div",{staticClass:"profile__sidebar"},[a("NcAvatar",{staticClass:"avatar",class:{interactive:t.isCurrentUser},attrs:{user:t.userId,size:180,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0,"is-no-user":!t.isUserAvatarVisible},nativeOn:{click:function(a){return a.preventDefault(),a.stopPropagation(),t.openStatusModal.apply(null,arguments)}}}),t._v(" "),a("div",{staticClass:"user-actions"},[t.primaryAction?a("PrimaryActionButton",{staticClass:"user-actions__primary",attrs:{href:t.primaryAction.target,icon:t.primaryAction.icon,target:"phone"===t.primaryAction.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t"+t._s(t.primaryAction.title)+"\n\t\t\t\t\t")]):t._e(),t._v(" "),a("div",{staticClass:"user-actions__other"},[t._l(t.middleActions,(function(n){return a("NcActions",{key:n.id,staticStyle:{"background-position":"14px center","background-size":"16px","background-repeat":"no-repeat"},style:{backgroundImage:"url(".concat(n.icon,")"),..."#181818"===t.colorMainBackground&&{filter:"invert(1)"}},attrs:{"default-icon":n.icon}},[a("NcActionLink",{attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t")])],1)})),t._v(" "),t.otherActions?[a("NcActions",{attrs:{"force-menu":!0}},t._l(t.otherActions,(function(n){return a("NcActionLink",{key:n.id,class:{"icon-invert":"#181818"===t.colorMainBackground},attrs:{"close-after-click":!0,icon:n.icon,href:n.target,target:"phone"===n.id?"_self":"_blank"}},[t._v("\n\t\t\t\t\t\t\t\t\t"+t._s(n.title)+"\n\t\t\t\t\t\t\t\t")])})),1)]:t._e()],2)],1)],1),t._v(" "),a("div",{staticClass:"profile__blocks"},[t.organisation||t.role||t.address?a("div",{staticClass:"profile__blocks-details"},[t.organisation||t.role?a("div",{staticClass:"detail"},[a("p",[t._v(t._s(t.organisation)+" "),t.organisation&&t.role?a("span",[t._v("•")]):t._e(),t._v(" "+t._s(t.role))])]):t._e(),t._v(" "),t.address?a("div",{staticClass:"detail"},[a("p",[a("MapMarkerIcon",{staticClass:"map-icon",attrs:{size:16}}),t._v("\n\t\t\t\t\t\t\t"+t._s(t.address)+"\n\t\t\t\t\t\t")],1)]):t._e()]):t._e(),t._v(" "),t.headline||t.biography||t.sections.length>0?[t.headline?a("div",{staticClass:"profile__blocks-headline"},[a("h3",[t._v(t._s(t.headline))])]):t._e(),t._v(" "),t.biography?a("div",{staticClass:"profile__blocks-biography"},[a("p",[t._v(t._s(t.biography))])]):t._e(),t._v(" "),t._l(t.sections,(function(n,e){return a("div",{key:e,ref:"section-"+e,refInFor:!0,staticClass:"profile__additionalContent"},[a(n(t.$refs["section-"+e],t.userId),{tag:"component",attrs:{userId:t.userId}})],1)}))]:[a("div",{staticClass:"profile__blocks-empty-info"},[a("AccountIcon",{attrs:{size:60,"fill-color":"var(--color-text-maxcontrast)"}}),t._v(" "),a("h3",[t._v(t._s(t.emptyProfileMessage))]),t._v(" "),a("p",[t._v(t._s(t.t("core","The headline and about sections will show up here")))])],1)]],2)])])])}),[],!1,null,"aa059862",null).exports;e.nc=btoa((0,i.IH)()),window.OCA||(window.OCA={}),window.OCA.Core||(window.OCA.Core={}),Object.assign(window.OCA.Core,{ProfileSections:new class{constructor(){var t,a,n;t=this,n=void 0,(a=function(t){var a=function(t,a){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var e=n.call(t,"string");if("object"!=typeof e)return e;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof a?a:String(a)}(a="_sections"))in t?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,this._sections=[]}registerSection(t){this._sections.push(t)}getSections(){return this._sections}}}),r.default.use(A.default),r.default.mixin({props:{logger:l},methods:{t:o.Iu}});const et=r.default.extend(nt);window.addEventListener("DOMContentLoaded",(()=>{(new et).$mount("#vue-profile")}))},34949:(t,a,n)=>{n.d(a,{Z:()=>A});var e=n(87537),r=n.n(e),i=n(23645),o=n.n(i)()(r());o.push([t.id,".profile__primary-action-button[data-v-5b5fe9f6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-element-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-5b5fe9f6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-5b5fe9f6]{filter:invert(1)}.profile__primary-action-button[data-v-5b5fe9f6]:hover,.profile__primary-action-button[data-v-5b5fe9f6]:focus,.profile__primary-action-button[data-v-5b5fe9f6]:active{background-color:var(--color-primary-element-light)}","",{version:3,sources:["webpack://./core/src/components/Profile/PrimaryActionButton.vue"],names:[],mappings:"AACA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,uCAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA",sourcesContent:["\n.profile__primary-action-button {\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\twidth: 188px;\n\theight: 44px;\n\tpadding: 0 16px;\n\tline-height: 44px;\n\ttext-align: center;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-primary-element-text);\n\tbackground-color: var(--color-primary-element);\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n\n\t.icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-bottom: 2px;\n\t\tmargin-right: 4px;\n\n\t\t&.icon-invert {\n\t\t\tfilter: invert(1);\n\t\t}\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-light);\n\t}\n}\n"],sourceRoot:""}]);const A=o},41724:(t,a,n)=>{n.d(a,{Z:()=>A});var e=n(87537),r=n.n(e),i=n(23645),o=n.n(i)()(r());o.push([t.id,"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAEA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA",sourcesContent:["\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n"],sourceRoot:""}]);const A=o},31487:(t,a,n)=>{n.d(a,{Z:()=>A});var e=n(87537),r=n.n(e),i=n(23645),o=n.n(i)()(r());o.push([t.id,".profile[data-v-aa059862]{width:100%;overflow-y:auto}.profile__header[data-v-aa059862]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-aa059862]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-aa059862]{grid-row:1/3}.profile__header__container__displayname[data-v-aa059862],.profile__header__container__status-text[data-v-aa059862]{color:var(--color-main-text)}.profile__header__container__displayname[data-v-aa059862]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-aa059862]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-aa059862]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element-text);background-color:var(--color-primary-element);box-shadow:0 0 0 2px var(--color-primary-element);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-aa059862]:hover,.profile__header__container__edit-button[data-v-aa059862]:focus,.profile__header__container__edit-button[data-v-aa059862]:active{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-aa059862]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-aa059862]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-aa059862]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-aa059862]:hover,.profile__header__container__status-text.interactive[data-v-aa059862]:focus,.profile__header__container__status-text.interactive[data-v-aa059862]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-aa059862]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-aa059862] .avatar.avatardiv,.profile__sidebar h2[data-v-aa059862]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-aa059862] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-aa059862] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__wrapper[data-v-aa059862]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-aa059862]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-aa059862]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-aa059862],.profile__blocks h3[data-v-aa059862]{overflow-wrap:anywhere}.profile__blocks-details[data-v-aa059862]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-aa059862]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-aa059862]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-aa059862]{margin-top:10px}.profile__blocks-headline h3[data-v-aa059862]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-aa059862]{white-space:pre-line}.profile__blocks h3[data-v-aa059862],.profile__blocks p[data-v-aa059862]{cursor:text}.profile__blocks-empty-info[data-v-aa059862]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-aa059862]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-aa059862]{height:250px;position:unset}.profile__header__container[data-v-aa059862]{grid-template-columns:unset}.profile__header__container__displayname[data-v-aa059862]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-aa059862]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-aa059862]{margin:4px auto}.profile__content[data-v-aa059862]{display:block}.profile__blocks[data-v-aa059862]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-aa059862]{margin:0}.profile__sidebar[data-v-aa059862]{margin:unset;position:unset}}.user-actions[data-v-aa059862]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-aa059862]{margin:0 auto}.user-actions__other[data-v-aa059862]{display:flex;justify-content:center;gap:0 4px}.user-actions__other a[data-v-aa059862]{filter:var(--background-invert-if-dark)}.icon-invert[data-v-aa059862] .action-link__icon{filter:invert(1)}","",{version:3,sources:["webpack://./core/src/views/Profile.vue"],names:[],mappings:"AAIA,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAlBiB,CAmBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,4BAAA,CAGD,0DACC,WAjCgB,CAkChB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,uCAAA,CACA,6CAAA,CACA,iDAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,6CAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA/EgB,CAgFhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7JkB,CA8JlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtKkB,CAwKlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CACA,wCACC,uCAAA,CAMF,iDACC,gBAAA",sourcesContent:["\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element-text);\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-element);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-element-light-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px!important;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t\ta {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n"],sourceRoot:""}]);const A=o}},e={};function r(t){var a=e[t];if(void 0!==a)return a.exports;var i=e[t]={id:t,loaded:!1,exports:{}};return n[t].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}r.m=n,a=[],r.O=(t,n,e,i)=>{if(!n){var o=1/0;for(d=0;d<a.length;d++){n=a[d][0],e=a[d][1],i=a[d][2];for(var A=!0,s=0;s<n.length;s++)(!1&i||o>=i)&&Object.keys(r.O).every((t=>r.O[t](n[s])))?n.splice(s--,1):(A=!1,i<o&&(o=i));if(A){a.splice(d--,1);var l=e();void 0!==l&&(t=l)}}return t}i=i||0;for(var d=a.length;d>0&&a[d-1][2]>i;d--)a[d]=a[d-1];a[d]=[n,e,i]},r.n=t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return r.d(a,{a}),a},r.d=(t,a)=>{for(var n in a)r.o(a,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:a[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,a)=>Object.prototype.hasOwnProperty.call(t,a),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r.j=9651,(()=>{r.b=document.baseURI||self.location.href;var t={9651:0};r.O.j=a=>0===t[a];var a=(a,n)=>{var e,i,o=n[0],A=n[1],s=n[2],l=0;if(o.some((a=>0!==t[a]))){for(e in A)r.o(A,e)&&(r.m[e]=A[e]);if(s)var d=s(r)}for(a&&a(n);l<o.length;l++)i=o[l],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(a.bind(null,0)),n.push=a.bind(null,n.push.bind(n))})(),r.nc=void 0;var i=r.O(void 0,[7874],(()=>r(9002)));i=r.O(i)})(); +//# sourceMappingURL=core-profile.js.map?v=0b1c99f38389fc349a77
\ No newline at end of file diff --git a/dist/core-profile.js.map b/dist/core-profile.js.map index 32073ffb786..a41132274ba 100644 --- a/dist/core-profile.js.map +++ b/dist/core-profile.js.map @@ -1 +1 @@ -{"version":3,"file":"core-profile.js?v=8f124ca36ed5e81dd44e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?eba4","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?4873","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?2d98","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Profile.vue?8678","webpack://nextcloud/./core/src/views/Profile.vue?863f","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack://nextcloud/./core/src/views/Profile.vue?bc3b","webpack:///nextcloud/core/src/profile.js","webpack:///nextcloud/core/src/profile/ProfileSections.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&id=c8c42fa4&prod&lang=scss&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=1&id=c8c42fa4&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"profile__primary-action-button\"\n\t\t:class=\"{ 'disabled': disabled }\"\n\t\t:href=\"href\"\n\t\t:target=\"target\"\n\t\trel=\"noopener noreferrer nofollow\"\n\t\tv-on=\"$listeners\">\n\t\t<img class=\"icon\"\n\t\t\t:class=\"[icon, { 'icon-invert': colorPrimaryText === '#ffffff' }]\"\n\t\t\t:src=\"icon\">\n\t\t<slot />\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'PrimaryActionButton',\n\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => ['_self', '_blank', '_parent', '_top'].includes(value),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tcolorPrimaryText() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-primary-text').trim()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.profile__primary-action-button {\n\t\tfont-size: var(--default-font-size);\n\t\tfont-weight: bold;\n\t\twidth: 188px;\n\t\theight: 44px;\n\t\tpadding: 0 16px;\n\t\tline-height: 44px;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tmargin-bottom: 2px;\n\t\t\tmargin-right: 4px;\n\n\t\t\t&.icon-invert {\n\t\t\t\tfilter: invert(1);\n\t\t\t}\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PrimaryActionButton.vue?vue&type=template&id=35d5c4b6&scoped=true&\"\nimport script from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrimaryActionButton.vue?vue&type=style&index=0&id=35d5c4b6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35d5c4b6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',_vm._g({staticClass:\"profile__primary-action-button\",class:{ 'disabled': _vm.disabled },attrs:{\"href\":_vm.href,\"target\":_vm.target,\"rel\":\"noopener noreferrer nofollow\"}},_vm.$listeners),[_c('img',{staticClass:\"icon\",class:[_vm.icon, { 'icon-invert': _vm.colorPrimaryText === '#ffffff' }],attrs:{\"src\":_vm.icon}}),_vm._v(\" \"),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"profile\">\n\t\t<div class=\"profile__header\">\n\t\t\t<div class=\"profile__header__container\">\n\t\t\t\t<div class=\"profile__header__container__placeholder\" />\n\t\t\t\t<h2 class=\"profile__header__container__displayname\">\n\t\t\t\t\t{{ displayname || userId }}\n\t\t\t\t\t<a v-if=\"isCurrentUser\"\n\t\t\t\t\t\tclass=\"primary profile__header__container__edit-button\"\n\t\t\t\t\t\t:href=\"settingsUrl\">\n\t\t\t\t\t\t<PencilIcon class=\"pencil-icon\"\n\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t{{ t('core', 'Edit Profile') }}\n\t\t\t\t\t</a>\n\t\t\t\t</h2>\n\t\t\t\t<div v-if=\"status.icon || status.message\"\n\t\t\t\t\tclass=\"profile__header__container__status-text\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t@click.prevent.stop=\"openStatusModal\">\n\t\t\t\t\t{{ status.icon }} {{ status.message }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"profile__wrapper\">\n\t\t\t<div class=\"profile__content\">\n\t\t\t\t<div class=\"profile__sidebar\">\n\t\t\t\t\t<NcAvatar class=\"avatar\"\n\t\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t\t:show-user-status=\"true\"\n\t\t\t\t\t\t:show-user-status-compact=\"false\"\n\t\t\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t\t\t:is-no-user=\"!isUserAvatarVisible\"\n\t\t\t\t\t\t@click.native.prevent.stop=\"openStatusModal\" />\n\n\t\t\t\t\t<div class=\"user-actions\">\n\t\t\t\t\t\t<!-- When a tel: URL is opened with target=\"_blank\", a blank new tab is opened which is inconsistent with the handling of other URLs so we set target=\"_self\" for the phone action -->\n\t\t\t\t\t\t<PrimaryActionButton v-if=\"primaryAction\"\n\t\t\t\t\t\t\tclass=\"user-actions__primary\"\n\t\t\t\t\t\t\t:href=\"primaryAction.target\"\n\t\t\t\t\t\t\t:icon=\"primaryAction.icon\"\n\t\t\t\t\t\t\t:target=\"primaryAction.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t{{ primaryAction.title }}\n\t\t\t\t\t\t</PrimaryActionButton>\n\t\t\t\t\t\t<div class=\"user-actions__other\">\n\t\t\t\t\t\t\t<!-- FIXME Remove inline styles after https://github.com/nextcloud/nextcloud-vue/issues/2315 is fixed -->\n\t\t\t\t\t\t\t<NcActions v-for=\"action in middleActions\"\n\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t:default-icon=\"action.icon\"\n\t\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\tbackground-position: 14px center;\n\t\t\t\t\t\t\t\tbackground-size: 16px;\n\t\t\t\t\t\t\t\tbackground-repeat: no-repeat;\"\n\t\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t\t...(colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t\t<NcActionLink :close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t</NcActionLink>\n\t\t\t\t\t\t\t</NcActions>\n\t\t\t\t\t\t\t<template v-if=\"otherActions\">\n\t\t\t\t\t\t\t\t<NcActions :force-menu=\"true\">\n\t\t\t\t\t\t\t\t\t<NcActionLink v-for=\"action in otherActions\"\n\t\t\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t\t\t:class=\"{ 'icon-invert': colorMainBackground === '#181818' }\"\n\t\t\t\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t\t</NcActionLink>\n\t\t\t\t\t\t\t\t</NcActions>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"profile__blocks\">\n\t\t\t\t\t<div v-if=\"organisation || role || address\" class=\"profile__blocks-details\">\n\t\t\t\t\t\t<div v-if=\"organisation || role\" class=\"detail\">\n\t\t\t\t\t\t\t<p>{{ organisation }} <span v-if=\"organisation && role\">•</span> {{ role }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if=\"address\" class=\"detail\">\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<MapMarkerIcon class=\"map-icon\"\n\t\t\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t\t\t{{ address }}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<template v-if=\"headline || biography || sections.length > 0\">\n\t\t\t\t\t\t<div v-if=\"headline\" class=\"profile__blocks-headline\">\n\t\t\t\t\t\t\t<h3>{{ headline }}</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if=\"biography\" class=\"profile__blocks-biography\">\n\t\t\t\t\t\t\t<p>{{ biography }}</p>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<!-- additional entries, use it with cautious -->\n\t\t\t\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t\t\tclass=\"profile__additionalContent\">\n\t\t\t\t\t\t\t<component :is=\"section($refs['section-'+index], userId)\" :userId=\"userId\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div class=\"profile__blocks-empty-info\">\n\t\t\t\t\t\t\t<AccountIcon :size=\"60\"\n\t\t\t\t\t\t\t\tfill-color=\"var(--color-text-maxcontrast)\" />\n\t\t\t\t\t\t\t<h3>{{ emptyProfileMessage }}</h3>\n\t\t\t\t\t\t\t<p>{{ t('core', 'The headline and about sections will show up here') }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError } from '@nextcloud/dialogs'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport MapMarkerIcon from 'vue-material-design-icons/MapMarker.vue'\nimport PencilIcon from 'vue-material-design-icons/Pencil.vue'\nimport AccountIcon from 'vue-material-design-icons/Account.vue'\n\nimport PrimaryActionButton from '../components/Profile/PrimaryActionButton.vue'\n\nconst status = loadState('core', 'status', {})\nconst {\n\tuserId,\n\tdisplayname,\n\taddress,\n\torganisation,\n\trole,\n\theadline,\n\tbiography,\n\tactions,\n\tisUserAvatarVisible,\n} = loadState('core', 'profileParameters', {\n\tuserId: null,\n\tdisplayname: null,\n\taddress: null,\n\torganisation: null,\n\trole: null,\n\theadline: null,\n\tbiography: null,\n\tactions: [],\n\tisUserAvatarVisible: false,\n})\n\nexport default {\n\tname: 'Profile',\n\n\tcomponents: {\n\t\tAccountIcon,\n\t\tNcActionLink,\n\t\tNcActions,\n\t\tNcAvatar,\n\t\tMapMarkerIcon,\n\t\tPencilIcon,\n\t\tPrimaryActionButton,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tstatus,\n\t\t\tuserId,\n\t\t\tdisplayname,\n\t\t\taddress,\n\t\t\torganisation,\n\t\t\trole,\n\t\t\theadline,\n\t\t\tbiography,\n\t\t\tactions,\n\t\t\tisUserAvatarVisible,\n\t\t\tsections: OCA.Core.ProfileSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisCurrentUser() {\n\t\t\treturn getCurrentUser()?.uid === this.userId\n\t\t},\n\n\t\tallActions() {\n\t\t\treturn this.actions\n\t\t},\n\n\t\tprimaryAction() {\n\t\t\tif (this.allActions.length) {\n\t\t\t\treturn this.allActions[0]\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tmiddleActions() {\n\t\t\tif (this.allActions.slice(1, 4).length) {\n\t\t\t\treturn this.allActions.slice(1, 4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\totherActions() {\n\t\t\tif (this.allActions.slice(4).length) {\n\t\t\t\treturn this.allActions.slice(4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tsettingsUrl() {\n\t\t\treturn generateUrl('/settings/user')\n\t\t},\n\n\t\tcolorMainBackground() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-main-background').trim()\n\t\t},\n\n\t\temptyProfileMessage() {\n\t\t\treturn this.isCurrentUser\n\t\t\t\t? t('core', 'You have not added any info yet')\n\t\t\t\t: t('core', '{user} has not added any info yet', { user: (this.displayname || this.userId) })\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Set the user's displayname or userId in the page title and preserve the default title of \"Nextcloud\" at the end\n\t\tdocument.title = `${this.displayname || this.userId} - ${document.title}`\n\t\tsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tmethods: {\n\t\thandleStatusUpdate(status) {\n\t\t\tif (this.isCurrentUser && status.userId === this.userId) {\n\t\t\t\tthis.status = status\n\t\t\t}\n\t\t},\n\n\t\topenStatusModal() {\n\t\t\tconst statusMenuItem = document.querySelector('.user-status-menu-item__toggle')\n\t\t\t// Changing the user status is only enabled if you are the current user\n\t\t\tif (this.isCurrentUser) {\n\t\t\t\tif (statusMenuItem) {\n\t\t\t\t\tstatusMenuItem.click()\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('core', 'Error opening the user status modal, try hard refreshing the page'))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\tbackground-color: var(--color-primary-text);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-element);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px!important;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t\ta {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=c8c42fa4&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=c8c42fa4&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=c8c42fa4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=c8c42fa4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=c8c42fa4&scoped=true&\"\nimport script from \"./Profile.vue?vue&type=script&lang=js&\"\nexport * from \"./Profile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=c8c42fa4&prod&lang=scss&\"\nimport style1 from \"./Profile.vue?vue&type=style&index=1&id=c8c42fa4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c8c42fa4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"profile\"},[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('h2',{staticClass:\"profile__header__container__displayname\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.displayname || _vm.userId)+\"\\n\\t\\t\\t\\t\"),(_vm.isCurrentUser)?_c('a',{staticClass:\"primary profile__header__container__edit-button\",attrs:{\"href\":_vm.settingsUrl}},[_c('PencilIcon',{staticClass:\"pencil-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\")],1):_vm._e()]),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('div',{staticClass:\"profile__header__container__status-text\",class:{ interactive: _vm.isCurrentUser },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"profile__wrapper\"},[_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('NcAvatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('PrimaryActionButton',{staticClass:\"user-actions__primary\",attrs:{\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"user-actions__other\"},[_vm._l((_vm.middleActions),function(action){return _c('NcActions',{key:action.id,staticStyle:{\"background-position\":\"14px center\",\"background-size\":\"16px\",\"background-repeat\":\"no-repeat\"},style:({\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t...(_vm.colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t}),attrs:{\"default-icon\":action.icon}},[_c('NcActionLink',{attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])],1)}),_vm._v(\" \"),(_vm.otherActions)?[_c('NcActions',{attrs:{\"force-menu\":true}},_vm._l((_vm.otherActions),function(action){return _c('NcActionLink',{key:action.id,class:{ 'icon-invert': _vm.colorMainBackground === '#181818' },attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\")])}),1)]:_vm._e()],2)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography || _vm.sections.length > 0)?[(_vm.headline)?_c('div',{staticClass:\"profile__blocks-headline\"},[_c('h3',[_vm._v(_vm._s(_vm.headline))])]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('div',{staticClass:\"profile__blocks-biography\"},[_c('p',[_vm._v(_vm._s(_vm.biography))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"profile__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.userId),{tag:\"component\",attrs:{\"userId\":_vm.userId}})],1)})]:[_c('div',{staticClass:\"profile__blocks-empty-info\"},[_c('AccountIcon',{attrs:{\"size\":60,\"fill-color\":\"var(--color-text-maxcontrast)\"}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.emptyProfileMessage))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('core', 'The headline and about sections will show up here')))])],1)]],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from 'v-tooltip'\n\nimport logger from './logger.js'\n\nimport Profile from './views/Profile.vue'\nimport ProfileSections from './profile/ProfileSections.js'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nif (!window.OCA) {\n\twindow.OCA = {}\n}\n\nif (!window.OCA.Core) {\n\twindow.OCA.Core = {}\n}\nObject.assign(window.OCA.Core, { ProfileSections: new ProfileSections() })\n\nVue.use(VTooltip)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(Profile)\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tnew View().$mount('#vue-profile')\n})\n","\n/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ProfileSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile__primary-action-button[data-v-35d5c4b6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-35d5c4b6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-35d5c4b6]{filter:invert(1)}.profile__primary-action-button[data-v-35d5c4b6]:hover,.profile__primary-action-button[data-v-35d5c4b6]:focus,.profile__primary-action-button[data-v-35d5c4b6]:active{background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/Profile/PrimaryActionButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,+BAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA\",\"sourcesContent\":[\"\\n.profile__primary-action-button {\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\twidth: 188px;\\n\\theight: 44px;\\n\\tpadding: 0 16px;\\n\\tline-height: 44px;\\n\\ttext-align: center;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-primary-text);\\n\\tbackground-color: var(--color-primary-element);\\n\\toverflow: hidden;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-bottom: 2px;\\n\\t\\tmargin-right: 4px;\\n\\n\\t\\t&.icon-invert {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAEA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA\",\"sourcesContent\":[\"\\n// Override header styles\\n#header {\\n\\tbackground-color: transparent !important;\\n\\tbackground-image: none !important;\\n}\\n\\n#content {\\n\\tpadding-top: 0px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile[data-v-c8c42fa4]{width:100%;overflow-y:auto}.profile__header[data-v-c8c42fa4]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-c8c42fa4]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-c8c42fa4]{grid-row:1/3}.profile__header__container__displayname[data-v-c8c42fa4],.profile__header__container__status-text[data-v-c8c42fa4]{color:var(--color-main-text)}.profile__header__container__displayname[data-v-c8c42fa4]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-c8c42fa4]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-c8c42fa4]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element);background-color:var(--color-primary-text);box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-c8c42fa4]:hover,.profile__header__container__edit-button[data-v-c8c42fa4]:focus,.profile__header__container__edit-button[data-v-c8c42fa4]:active{color:var(--color-primary-element);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-c8c42fa4]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-c8c42fa4]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-c8c42fa4]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-c8c42fa4]:hover,.profile__header__container__status-text.interactive[data-v-c8c42fa4]:focus,.profile__header__container__status-text.interactive[data-v-c8c42fa4]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-c8c42fa4]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-c8c42fa4] .avatar.avatardiv,.profile__sidebar h2[data-v-c8c42fa4]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-c8c42fa4] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-c8c42fa4] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-c8c42fa4] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__wrapper[data-v-c8c42fa4]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-c8c42fa4]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-c8c42fa4]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-c8c42fa4],.profile__blocks h3[data-v-c8c42fa4]{overflow-wrap:anywhere}.profile__blocks-details[data-v-c8c42fa4]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-c8c42fa4]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-c8c42fa4]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-c8c42fa4]{margin-top:10px}.profile__blocks-headline h3[data-v-c8c42fa4]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-c8c42fa4]{white-space:pre-line}.profile__blocks h3[data-v-c8c42fa4],.profile__blocks p[data-v-c8c42fa4]{cursor:text}.profile__blocks-empty-info[data-v-c8c42fa4]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-c8c42fa4]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-c8c42fa4]{height:250px;position:unset}.profile__header__container[data-v-c8c42fa4]{grid-template-columns:unset}.profile__header__container__displayname[data-v-c8c42fa4]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-c8c42fa4]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-c8c42fa4]{margin:4px auto}.profile__content[data-v-c8c42fa4]{display:block}.profile__blocks[data-v-c8c42fa4]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-c8c42fa4]{margin:0}.profile__sidebar[data-v-c8c42fa4]{margin:unset;position:unset}}.user-actions[data-v-c8c42fa4]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-c8c42fa4]{margin:0 auto}.user-actions__other[data-v-c8c42fa4]{display:flex;justify-content:center;gap:0 4px}.user-actions__other a[data-v-c8c42fa4]{filter:var(--background-invert-if-dark)}.icon-invert[data-v-c8c42fa4] .action-link__icon{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAIA,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAlBiB,CAmBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,4BAAA,CAGD,0DACC,WAjCgB,CAkChB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,kCAAA,CACA,0CAAA,CACA,8CAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,kCAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA/EgB,CAgFhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7JkB,CA8JlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtKkB,CAwKlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CACA,wCACC,uCAAA,CAMF,iDACC,gBAAA\",\"sourcesContent\":[\"\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n.profile {\\n\\twidth: 100%;\\n\\toverflow-y: auto;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname, &__status-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-top: 128px;\\n\\t\\t\\t\\t// Override the global style declaration\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tcursor: text;\\n\\n\\t\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\t\\tmargin-top: 100px;\\n\\t\\t\\t\\t\\tmargin-bottom: 4px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\tmargin-left: 18px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\tbackground-color: var(--color-primary-text);\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-text);\\n\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\tpadding: 0 18px;\\n\\t\\t\\t\\tfont-size: var(--default-font-size);\\n\\t\\t\\t\\theight: 44px;\\n\\t\\t\\t\\tline-height: 44px;\\n\\t\\t\\t\\tfont-weight: bold;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__status-text {\\n\\t\\t\\t\\twidth: max-content;\\n\\t\\t\\t\\tmax-width: $content-max-width;\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -12px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: var(--header-height);\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin: -150px 20px 0 0;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t&::v-deep .avatar.avatardiv, h2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\\n\\t\\t\\tbackground-color: var(--color-main-background) !important;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tright: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.interactive.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tmin-height: 100%;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-top: 10px;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\n\\t\\th3, p {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&-empty-info {\\n\\t\\t\\tmargin-top: 80px;\\n\\t\\t\\tmargin-right: 100px;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 18px;\\n\\t\\t\\t\\tmargin: 8px 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 80px 20px 0px!important;\\n\\t\\t\\t\\t\\theight: 1em;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 60px auto;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__status-text {\\n\\t\\t\\t\\t\\tmargin: 4px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\n\\t\\t\\t&-empty-info {\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\t\\ta {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\t}\\n}\\n\\n.icon-invert {\\n\\t&::v-deep .action-link__icon {\\n\\t\\tfilter: invert(1);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9651;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9651: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(15737)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","name","props","disabled","type","Boolean","default","href","String","required","icon","target","validator","value","includes","computed","colorPrimaryText","getComputedStyle","document","body","getPropertyValue","trim","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","_g","staticClass","class","attrs","$listeners","_v","_t","status","loadState","userId","displayname","address","organisation","role","headline","biography","actions","isUserAvatarVisible","components","AccountIcon","NcActionLink","NcActions","NcAvatar","MapMarkerIcon","PencilIcon","PrimaryActionButton","data","sections","OCA","Core","ProfileSections","getSections","isCurrentUser","_getCurrentUser","allActions","primaryAction","length","middleActions","slice","otherActions","settingsUrl","generateUrl","colorMainBackground","emptyProfileMessage","t","mounted","title","concat","subscribe","handleStatusUpdate","beforeDestroy","unsubscribe","methods","openStatusModal","statusMenuItem","querySelector","click","showError","_s","_e","message","interactive","on","$event","preventDefault","stopPropagation","apply","arguments","nativeOn","id","_l","action","key","staticStyle","style","backgroundImage","filter","section","index","ref","refInFor","$refs","tag","__webpack_nonce__","btoa","getRequestToken","window","Object","assign","constructor","_sections","registerSection","push","Vue","VTooltip","logger","View","Profile","addEventListener","$mount","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-profile.js?v=0b1c99f38389fc349a77","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?91a0","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?4873","webpack://nextcloud/./core/src/components/Profile/PrimaryActionButton.vue?2d98","webpack:///nextcloud/core/src/views/Profile.vue","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Profile.vue?896e","webpack://nextcloud/./core/src/views/Profile.vue?3863","webpack://nextcloud/./core/src/views/Profile.vue?6193","webpack://nextcloud/./core/src/views/Profile.vue?bc3b","webpack:///nextcloud/core/src/profile.js","webpack:///nextcloud/core/src/profile/ProfileSections.js","webpack:///nextcloud/core/src/components/Profile/PrimaryActionButton.vue?vue&type=style&index=0&id=5b5fe9f6&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=0&id=aa059862&prod&lang=scss&","webpack:///nextcloud/core/src/views/Profile.vue?vue&type=style&index=1&id=aa059862&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"profile__primary-action-button\"\n\t\t:class=\"{ 'disabled': disabled }\"\n\t\t:href=\"href\"\n\t\t:target=\"target\"\n\t\trel=\"noopener noreferrer nofollow\"\n\t\tv-on=\"$listeners\">\n\t\t<img class=\"icon\"\n\t\t\t:class=\"[icon, { 'icon-invert': colorPrimaryText === '#ffffff' }]\"\n\t\t\t:src=\"icon\">\n\t\t<slot />\n\t</a>\n</template>\n\n<script>\nexport default {\n\tname: 'PrimaryActionButton',\n\n\tprops: {\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => ['_self', '_blank', '_parent', '_top'].includes(value),\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tcolorPrimaryText() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-primary-element-text').trim()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.profile__primary-action-button {\n\t\tfont-size: var(--default-font-size);\n\t\tfont-weight: bold;\n\t\twidth: 188px;\n\t\theight: 44px;\n\t\tpadding: 0 16px;\n\t\tline-height: 44px;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-pill);\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: var(--color-primary-element);\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\n\t\t.icon {\n\t\t\tdisplay: inline-block;\n\t\t\tvertical-align: middle;\n\t\t\tmargin-bottom: 2px;\n\t\t\tmargin-right: 4px;\n\n\t\t\t&.icon-invert {\n\t\t\t\tfilter: invert(1);\n\t\t\t}\n\t\t}\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=5b5fe9f6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrimaryActionButton.vue?vue&type=style&index=0&id=5b5fe9f6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PrimaryActionButton.vue?vue&type=template&id=5b5fe9f6&scoped=true&\"\nimport script from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./PrimaryActionButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PrimaryActionButton.vue?vue&type=style&index=0&id=5b5fe9f6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b5fe9f6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',_vm._g({staticClass:\"profile__primary-action-button\",class:{ 'disabled': _vm.disabled },attrs:{\"href\":_vm.href,\"target\":_vm.target,\"rel\":\"noopener noreferrer nofollow\"}},_vm.$listeners),[_c('img',{staticClass:\"icon\",class:[_vm.icon, { 'icon-invert': _vm.colorPrimaryText === '#ffffff' }],attrs:{\"src\":_vm.icon}}),_vm._v(\" \"),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"profile\">\n\t\t<div class=\"profile__header\">\n\t\t\t<div class=\"profile__header__container\">\n\t\t\t\t<div class=\"profile__header__container__placeholder\" />\n\t\t\t\t<h2 class=\"profile__header__container__displayname\">\n\t\t\t\t\t{{ displayname || userId }}\n\t\t\t\t\t<a v-if=\"isCurrentUser\"\n\t\t\t\t\t\tclass=\"primary profile__header__container__edit-button\"\n\t\t\t\t\t\t:href=\"settingsUrl\">\n\t\t\t\t\t\t<PencilIcon class=\"pencil-icon\"\n\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t{{ t('core', 'Edit Profile') }}\n\t\t\t\t\t</a>\n\t\t\t\t</h2>\n\t\t\t\t<div v-if=\"status.icon || status.message\"\n\t\t\t\t\tclass=\"profile__header__container__status-text\"\n\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t@click.prevent.stop=\"openStatusModal\">\n\t\t\t\t\t{{ status.icon }} {{ status.message }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"profile__wrapper\">\n\t\t\t<div class=\"profile__content\">\n\t\t\t\t<div class=\"profile__sidebar\">\n\t\t\t\t\t<NcAvatar class=\"avatar\"\n\t\t\t\t\t\t:class=\"{ interactive: isCurrentUser }\"\n\t\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t\t:show-user-status=\"true\"\n\t\t\t\t\t\t:show-user-status-compact=\"false\"\n\t\t\t\t\t\t:disable-menu=\"true\"\n\t\t\t\t\t\t:disable-tooltip=\"true\"\n\t\t\t\t\t\t:is-no-user=\"!isUserAvatarVisible\"\n\t\t\t\t\t\t@click.native.prevent.stop=\"openStatusModal\" />\n\n\t\t\t\t\t<div class=\"user-actions\">\n\t\t\t\t\t\t<!-- When a tel: URL is opened with target=\"_blank\", a blank new tab is opened which is inconsistent with the handling of other URLs so we set target=\"_self\" for the phone action -->\n\t\t\t\t\t\t<PrimaryActionButton v-if=\"primaryAction\"\n\t\t\t\t\t\t\tclass=\"user-actions__primary\"\n\t\t\t\t\t\t\t:href=\"primaryAction.target\"\n\t\t\t\t\t\t\t:icon=\"primaryAction.icon\"\n\t\t\t\t\t\t\t:target=\"primaryAction.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t{{ primaryAction.title }}\n\t\t\t\t\t\t</PrimaryActionButton>\n\t\t\t\t\t\t<div class=\"user-actions__other\">\n\t\t\t\t\t\t\t<!-- FIXME Remove inline styles after https://github.com/nextcloud/nextcloud-vue/issues/2315 is fixed -->\n\t\t\t\t\t\t\t<NcActions v-for=\"action in middleActions\"\n\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t:default-icon=\"action.icon\"\n\t\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\tbackground-position: 14px center;\n\t\t\t\t\t\t\t\tbackground-size: 16px;\n\t\t\t\t\t\t\t\tbackground-repeat: no-repeat;\"\n\t\t\t\t\t\t\t\t:style=\"{\n\t\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t\t...(colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t\t}\">\n\t\t\t\t\t\t\t\t<NcActionLink :close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t</NcActionLink>\n\t\t\t\t\t\t\t</NcActions>\n\t\t\t\t\t\t\t<template v-if=\"otherActions\">\n\t\t\t\t\t\t\t\t<NcActions :force-menu=\"true\">\n\t\t\t\t\t\t\t\t\t<NcActionLink v-for=\"action in otherActions\"\n\t\t\t\t\t\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t\t\t\t\t\t:class=\"{ 'icon-invert': colorMainBackground === '#181818' }\"\n\t\t\t\t\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t\t\t\t\t:icon=\"action.icon\"\n\t\t\t\t\t\t\t\t\t\t:href=\"action.target\"\n\t\t\t\t\t\t\t\t\t\t:target=\"action.id === 'phone' ? '_self' :'_blank'\">\n\t\t\t\t\t\t\t\t\t\t{{ action.title }}\n\t\t\t\t\t\t\t\t\t</NcActionLink>\n\t\t\t\t\t\t\t\t</NcActions>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"profile__blocks\">\n\t\t\t\t\t<div v-if=\"organisation || role || address\" class=\"profile__blocks-details\">\n\t\t\t\t\t\t<div v-if=\"organisation || role\" class=\"detail\">\n\t\t\t\t\t\t\t<p>{{ organisation }} <span v-if=\"organisation && role\">•</span> {{ role }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if=\"address\" class=\"detail\">\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t<MapMarkerIcon class=\"map-icon\"\n\t\t\t\t\t\t\t\t\t:size=\"16\" />\n\t\t\t\t\t\t\t\t{{ address }}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<template v-if=\"headline || biography || sections.length > 0\">\n\t\t\t\t\t\t<div v-if=\"headline\" class=\"profile__blocks-headline\">\n\t\t\t\t\t\t\t<h3>{{ headline }}</h3>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div v-if=\"biography\" class=\"profile__blocks-biography\">\n\t\t\t\t\t\t\t<p>{{ biography }}</p>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<!-- additional entries, use it with cautious -->\n\t\t\t\t\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t\t\t\t\t:ref=\"'section-' + index\"\n\t\t\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t\t\tclass=\"profile__additionalContent\">\n\t\t\t\t\t\t\t<component :is=\"section($refs['section-'+index], userId)\" :userId=\"userId\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<div class=\"profile__blocks-empty-info\">\n\t\t\t\t\t\t\t<AccountIcon :size=\"60\"\n\t\t\t\t\t\t\t\tfill-color=\"var(--color-text-maxcontrast)\" />\n\t\t\t\t\t\t\t<h3>{{ emptyProfileMessage }}</h3>\n\t\t\t\t\t\t\t<p>{{ t('core', 'The headline and about sections will show up here') }}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError } from '@nextcloud/dialogs'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport MapMarkerIcon from 'vue-material-design-icons/MapMarker.vue'\nimport PencilIcon from 'vue-material-design-icons/Pencil.vue'\nimport AccountIcon from 'vue-material-design-icons/Account.vue'\n\nimport PrimaryActionButton from '../components/Profile/PrimaryActionButton.vue'\n\nconst status = loadState('core', 'status', {})\nconst {\n\tuserId,\n\tdisplayname,\n\taddress,\n\torganisation,\n\trole,\n\theadline,\n\tbiography,\n\tactions,\n\tisUserAvatarVisible,\n} = loadState('core', 'profileParameters', {\n\tuserId: null,\n\tdisplayname: null,\n\taddress: null,\n\torganisation: null,\n\trole: null,\n\theadline: null,\n\tbiography: null,\n\tactions: [],\n\tisUserAvatarVisible: false,\n})\n\nexport default {\n\tname: 'Profile',\n\n\tcomponents: {\n\t\tAccountIcon,\n\t\tNcActionLink,\n\t\tNcActions,\n\t\tNcAvatar,\n\t\tMapMarkerIcon,\n\t\tPencilIcon,\n\t\tPrimaryActionButton,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tstatus,\n\t\t\tuserId,\n\t\t\tdisplayname,\n\t\t\taddress,\n\t\t\torganisation,\n\t\t\trole,\n\t\t\theadline,\n\t\t\tbiography,\n\t\t\tactions,\n\t\t\tisUserAvatarVisible,\n\t\t\tsections: OCA.Core.ProfileSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisCurrentUser() {\n\t\t\treturn getCurrentUser()?.uid === this.userId\n\t\t},\n\n\t\tallActions() {\n\t\t\treturn this.actions\n\t\t},\n\n\t\tprimaryAction() {\n\t\t\tif (this.allActions.length) {\n\t\t\t\treturn this.allActions[0]\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tmiddleActions() {\n\t\t\tif (this.allActions.slice(1, 4).length) {\n\t\t\t\treturn this.allActions.slice(1, 4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\totherActions() {\n\t\t\tif (this.allActions.slice(4).length) {\n\t\t\t\treturn this.allActions.slice(4)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tsettingsUrl() {\n\t\t\treturn generateUrl('/settings/user')\n\t\t},\n\n\t\tcolorMainBackground() {\n\t\t\t// For some reason the returned string has prepended whitespace\n\t\t\treturn getComputedStyle(document.body).getPropertyValue('--color-main-background').trim()\n\t\t},\n\n\t\temptyProfileMessage() {\n\t\t\treturn this.isCurrentUser\n\t\t\t\t? t('core', 'You have not added any info yet')\n\t\t\t\t: t('core', '{user} has not added any info yet', { user: (this.displayname || this.userId) })\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Set the user's displayname or userId in the page title and preserve the default title of \"Nextcloud\" at the end\n\t\tdocument.title = `${this.displayname || this.userId} - ${document.title}`\n\t\tsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('user_status:status.updated', this.handleStatusUpdate)\n\t},\n\n\tmethods: {\n\t\thandleStatusUpdate(status) {\n\t\t\tif (this.isCurrentUser && status.userId === this.userId) {\n\t\t\t\tthis.status = status\n\t\t\t}\n\t\t},\n\n\t\topenStatusModal() {\n\t\t\tconst statusMenuItem = document.querySelector('.user-status-menu-item__toggle')\n\t\t\t// Changing the user status is only enabled if you are the current user\n\t\t\tif (this.isCurrentUser) {\n\t\t\t\tif (statusMenuItem) {\n\t\t\t\t\tstatusMenuItem.click()\n\t\t\t\t} else {\n\t\t\t\t\tshowError(t('core', 'Error opening the user status modal, try hard refreshing the page'))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// Override header styles\n#header {\n\tbackground-color: transparent !important;\n\tbackground-image: none !important;\n}\n\n#content {\n\tpadding-top: 0px;\n}\n</style>\n\n<style lang=\"scss\" scoped>\n$profile-max-width: 1024px;\n$content-max-width: 640px;\n\n.profile {\n\twidth: 100%;\n\toverflow-y: auto;\n\n\t&__header {\n\t\tposition: sticky;\n\t\theight: 190px;\n\t\ttop: -40px;\n\t\tbackground-color: var(--color-main-background-blur);\n\t\tbackdrop-filter: var(--filter-background-blur);\n\t\t-webkit-backdrop-filter: var(--filter-background-blur);\n\n\t\t&__container {\n\t\t\talign-self: flex-end;\n\t\t\twidth: 100%;\n\t\t\tmax-width: $profile-max-width;\n\t\t\tmargin: 0 auto;\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: max-content max-content;\n\t\t\tgrid-template-columns: 240px 1fr;\n\t\t\tjustify-content: center;\n\n\t\t\t&__placeholder {\n\t\t\t\tgrid-row: 1 / 3;\n\t\t\t}\n\n\t\t\t&__displayname, &__status-text {\n\t\t\t\tcolor: var(--color-main-text);\n\t\t\t}\n\n\t\t\t&__displayname {\n\t\t\t\twidth: $content-max-width;\n\t\t\t\theight: 45px;\n\t\t\t\tmargin-top: 128px;\n\t\t\t\t// Override the global style declaration\n\t\t\t\tmargin-bottom: 0;\n\t\t\t\tfont-size: 30px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tcursor: text;\n\n\t\t\t\t&:not(:last-child) {\n\t\t\t\t\tmargin-top: 100px;\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__edit-button {\n\t\t\t\tborder: none;\n\t\t\t\tmargin-left: 18px;\n\t\t\t\tmargin-top: 2px;\n\t\t\t\tcolor: var(--color-primary-element-text);\n\t\t\t\tbackground-color: var(--color-primary-element);\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-element);\n\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\tpadding: 0 18px;\n\t\t\t\tfont-size: var(--default-font-size);\n\t\t\t\theight: 44px;\n\t\t\t\tline-height: 44px;\n\t\t\t\tfont-weight: bold;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tcolor: var(--color-primary-element-light-text);\n\t\t\t\t\tbackground-color: var(--color-primary-element-light);\n\t\t\t\t}\n\n\t\t\t\t.pencil-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t\tmargin-top: 2px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&__status-text {\n\t\t\t\twidth: max-content;\n\t\t\t\tmax-width: $content-max-width;\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -12px;\n\t\t\t\tmargin-top: 2px;\n\n\t\t\t\t&.interactive {\n\t\t\t\t\tcursor: pointer;\n\n\t\t\t\t\t&:hover,\n\t\t\t\t\t&:focus,\n\t\t\t\t\t&:active {\n\t\t\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\t\t\tcolor: var(--color-main-text);\n\t\t\t\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__sidebar {\n\t\tposition: sticky;\n\t\ttop: var(--header-height);\n\t\talign-self: flex-start;\n\t\tpadding-top: 20px;\n\t\tmin-width: 220px;\n\t\tmargin: -150px 20px 0 0;\n\n\t\t// Specificity hack is needed to override Avatar component styles\n\t\t&::v-deep .avatar.avatardiv, h2 {\n\t\t\ttext-align: center;\n\t\t\tmargin: auto;\n\t\t\tdisplay: block;\n\t\t\tpadding: 8px;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\n\t\t\tbackground-color: var(--color-main-background) !important;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&::v-deep .avatar.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tright: 14px;\n\t\t\t\tbottom: 14px;\n\t\t\t\twidth: 34px;\n\t\t\t\theight: 34px;\n\t\t\t\tbackground-size: 28px;\n\t\t\t\tborder: none;\n\t\t\t\t// Styles when custom status icon and status text are set\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t\tline-height: 34px;\n\t\t\t\tfont-size: 20px;\n\t\t\t}\n\t\t}\n\n\t\t&::v-deep .avatar.interactive.avatardiv {\n\t\t\t.avatardiv__user-status {\n\t\t\t\tcursor: pointer;\n\n\t\t\t\t&:hover,\n\t\t\t\t&:focus,\n\t\t\t\t&:active {\n\t\t\t\t\tbox-shadow: 0 3px 6px var(--color-box-shadow);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__wrapper {\n\t\tbackground-color: var(--color-main-background);\n\t\tmin-height: 100%;\n\t}\n\n\t&__content {\n\t\tmax-width: $profile-max-width;\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t}\n\n\t&__blocks {\n\t\tmargin: 18px 0 80px 0;\n\t\tdisplay: grid;\n\t\tgap: 16px 0;\n\t\twidth: $content-max-width;\n\n\t\tp, h3 {\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t&-details {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tgap: 2px 0;\n\n\t\t\t.detail {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t\t\tp .map-icon {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\tvertical-align: middle;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&-headline {\n\t\t\tmargin-top: 10px;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 20px;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&-biography {\n\t\t\twhite-space: pre-line;\n\t\t}\n\n\t\th3, p {\n\t\t\tcursor: text;\n\t\t}\n\n\t\t&-empty-info {\n\t\t\tmargin-top: 80px;\n\t\t\tmargin-right: 100px;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\ttext-align: center;\n\n\t\t\th3 {\n\t\t\t\tfont-weight: bold;\n\t\t\t\tfont-size: 18px;\n\t\t\t\tmargin: 8px 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\n@media only screen and (max-width: 1024px) {\n\t.profile {\n\t\t&__header {\n\t\t\theight: 250px;\n\t\t\tposition: unset;\n\n\t\t\t&__container {\n\t\t\t\tgrid-template-columns: unset;\n\n\t\t\t\t&__displayname {\n\t\t\t\t\tmargin: 80px 20px 0px!important;\n\t\t\t\t\theight: 1em;\n\t\t\t\t\twidth: unset;\n\t\t\t\t\tdisplay: unset;\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\n\t\t\t\t&__edit-button {\n\t\t\t\t\twidth: fit-content;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tmargin: 60px auto;\n\t\t\t\t}\n\n\t\t\t\t&__status-text {\n\t\t\t\t\tmargin: 4px auto;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&__blocks {\n\t\t\twidth: unset;\n\t\t\tmax-width: 600px;\n\t\t\tmargin: 0 auto;\n\t\t\tpadding: 20px 50px 50px 50px;\n\n\t\t\t&-empty-info {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__sidebar {\n\t\t\tmargin: unset;\n\t\t\tposition: unset;\n\t\t}\n\t}\n}\n\n.user-actions {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n\tmargin-top: 20px;\n\n\t&__primary {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__other {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0 4px;\n\t\ta {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n.icon-invert {\n\t&::v-deep .action-link__icon {\n\t\tfilter: invert(1);\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=aa059862&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=0&id=aa059862&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=aa059862&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Profile.vue?vue&type=style&index=1&id=aa059862&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Profile.vue?vue&type=template&id=aa059862&scoped=true&\"\nimport script from \"./Profile.vue?vue&type=script&lang=js&\"\nexport * from \"./Profile.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Profile.vue?vue&type=style&index=0&id=aa059862&prod&lang=scss&\"\nimport style1 from \"./Profile.vue?vue&type=style&index=1&id=aa059862&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"aa059862\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"profile\"},[_c('div',{staticClass:\"profile__header\"},[_c('div',{staticClass:\"profile__header__container\"},[_c('div',{staticClass:\"profile__header__container__placeholder\"}),_vm._v(\" \"),_c('h2',{staticClass:\"profile__header__container__displayname\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.displayname || _vm.userId)+\"\\n\\t\\t\\t\\t\"),(_vm.isCurrentUser)?_c('a',{staticClass:\"primary profile__header__container__edit-button\",attrs:{\"href\":_vm.settingsUrl}},[_c('PencilIcon',{staticClass:\"pencil-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Edit Profile'))+\"\\n\\t\\t\\t\\t\")],1):_vm._e()]),_vm._v(\" \"),(_vm.status.icon || _vm.status.message)?_c('div',{staticClass:\"profile__header__container__status-text\",class:{ interactive: _vm.isCurrentUser },on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.status.icon)+\" \"+_vm._s(_vm.status.message)+\"\\n\\t\\t\\t\")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"profile__wrapper\"},[_c('div',{staticClass:\"profile__content\"},[_c('div',{staticClass:\"profile__sidebar\"},[_c('NcAvatar',{staticClass:\"avatar\",class:{ interactive: _vm.isCurrentUser },attrs:{\"user\":_vm.userId,\"size\":180,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true,\"is-no-user\":!_vm.isUserAvatarVisible},nativeOn:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openStatusModal.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"user-actions\"},[(_vm.primaryAction)?_c('PrimaryActionButton',{staticClass:\"user-actions__primary\",attrs:{\"href\":_vm.primaryAction.target,\"icon\":_vm.primaryAction.icon,\"target\":_vm.primaryAction.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.primaryAction.title)+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"user-actions__other\"},[_vm._l((_vm.middleActions),function(action){return _c('NcActions',{key:action.id,staticStyle:{\"background-position\":\"14px center\",\"background-size\":\"16px\",\"background-repeat\":\"no-repeat\"},style:({\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${action.icon})`,\n\t\t\t\t\t\t\t\t...(_vm.colorMainBackground === '#181818' && { filter: 'invert(1)' })\n\t\t\t\t\t\t\t}),attrs:{\"default-icon\":action.icon}},[_c('NcActionLink',{attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])],1)}),_vm._v(\" \"),(_vm.otherActions)?[_c('NcActions',{attrs:{\"force-menu\":true}},_vm._l((_vm.otherActions),function(action){return _c('NcActionLink',{key:action.id,class:{ 'icon-invert': _vm.colorMainBackground === '#181818' },attrs:{\"close-after-click\":true,\"icon\":action.icon,\"href\":action.target,\"target\":action.id === 'phone' ? '_self' :'_blank'}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(action.title)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\")])}),1)]:_vm._e()],2)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"profile__blocks\"},[(_vm.organisation || _vm.role || _vm.address)?_c('div',{staticClass:\"profile__blocks-details\"},[(_vm.organisation || _vm.role)?_c('div',{staticClass:\"detail\"},[_c('p',[_vm._v(_vm._s(_vm.organisation)+\" \"),(_vm.organisation && _vm.role)?_c('span',[_vm._v(\"•\")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.role))])]):_vm._e(),_vm._v(\" \"),(_vm.address)?_c('div',{staticClass:\"detail\"},[_c('p',[_c('MapMarkerIcon',{staticClass:\"map-icon\",attrs:{\"size\":16}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.address)+\"\\n\\t\\t\\t\\t\\t\\t\")],1)]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.headline || _vm.biography || _vm.sections.length > 0)?[(_vm.headline)?_c('div',{staticClass:\"profile__blocks-headline\"},[_c('h3',[_vm._v(_vm._s(_vm.headline))])]):_vm._e(),_vm._v(\" \"),(_vm.biography)?_c('div',{staticClass:\"profile__blocks-biography\"},[_c('p',[_vm._v(_vm._s(_vm.biography))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"profile__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.userId),{tag:\"component\",attrs:{\"userId\":_vm.userId}})],1)})]:[_c('div',{staticClass:\"profile__blocks-empty-info\"},[_c('AccountIcon',{attrs:{\"size\":60,\"fill-color\":\"var(--color-text-maxcontrast)\"}}),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.emptyProfileMessage))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.t('core', 'The headline and about sections will show up here')))])],1)]],2)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from 'v-tooltip'\n\nimport logger from './logger.js'\n\nimport Profile from './views/Profile.vue'\nimport ProfileSections from './profile/ProfileSections.js'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nif (!window.OCA) {\n\twindow.OCA = {}\n}\n\nif (!window.OCA.Core) {\n\twindow.OCA.Core = {}\n}\nObject.assign(window.OCA.Core, { ProfileSections: new ProfileSections() })\n\nVue.use(VTooltip)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(Profile)\n\nwindow.addEventListener('DOMContentLoaded', () => {\n\tnew View().$mount('#vue-profile')\n})\n","\n/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ProfileSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the profile page\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile__primary-action-button[data-v-5b5fe9f6]{font-size:var(--default-font-size);font-weight:bold;width:188px;height:44px;padding:0 16px;line-height:44px;text-align:center;border-radius:var(--border-radius-pill);color:var(--color-primary-element-text);background-color:var(--color-primary-element);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.profile__primary-action-button .icon[data-v-5b5fe9f6]{display:inline-block;vertical-align:middle;margin-bottom:2px;margin-right:4px}.profile__primary-action-button .icon.icon-invert[data-v-5b5fe9f6]{filter:invert(1)}.profile__primary-action-button[data-v-5b5fe9f6]:hover,.profile__primary-action-button[data-v-5b5fe9f6]:focus,.profile__primary-action-button[data-v-5b5fe9f6]:active{background-color:var(--color-primary-element-light)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/Profile/PrimaryActionButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDACC,kCAAA,CACA,gBAAA,CACA,WAAA,CACA,WAAA,CACA,cAAA,CACA,gBAAA,CACA,iBAAA,CACA,uCAAA,CACA,uCAAA,CACA,6CAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CAEA,uDACC,oBAAA,CACA,qBAAA,CACA,iBAAA,CACA,gBAAA,CAEA,mEACC,gBAAA,CAIF,sKAGC,mDAAA\",\"sourcesContent\":[\"\\n.profile__primary-action-button {\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\twidth: 188px;\\n\\theight: 44px;\\n\\tpadding: 0 16px;\\n\\tline-height: 44px;\\n\\ttext-align: center;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-primary-element-text);\\n\\tbackground-color: var(--color-primary-element);\\n\\toverflow: hidden;\\n\\twhite-space: nowrap;\\n\\ttext-overflow: ellipsis;\\n\\n\\t.icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-bottom: 2px;\\n\\t\\tmargin-right: 4px;\\n\\n\\t\\t&.icon-invert {\\n\\t\\t\\tfilter: invert(1);\\n\\t\\t}\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#header{background-color:rgba(0,0,0,0) !important;background-image:none !important}#content{padding-top:0px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAEA,QACC,yCAAA,CACA,gCAAA,CAGD,SACC,eAAA\",\"sourcesContent\":[\"\\n// Override header styles\\n#header {\\n\\tbackground-color: transparent !important;\\n\\tbackground-image: none !important;\\n}\\n\\n#content {\\n\\tpadding-top: 0px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".profile[data-v-aa059862]{width:100%;overflow-y:auto}.profile__header[data-v-aa059862]{position:sticky;height:190px;top:-40px;background-color:var(--color-main-background-blur);backdrop-filter:var(--filter-background-blur);-webkit-backdrop-filter:var(--filter-background-blur)}.profile__header__container[data-v-aa059862]{align-self:flex-end;width:100%;max-width:1024px;margin:0 auto;display:grid;grid-template-rows:max-content max-content;grid-template-columns:240px 1fr;justify-content:center}.profile__header__container__placeholder[data-v-aa059862]{grid-row:1/3}.profile__header__container__displayname[data-v-aa059862],.profile__header__container__status-text[data-v-aa059862]{color:var(--color-main-text)}.profile__header__container__displayname[data-v-aa059862]{width:640px;height:45px;margin-top:128px;margin-bottom:0;font-size:30px;display:flex;align-items:center;cursor:text}.profile__header__container__displayname[data-v-aa059862]:not(:last-child){margin-top:100px;margin-bottom:4px}.profile__header__container__edit-button[data-v-aa059862]{border:none;margin-left:18px;margin-top:2px;color:var(--color-primary-element-text);background-color:var(--color-primary-element);box-shadow:0 0 0 2px var(--color-primary-element);border-radius:var(--border-radius-pill);padding:0 18px;font-size:var(--default-font-size);height:44px;line-height:44px;font-weight:bold}.profile__header__container__edit-button[data-v-aa059862]:hover,.profile__header__container__edit-button[data-v-aa059862]:focus,.profile__header__container__edit-button[data-v-aa059862]:active{color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-light)}.profile__header__container__edit-button .pencil-icon[data-v-aa059862]{display:inline-block;vertical-align:middle;margin-top:2px}.profile__header__container__status-text[data-v-aa059862]{width:max-content;max-width:640px;padding:5px 10px;margin-left:-12px;margin-top:2px}.profile__header__container__status-text.interactive[data-v-aa059862]{cursor:pointer}.profile__header__container__status-text.interactive[data-v-aa059862]:hover,.profile__header__container__status-text.interactive[data-v-aa059862]:focus,.profile__header__container__status-text.interactive[data-v-aa059862]:active{background-color:var(--color-main-background);color:var(--color-main-text);border-radius:var(--border-radius-pill);font-weight:bold;box-shadow:0 3px 6px var(--color-box-shadow)}.profile__sidebar[data-v-aa059862]{position:sticky;top:var(--header-height);align-self:flex-start;padding-top:20px;min-width:220px;margin:-150px 20px 0 0}.profile__sidebar[data-v-aa059862] .avatar.avatardiv,.profile__sidebar h2[data-v-aa059862]{text-align:center;margin:auto;display:block;padding:8px}.profile__sidebar[data-v-aa059862] .avatar.avatardiv:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:none}.profile__sidebar[data-v-aa059862] .avatar.avatardiv .avatardiv__user-status{right:14px;bottom:14px;width:34px;height:34px;background-size:28px;border:none;background-color:var(--color-main-background);line-height:34px;font-size:20px}.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status{cursor:pointer}.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status:hover,.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status:focus,.profile__sidebar[data-v-aa059862] .avatar.interactive.avatardiv .avatardiv__user-status:active{box-shadow:0 3px 6px var(--color-box-shadow)}.profile__wrapper[data-v-aa059862]{background-color:var(--color-main-background);min-height:100%}.profile__content[data-v-aa059862]{max-width:1024px;margin:0 auto;display:flex;width:100%}.profile__blocks[data-v-aa059862]{margin:18px 0 80px 0;display:grid;gap:16px 0;width:640px}.profile__blocks p[data-v-aa059862],.profile__blocks h3[data-v-aa059862]{overflow-wrap:anywhere}.profile__blocks-details[data-v-aa059862]{display:flex;flex-direction:column;gap:2px 0}.profile__blocks-details .detail[data-v-aa059862]{display:inline-block;color:var(--color-text-maxcontrast)}.profile__blocks-details .detail p .map-icon[data-v-aa059862]{display:inline-block;vertical-align:middle}.profile__blocks-headline[data-v-aa059862]{margin-top:10px}.profile__blocks-headline h3[data-v-aa059862]{font-weight:bold;font-size:20px;margin:0}.profile__blocks-biography[data-v-aa059862]{white-space:pre-line}.profile__blocks h3[data-v-aa059862],.profile__blocks p[data-v-aa059862]{cursor:text}.profile__blocks-empty-info[data-v-aa059862]{margin-top:80px;margin-right:100px;display:flex;flex-direction:column;text-align:center}.profile__blocks-empty-info h3[data-v-aa059862]{font-weight:bold;font-size:18px;margin:8px 0}@media only screen and (max-width: 1024px){.profile__header[data-v-aa059862]{height:250px;position:unset}.profile__header__container[data-v-aa059862]{grid-template-columns:unset}.profile__header__container__displayname[data-v-aa059862]{margin:80px 20px 0px !important;height:1em;width:unset;display:unset;text-align:center}.profile__header__container__edit-button[data-v-aa059862]{width:fit-content;display:block;margin:60px auto}.profile__header__container__status-text[data-v-aa059862]{margin:4px auto}.profile__content[data-v-aa059862]{display:block}.profile__blocks[data-v-aa059862]{width:unset;max-width:600px;margin:0 auto;padding:20px 50px 50px 50px}.profile__blocks-empty-info[data-v-aa059862]{margin:0}.profile__sidebar[data-v-aa059862]{margin:unset;position:unset}}.user-actions[data-v-aa059862]{display:flex;flex-direction:column;gap:8px 0;margin-top:20px}.user-actions__primary[data-v-aa059862]{margin:0 auto}.user-actions__other[data-v-aa059862]{display:flex;justify-content:center;gap:0 4px}.user-actions__other a[data-v-aa059862]{filter:var(--background-invert-if-dark)}.icon-invert[data-v-aa059862] .action-link__icon{filter:invert(1)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Profile.vue\"],\"names\":[],\"mappings\":\"AAIA,0BACC,UAAA,CACA,eAAA,CAEA,kCACC,eAAA,CACA,YAAA,CACA,SAAA,CACA,kDAAA,CACA,6CAAA,CACA,qDAAA,CAEA,6CACC,mBAAA,CACA,UAAA,CACA,gBAlBiB,CAmBjB,aAAA,CACA,YAAA,CACA,0CAAA,CACA,+BAAA,CACA,sBAAA,CAEA,0DACC,YAAA,CAGD,oHACC,4BAAA,CAGD,0DACC,WAjCgB,CAkChB,WAAA,CACA,gBAAA,CAEA,eAAA,CACA,cAAA,CACA,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,2EACC,gBAAA,CACA,iBAAA,CAIF,0DACC,WAAA,CACA,gBAAA,CACA,cAAA,CACA,uCAAA,CACA,6CAAA,CACA,iDAAA,CACA,uCAAA,CACA,cAAA,CACA,kCAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CAEA,iMAGC,6CAAA,CACA,mDAAA,CAGD,uEACC,oBAAA,CACA,qBAAA,CACA,cAAA,CAIF,0DACC,iBAAA,CACA,eA/EgB,CAgFhB,gBAAA,CACA,iBAAA,CACA,cAAA,CAEA,sEACC,cAAA,CAEA,qOAGC,6CAAA,CACA,4BAAA,CACA,uCAAA,CACA,gBAAA,CACA,4CAAA,CAOL,mCACC,eAAA,CACA,wBAAA,CACA,qBAAA,CACA,gBAAA,CACA,eAAA,CACA,sBAAA,CAGA,2FACC,iBAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CAGD,8EACC,wDAAA,CACA,eAAA,CAIA,6EACC,UAAA,CACA,WAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CACA,WAAA,CAEA,6CAAA,CACA,gBAAA,CACA,cAAA,CAKD,yFACC,cAAA,CAEA,8RAGC,4CAAA,CAMJ,mCACC,6CAAA,CACA,eAAA,CAGD,mCACC,gBA7JkB,CA8JlB,aAAA,CACA,YAAA,CACA,UAAA,CAGD,kCACC,oBAAA,CACA,YAAA,CACA,UAAA,CACA,WAtKkB,CAwKlB,yEACC,sBAAA,CAGD,0CACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,kDACC,oBAAA,CACA,mCAAA,CAEA,8DACC,oBAAA,CACA,qBAAA,CAKH,2CACC,eAAA,CAEA,8CACC,gBAAA,CACA,cAAA,CACA,QAAA,CAIF,4CACC,oBAAA,CAGD,yEACC,WAAA,CAGD,6CACC,eAAA,CACA,kBAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,gBAAA,CACA,cAAA,CACA,YAAA,CAMJ,2CAEE,kCACC,YAAA,CACA,cAAA,CAEA,6CACC,2BAAA,CAEA,0DACC,+BAAA,CACA,UAAA,CACA,WAAA,CACA,aAAA,CACA,iBAAA,CAGD,0DACC,iBAAA,CACA,aAAA,CACA,gBAAA,CAGD,0DACC,eAAA,CAKH,mCACC,aAAA,CAGD,kCACC,WAAA,CACA,eAAA,CACA,aAAA,CACA,2BAAA,CAEA,6CACC,QAAA,CAIF,mCACC,YAAA,CACA,cAAA,CAAA,CAKH,+BACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,eAAA,CAEA,wCACC,aAAA,CAGD,sCACC,YAAA,CACA,sBAAA,CACA,SAAA,CACA,wCACC,uCAAA,CAMF,iDACC,gBAAA\",\"sourcesContent\":[\"\\n$profile-max-width: 1024px;\\n$content-max-width: 640px;\\n\\n.profile {\\n\\twidth: 100%;\\n\\toverflow-y: auto;\\n\\n\\t&__header {\\n\\t\\tposition: sticky;\\n\\t\\theight: 190px;\\n\\t\\ttop: -40px;\\n\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\n\\t\\t&__container {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: $profile-max-width;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tdisplay: grid;\\n\\t\\t\\tgrid-template-rows: max-content max-content;\\n\\t\\t\\tgrid-template-columns: 240px 1fr;\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t&__placeholder {\\n\\t\\t\\t\\tgrid-row: 1 / 3;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname, &__status-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__displayname {\\n\\t\\t\\t\\twidth: $content-max-width;\\n\\t\\t\\t\\theight: 45px;\\n\\t\\t\\t\\tmargin-top: 128px;\\n\\t\\t\\t\\t// Override the global style declaration\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t\\tfont-size: 30px;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tcursor: text;\\n\\n\\t\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\t\\tmargin-top: 100px;\\n\\t\\t\\t\\t\\tmargin-bottom: 4px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\tmargin-left: 18px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-element);\\n\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\tpadding: 0 18px;\\n\\t\\t\\t\\tfont-size: var(--default-font-size);\\n\\t\\t\\t\\theight: 44px;\\n\\t\\t\\t\\tline-height: 44px;\\n\\t\\t\\t\\tfont-weight: bold;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tcolor: var(--color-primary-element-light-text);\\n\\t\\t\\t\\t\\tbackground-color: var(--color-primary-element-light);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t\\tmargin-top: 2px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__status-text {\\n\\t\\t\\t\\twidth: max-content;\\n\\t\\t\\t\\tmax-width: $content-max-width;\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -12px;\\n\\t\\t\\t\\tmargin-top: 2px;\\n\\n\\t\\t\\t\\t&.interactive {\\n\\t\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__sidebar {\\n\\t\\tposition: sticky;\\n\\t\\ttop: var(--header-height);\\n\\t\\talign-self: flex-start;\\n\\t\\tpadding-top: 20px;\\n\\t\\tmin-width: 220px;\\n\\t\\tmargin: -150px 20px 0 0;\\n\\n\\t\\t// Specificity hack is needed to override Avatar component styles\\n\\t\\t&::v-deep .avatar.avatardiv, h2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tmargin: auto;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 8px;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv:not(.avatardiv--unknown) {\\n\\t\\t\\tbackground-color: var(--color-main-background) !important;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tright: 14px;\\n\\t\\t\\t\\tbottom: 14px;\\n\\t\\t\\t\\twidth: 34px;\\n\\t\\t\\t\\theight: 34px;\\n\\t\\t\\t\\tbackground-size: 28px;\\n\\t\\t\\t\\tborder: none;\\n\\t\\t\\t\\t// Styles when custom status icon and status text are set\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t\\tline-height: 34px;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&::v-deep .avatar.interactive.avatardiv {\\n\\t\\t\\t.avatardiv__user-status {\\n\\t\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus,\\n\\t\\t\\t\\t&:active {\\n\\t\\t\\t\\t\\tbox-shadow: 0 3px 6px var(--color-box-shadow);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tmin-height: 100%;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tmax-width: $profile-max-width;\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__blocks {\\n\\t\\tmargin: 18px 0 80px 0;\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: $content-max-width;\\n\\n\\t\\tp, h3 {\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t&-details {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tgap: 2px 0;\\n\\n\\t\\t\\t.detail {\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t\\t\\tp .map-icon {\\n\\t\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-headline {\\n\\t\\t\\tmargin-top: 10px;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 20px;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-biography {\\n\\t\\t\\twhite-space: pre-line;\\n\\t\\t}\\n\\n\\t\\th3, p {\\n\\t\\t\\tcursor: text;\\n\\t\\t}\\n\\n\\t\\t&-empty-info {\\n\\t\\t\\tmargin-top: 80px;\\n\\t\\t\\tmargin-right: 100px;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\th3 {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t\\tfont-size: 18px;\\n\\t\\t\\t\\tmargin: 8px 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n@media only screen and (max-width: 1024px) {\\n\\t.profile {\\n\\t\\t&__header {\\n\\t\\t\\theight: 250px;\\n\\t\\t\\tposition: unset;\\n\\n\\t\\t\\t&__container {\\n\\t\\t\\t\\tgrid-template-columns: unset;\\n\\n\\t\\t\\t\\t&__displayname {\\n\\t\\t\\t\\t\\tmargin: 80px 20px 0px!important;\\n\\t\\t\\t\\t\\theight: 1em;\\n\\t\\t\\t\\t\\twidth: unset;\\n\\t\\t\\t\\t\\tdisplay: unset;\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__edit-button {\\n\\t\\t\\t\\t\\twidth: fit-content;\\n\\t\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\t\\tmargin: 60px auto;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&__status-text {\\n\\t\\t\\t\\t\\tmargin: 4px auto;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__content {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\n\\t\\t&__blocks {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tmargin: 0 auto;\\n\\t\\t\\tpadding: 20px 50px 50px 50px;\\n\\n\\t\\t\\t&-empty-info {\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__sidebar {\\n\\t\\t\\tmargin: unset;\\n\\t\\t\\tposition: unset;\\n\\t\\t}\\n\\t}\\n}\\n\\n.user-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n\\tmargin-top: 20px;\\n\\n\\t&__primary {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__other {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tgap: 0 4px;\\n\\t\\ta {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\t}\\n}\\n\\n.icon-invert {\\n\\t&::v-deep .action-link__icon {\\n\\t\\tfilter: invert(1);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9651;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9651: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(9002)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","name","props","disabled","type","Boolean","default","href","String","required","icon","target","validator","value","includes","computed","colorPrimaryText","getComputedStyle","document","body","getPropertyValue","trim","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","_g","staticClass","class","attrs","$listeners","_v","_t","status","loadState","userId","displayname","address","organisation","role","headline","biography","actions","isUserAvatarVisible","components","AccountIcon","NcActionLink","NcActions","NcAvatar","MapMarkerIcon","PencilIcon","PrimaryActionButton","data","sections","OCA","Core","ProfileSections","getSections","isCurrentUser","_getCurrentUser","allActions","primaryAction","length","middleActions","slice","otherActions","settingsUrl","generateUrl","colorMainBackground","emptyProfileMessage","t","mounted","title","concat","subscribe","handleStatusUpdate","beforeDestroy","unsubscribe","methods","openStatusModal","statusMenuItem","querySelector","click","showError","_s","_e","message","interactive","on","$event","preventDefault","stopPropagation","apply","arguments","nativeOn","id","_l","action","key","staticStyle","style","backgroundImage","filter","section","index","ref","refInFor","$refs","tag","__webpack_nonce__","btoa","getRequestToken","window","Object","assign","constructor","_sections","registerSection","push","Vue","VTooltip","logger","View","Profile","addEventListener","$mount","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/dashboard-main.js b/dist/dashboard-main.js index de40455483c..b55d6474841 100644 --- a/dist/dashboard-main.js +++ b/dist/dashboard-main.js @@ -1,3 +1,3 @@ /*! For license information please see dashboard-main.js.LICENSE.txt */ -(()=>{"use strict";var n,e={41701:(n,e,a)=>{var o=a(20144),s=a(79753),i=a(45994),r=a(79954),l=a(4820),d=a(10861),c=a.n(d),p=a(9980),A=a.n(p),u=a(70110),h=a.n(u),b=a(73229);const g={data(){return{isMobile:this._isMobile()}},beforeMount(){window.addEventListener("resize",this._onResize)},beforeDestroy(){window.removeEventListener("resize",this._onResize)},methods:{_onResize(){this.isMobile=this._isMobile()},_isMobile:()=>document.documentElement.clientWidth<768}};var m=a(25108);const v=(0,r.j)("dashboard","panels"),C=(0,r.j)("dashboard","firstRun"),f={weather:{text:t("dashboard","Weather"),icon:"icon-weather-status"},status:{text:t("dashboard","Status"),icon:"icon-user-status-online"}},x={name:"DashboardApp",components:{NcButton:c(),Draggable:A(),NcModal:h(),Pencil:b.default},mixins:[g],data(){var t,n;return{isAdmin:(0,i.ts)().isAdmin,timer:new Date,registeredStatus:[],callbacks:{},callbacksStatus:{},allCallbacksStatus:{},statusInfo:f,enabledStatuses:(0,r.j)("dashboard","statuses"),panels:v,firstRun:C,displayName:null===(t=(0,i.ts)())||void 0===t?void 0:t.displayName,uid:null===(n=(0,i.ts)())||void 0===n?void 0:n.uid,layout:(0,r.j)("dashboard","layout").filter((t=>v[t])),modal:!1,appStoreUrl:(0,s.generateUrl)("/settings/apps/dashboard"),statuses:{}}},computed:{greeting(){const n=this.timer.getHours();let e;e=n>=22||n<5?"night":n>=18?"evening":n>=12?"afternoon":"morning";const a={morning:{generic:t("dashboard","Good morning"),withName:t("dashboard","Good morning, {name}",{name:this.displayName},void 0,{escape:!1})},afternoon:{generic:t("dashboard","Good afternoon"),withName:t("dashboard","Good afternoon, {name}",{name:this.displayName},void 0,{escape:!1})},evening:{generic:t("dashboard","Good evening"),withName:t("dashboard","Good evening, {name}",{name:this.displayName},void 0,{escape:!1})},night:{generic:t("dashboard","Hello"),withName:t("dashboard","Hello, {name}",{name:this.displayName},void 0,{escape:!1})}};return{text:this.displayName&&this.uid!==this.displayName?a[e].withName:a[e].generic}},isActive(){return t=>this.layout.indexOf(t.id)>-1},isStatusActive(){return t=>!(t in this.enabledStatuses)||this.enabledStatuses[t]},sortedAllStatuses(){return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)},sortedPanels(){return Object.values(this.panels).sort(((t,n)=>{const e=this.layout.indexOf(t.id),a=this.layout.indexOf(n.id);return-1===e||-1===a?a-e||t.id-n.id:e-a||t.id-n.id}))},sortedRegisteredStatus(){return this.registeredStatus.slice().sort(this.sortStatuses)}},watch:{callbacks(){this.rerenderPanels()},callbacksStatus(){for(const t in this.callbacksStatus){const n=this.$refs["status-"+t];this.statuses[t]&&this.statuses[t].mounted||(n?(this.callbacksStatus[t](n[0]),o.default.set(this.statuses,t,{mounted:!0})):m.error("Failed to register panel in the frontend as no backend data was provided for "+t))}}},mounted(){this.updateSkipLink(),window.addEventListener("scroll",this.handleScroll),setInterval((()=>{this.timer=new Date}),3e4),this.firstRun&&window.addEventListener("scroll",this.disableFirstrunHint)},destroyed(){window.removeEventListener("scroll",this.handleScroll)},methods:{register(t,n){o.default.set(this.callbacks,t,n)},registerStatus(t,n){o.default.set(this.allCallbacksStatus,t,n),this.isStatusActive(t)&&(this.registeredStatus.push(t),this.$nextTick((()=>{o.default.set(this.callbacksStatus,t,n)})))},rerenderPanels(){for(const t in this.callbacks){const n=this.$refs[t];-1!==this.layout.indexOf(t)&&(this.panels[t]&&this.panels[t].mounted||(n?(this.callbacks[t](n[0],{widget:this.panels[t]}),o.default.set(this.panels[t],"mounted",!0)):m.error("Failed to register panel in the frontend as no backend data was provided for "+t)))}},saveLayout(){l.default.post((0,s.generateUrl)("/apps/dashboard/layout"),{layout:this.layout.join(",")})},saveStatuses(){l.default.post((0,s.generateUrl)("/apps/dashboard/statuses"),{statuses:JSON.stringify(this.enabledStatuses)})},showModal(){this.modal=!0,this.firstRun=!1},closeModal(){this.modal=!1},updateCheckbox(t,n){const e=this.layout.indexOf(t.id);!n&&e>-1?this.layout.splice(e,1):this.layout.push(t.id),o.default.set(this.panels[t.id],"mounted",!1),this.saveLayout(),this.$nextTick((()=>this.rerenderPanels()))},disableFirstrunHint(){window.removeEventListener("scroll",this.disableFirstrunHint),setTimeout((()=>{this.firstRun=!1}),1e3)},updateSkipLink(){document.getElementsByClassName("skip-navigation")[0].setAttribute("href","#app-dashboard")},updateStatusCheckbox(t,n){n?this.enableStatus(t):this.disableStatus(t)},enableStatus(t){this.enabledStatuses[t]=!0,this.registerStatus(t,this.allCallbacksStatus[t]),this.saveStatuses()},disableStatus(t){this.enabledStatuses[t]=!1;const n=this.registeredStatus.findIndex((n=>n===t));-1!==n&&(this.registeredStatus.splice(n,1),o.default.set(this.statuses,t,{mounted:!1}),this.$nextTick((()=>{o.default.delete(this.callbacksStatus,t)}))),this.saveStatuses()},sortStatuses(t,n){const e=t.toLowerCase(),a=n.toLowerCase();return e>a?1:e<a?-1:0},handleScroll(){window.scrollY>70?document.body.classList.add("dashboard--scrolled"):document.body.classList.remove("dashboard--scrolled")}}};var k=a(93379),w=a.n(k),y=a(7795),_=a.n(y),S=a(90569),B=a.n(S),D=a(3565),O=a.n(D),N=a(19216),j=a.n(N),E=a(44589),F=a.n(E),T=a(71627),G={};G.styleTagTransform=F(),G.setAttributes=O(),G.insert=B().bind(null,"head"),G.domAPI=_(),G.insertStyleElement=j(),w()(T.Z,G),T.Z&&T.Z.locals&&T.Z.locals;var I=a(72144),z={};z.styleTagTransform=F(),z.setAttributes=O(),z.insert=B().bind(null,"head"),z.domAPI=_(),z.insertStyleElement=j(),w()(I.Z,z),I.Z&&I.Z.locals&&I.Z.locals;const M=(0,a(51900).Z)(x,(function(){var t=this,n=t._self._c;return n("div",{attrs:{id:"app-dashboard"}},[n("h2",[t._v(t._s(t.greeting.text))]),t._v(" "),n("ul",{staticClass:"statuses"},t._l(t.sortedRegisteredStatus,(function(t){return n("li",{key:t,attrs:{id:"status-"+t}},[n("div",{ref:"status-"+t,refInFor:!0})])})),0),t._v(" "),n("Draggable",t._b({staticClass:"panels",attrs:{handle:".panel--header"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.layout,(function(e){return n("div",{key:t.panels[e].id,staticClass:"panel"},[n("div",{staticClass:"panel--header"},[n("h2",[n("div",{class:t.panels[e].iconClass,attrs:{"aria-labelledby":"panel--header--icon--description","aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t"+t._s(t.panels[e].title)+"\n\t\t\t\t")]),t._v(" "),n("span",{staticClass:"hidden-visually",attrs:{id:"panel--header--icon--description"}},[t._v(" "+t._s(t.t("dashboard",'"{title} icon"',{title:t.panels[e].title}))+" ")])]),t._v(" "),n("div",{staticClass:"panel--content",class:{loading:!t.panels[e].mounted}},[n("div",{ref:t.panels[e].id,refInFor:!0,attrs:{"data-id":t.panels[e].id}})])])})),0),t._v(" "),n("div",{staticClass:"footer"},[n("NcButton",{on:{click:t.showModal},scopedSlots:t._u([{key:"icon",fn:function(){return[n("Pencil",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("dashboard","Customize"))+"\n\t\t")])],1),t._v(" "),t.modal?n("NcModal",{attrs:{size:"large"},on:{close:t.closeModal}},[n("div",{staticClass:"modal__content"},[n("h3",[t._v(t._s(t.t("dashboard","Edit widgets")))]),t._v(" "),n("ol",{staticClass:"panels"},t._l(t.sortedAllStatuses,(function(e){return n("li",{key:e,class:"panel-"+e},[n("input",{staticClass:"checkbox",attrs:{id:"status-checkbox-"+e,type:"checkbox"},domProps:{checked:t.isStatusActive(e)},on:{input:function(n){return t.updateStatusCheckbox(e,n.target.checked)}}}),t._v(" "),n("label",{attrs:{for:"status-checkbox-"+e}},[n("div",{class:t.statusInfo[e].icon,attrs:{"aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(t.statusInfo[e].text)+"\n\t\t\t\t\t")])])})),0),t._v(" "),n("Draggable",t._b({staticClass:"panels",attrs:{tag:"ol",handle:".draggable"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.sortedPanels,(function(e){return n("li",{key:e.id,class:"panel-"+e.id},[n("input",{staticClass:"checkbox",attrs:{id:"panel-checkbox-"+e.id,type:"checkbox"},domProps:{checked:t.isActive(e)},on:{input:function(n){return t.updateCheckbox(e,n.target.checked)}}}),t._v(" "),n("label",{class:{draggable:t.isActive(e)},attrs:{for:"panel-checkbox-"+e.id}},[n("div",{class:e.iconClass,attrs:{"aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(e.title)+"\n\t\t\t\t\t")])])})),0),t._v(" "),t.isAdmin?n("a",{staticClass:"button",attrs:{href:t.appStoreUrl}},[t._v(t._s(t.t("dashboard","Get more widgets from the App Store")))]):t._e(),t._v(" "),n("h3",[t._v(t._s(t.t("dashboard","Weather service")))]),t._v(" "),n("p",[t._v("\n\t\t\t\t"+t._s(t.t("dashboard","For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."))+"\n\t\t\t")]),t._v(" "),n("p",{staticClass:"credits--end"},[n("a",{attrs:{href:"https://api.met.no/doc/TermsOfService",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","Weather data from Met.no")))]),t._v(",\n\t\t\t\t"),n("a",{attrs:{href:"https://wiki.osmfoundation.org/wiki/Privacy_Policy",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","geocoding with Nominatim")))]),t._v(",\n\t\t\t\t"),n("a",{attrs:{href:"https://www.opentopodata.org/#public-api",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","elevation data from OpenTopoData")))]),t._v(".\n\t\t\t")])],1)]):t._e()],1)}),[],!1,null,"4b63a425",null).exports;var L=a(31352),P=a(15168),U=a.n(P);a.nc=btoa((0,i.IH)()),o.default.directive("Tooltip",U()),o.default.prototype.t=L.Iu,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files);const W=new(o.default.extend(M))({}).$mount("#app-content-vue");window.OCA.Dashboard={register:(t,n)=>W.register(t,n),registerStatus:(t,n)=>W.registerStatus(t,n)}},71627:(t,n,e)=>{e.d(n,{Z:()=>r});var a=e(87537),o=e.n(a),s=e(23645),i=e.n(s)()(o());i.push([t.id,"#app-dashboard[data-v-4b63a425]{width:100%;min-height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#app-dashboard>h2[data-v-4b63a425]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:1rem 0}.panels[data-v-4b63a425]{width:auto;margin:auto;max-width:1800px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-4b63a425],.panels>div[data-v-4b63a425]{width:320px;max-width:100%;margin:16px;align-self:stretch;background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-4b63a425],#body-user.theme--highcontrast .panels>div[data-v-4b63a425]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-4b63a425],.panels>div.sortable-ghost[data-v-4b63a425]{opacity:.1}.panel>.panel--header[data-v-4b63a425],.panels>div>.panel--header[data-v-4b63a425]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-4b63a425],.panel>.panel--header[data-v-4b63a425] *,.panels>div>.panel--header[data-v-4b63a425],.panels>div>.panel--header[data-v-4b63a425] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-4b63a425]:active,.panels>div>.panel--header[data-v-4b63a425]:active{cursor:grabbing}.panel>.panel--header a[data-v-4b63a425],.panels>div>.panel--header a[data-v-4b63a425]{flex-grow:1}.panel>.panel--header>h2[data-v-4b63a425],.panels>div>.panel--header>h2[data-v-4b63a425]{display:block;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 div[data-v-4b63a425],.panels>div>.panel--header>h2 div[data-v-4b63a425]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;float:left}.panel>.panel--content[data-v-4b63a425],.panels>div>.panel--content[data-v-4b63a425]{margin:0 16px 16px 16px;height:424px;overflow:visible}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-4b63a425],.panels>div>.panel--content[data-v-4b63a425]{height:auto}}.footer[data-v-4b63a425]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;padding:1rem 0}.edit-panels[data-v-4b63a425]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-4b63a425],.button-vue[data-v-4b63a425],.edit-panels[data-v-4b63a425],.statuses[data-v-4b63a425] .action-item .action-item__menutoggle,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);opacity:1 !important}.button[data-v-4b63a425]:hover,.button[data-v-4b63a425]:focus,.button[data-v-4b63a425]:active,.button-vue[data-v-4b63a425]:hover,.button-vue[data-v-4b63a425]:focus,.button-vue[data-v-4b63a425]:active,.edit-panels[data-v-4b63a425]:hover,.edit-panels[data-v-4b63a425]:focus,.edit-panels[data-v-4b63a425]:active,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:hover,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:focus,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:active,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-4b63a425]:focus-visible,.button-vue[data-v-4b63a425]:focus-visible,.edit-panels[data-v-4b63a425]:focus-visible,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:focus-visible{box-shadow:0 0 0 2px var(--color-main-text) !important}.modal__content[data-v-4b63a425]{padding:32px 16px;text-align:center}.modal__content ol[data-v-4b63a425]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-4b63a425]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label div[data-v-4b63a425]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-4b63a425]:hover{border-color:var(--color-primary)}.modal__content li:not(.panel-status) label div[data-v-4b63a425]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-4b63a425]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-4b63a425]{border-color:var(--color-primary)}.modal__content h3[data-v-4b63a425]{font-weight:bold}.modal__content h3[data-v-4b63a425]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-4b63a425]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-4b63a425]{max-width:650px;margin:0 auto}.modal__content p a[data-v-4b63a425]:hover,.modal__content p a[data-v-4b63a425]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-4b63a425]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-4b63a425]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-4b63a425]{transition:transform var(--animation-slow)}.statuses[data-v-4b63a425]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>li[data-v-4b63a425]{margin:8px}","",{version:3,sources:["webpack://./apps/dashboard/src/DashboardApp.vue"],names:[],mappings:"AACA,gCACC,UAAA,CACA,eAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CAEA,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,cAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,kBAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,0KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,iGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,UAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,gBAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,wOAKC,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,oBAAA,CAEA,uxBAGC,yDAAA,CAED,8SACC,sDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,8CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAKF,iEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,8BACC,UAAA",sourcesContent:["\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n"],sourceRoot:""}]);const r=i},72144:(t,n,e)=>{e.d(n,{Z:()=>r});var a=e(87537),o=e.n(a),s=e(23645),i=e.n(s)()(o());i.push([t.id,"\nhtml, body {\n\tbackground-attachment: fixed;\n}\n#body-user #header {\n\tposition: fixed;\n}\n#content {\n\toverflow: auto;\n}\n","",{version:3,sources:["webpack://./apps/dashboard/src/DashboardApp.vue"],names:[],mappings:";AA2nBA;CACA,4BAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,cAAA;AACA",sourcesContent:["<template>\n\t<div id=\"app-dashboard\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<li v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t<div aria-labelledby=\"panel--header--icon--description\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t:class=\"panels[panelId].iconClass\"\n\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t\t<span id=\"panel--header--icon--description\" class=\"hidden-visually\"> {{ t('dashboard', '\"{title} icon\"', { title: panels[panelId].title }) }} </span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<NcButton @click=\"showModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dashboard', 'Customize') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcModal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\" :class=\"'panel-' + status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\">\n\t\t\t\t\t\t\t<div :class=\"statusInfo[status].icon\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\" :class=\"'panel-' + panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"{ draggable: isActive(panel) }\">\n\t\t\t\t\t\t\t<div :class=\"panel.iconClass\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Draggable from 'vuedraggable'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Vue from 'vue'\n\nimport isMobile from './mixins/isMobile.js'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\n\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'DashboardApp',\n\tcomponents: {\n\t\tNcButton,\n\t\tDraggable,\n\t\tNcModal,\n\t\tPencil,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t}\n\t},\n\tcomputed: {\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n<style>\nhtml, body {\n\tbackground-attachment: fixed;\n}\n\n#body-user #header {\n\tposition: fixed;\n}\n\n#content {\n\toverflow: auto;\n}\n</style>\n"],sourceRoot:""}]);const r=i}},a={};function o(t){var n=a[t];if(void 0!==n)return n.exports;var s=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=e,n=[],o.O=(t,e,a,s)=>{if(!e){var i=1/0;for(c=0;c<n.length;c++){e=n[c][0],a=n[c][1],s=n[c][2];for(var r=!0,l=0;l<e.length;l++)(!1&s||i>=s)&&Object.keys(o.O).every((t=>o.O[t](e[l])))?e.splice(l--,1):(r=!1,s<i&&(i=s));if(r){n.splice(c--,1);var d=a();void 0!==d&&(t=d)}}return t}s=s||0;for(var c=n.length;c>0&&n[c-1][2]>s;c--)n[c]=n[c-1];n[c]=[e,a,s]},o.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return o.d(n,{a:n}),n},o.d=(t,n)=>{for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),o.j=4773,(()=>{o.b=document.baseURI||self.location.href;var t={4773:0};o.O.j=n=>0===t[n];var n=(n,e)=>{var a,s,i=e[0],r=e[1],l=e[2],d=0;if(i.some((n=>0!==t[n]))){for(a in r)o.o(r,a)&&(o.m[a]=r[a]);if(l)var c=l(o)}for(n&&n(e);d<i.length;d++)s=i[d],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return o.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))})(),o.nc=void 0;var s=o.O(void 0,[7874],(()=>o(41701)));s=o.O(s)})(); -//# sourceMappingURL=dashboard-main.js.map?v=e61bba8ae03598e46848
\ No newline at end of file +(()=>{"use strict";var n,e={22638:(n,e,a)=>{var o=a(20144),s=a(79753),i=a(45994),r=a(79954),l=a(4820),d=a(10861),c=a.n(d),p=a(9980),u=a.n(p),A=a(70110),h=a.n(A),b=a(73229);const g={data(){return{isMobile:this._isMobile()}},beforeMount(){window.addEventListener("resize",this._onResize)},beforeDestroy(){window.removeEventListener("resize",this._onResize)},methods:{_onResize(){this.isMobile=this._isMobile()},_isMobile:()=>document.documentElement.clientWidth<768}};var f=a(25108);const m=(0,r.j)("dashboard","panels"),v=(0,r.j)("dashboard","firstRun"),C={weather:{text:t("dashboard","Weather"),icon:"icon-weather-status"},status:{text:t("dashboard","Status"),icon:"icon-user-status-online"}},x={name:"DashboardApp",components:{NcButton:c(),Draggable:u(),NcModal:h(),Pencil:b.default},mixins:[g],data(){var t,n;return{isAdmin:(0,i.ts)().isAdmin,timer:new Date,registeredStatus:[],callbacks:{},callbacksStatus:{},allCallbacksStatus:{},statusInfo:C,enabledStatuses:(0,r.j)("dashboard","statuses"),panels:m,firstRun:v,displayName:null===(t=(0,i.ts)())||void 0===t?void 0:t.displayName,uid:null===(n=(0,i.ts)())||void 0===n?void 0:n.uid,layout:(0,r.j)("dashboard","layout").filter((t=>m[t])),modal:!1,appStoreUrl:(0,s.generateUrl)("/settings/apps/dashboard"),statuses:{}}},computed:{greeting(){const n=this.timer.getHours();let e;e=n>=22||n<5?"night":n>=18?"evening":n>=12?"afternoon":"morning";const a={morning:{generic:t("dashboard","Good morning"),withName:t("dashboard","Good morning, {name}",{name:this.displayName},void 0,{escape:!1})},afternoon:{generic:t("dashboard","Good afternoon"),withName:t("dashboard","Good afternoon, {name}",{name:this.displayName},void 0,{escape:!1})},evening:{generic:t("dashboard","Good evening"),withName:t("dashboard","Good evening, {name}",{name:this.displayName},void 0,{escape:!1})},night:{generic:t("dashboard","Hello"),withName:t("dashboard","Hello, {name}",{name:this.displayName},void 0,{escape:!1})}};return{text:this.displayName&&this.uid!==this.displayName?a[e].withName:a[e].generic}},isActive(){return t=>this.layout.indexOf(t.id)>-1},isStatusActive(){return t=>!(t in this.enabledStatuses)||this.enabledStatuses[t]},sortedAllStatuses(){return Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)},sortedPanels(){return Object.values(this.panels).sort(((t,n)=>{const e=this.layout.indexOf(t.id),a=this.layout.indexOf(n.id);return-1===e||-1===a?a-e||t.id-n.id:e-a||t.id-n.id}))},sortedRegisteredStatus(){return this.registeredStatus.slice().sort(this.sortStatuses)}},watch:{callbacks(){this.rerenderPanels()},callbacksStatus(){for(const t in this.callbacksStatus){const n=this.$refs["status-"+t];this.statuses[t]&&this.statuses[t].mounted||(n?(this.callbacksStatus[t](n[0]),o.default.set(this.statuses,t,{mounted:!0})):f.error("Failed to register panel in the frontend as no backend data was provided for "+t))}}},mounted(){this.updateSkipLink(),window.addEventListener("scroll",this.handleScroll),setInterval((()=>{this.timer=new Date}),3e4),this.firstRun&&window.addEventListener("scroll",this.disableFirstrunHint)},destroyed(){window.removeEventListener("scroll",this.handleScroll)},methods:{register(t,n){o.default.set(this.callbacks,t,n)},registerStatus(t,n){o.default.set(this.allCallbacksStatus,t,n),this.isStatusActive(t)&&(this.registeredStatus.push(t),this.$nextTick((()=>{o.default.set(this.callbacksStatus,t,n)})))},rerenderPanels(){for(const t in this.callbacks){const n=this.$refs[t];-1!==this.layout.indexOf(t)&&(this.panels[t]&&this.panels[t].mounted||(n?(this.callbacks[t](n[0],{widget:this.panels[t]}),o.default.set(this.panels[t],"mounted",!0)):f.error("Failed to register panel in the frontend as no backend data was provided for "+t)))}},saveLayout(){l.default.post((0,s.generateUrl)("/apps/dashboard/layout"),{layout:this.layout.join(",")})},saveStatuses(){l.default.post((0,s.generateUrl)("/apps/dashboard/statuses"),{statuses:JSON.stringify(this.enabledStatuses)})},showModal(){this.modal=!0,this.firstRun=!1},closeModal(){this.modal=!1},updateCheckbox(t,n){const e=this.layout.indexOf(t.id);!n&&e>-1?this.layout.splice(e,1):this.layout.push(t.id),o.default.set(this.panels[t.id],"mounted",!1),this.saveLayout(),this.$nextTick((()=>this.rerenderPanels()))},disableFirstrunHint(){window.removeEventListener("scroll",this.disableFirstrunHint),setTimeout((()=>{this.firstRun=!1}),1e3)},updateSkipLink(){document.getElementsByClassName("skip-navigation")[0].setAttribute("href","#app-dashboard")},updateStatusCheckbox(t,n){n?this.enableStatus(t):this.disableStatus(t)},enableStatus(t){this.enabledStatuses[t]=!0,this.registerStatus(t,this.allCallbacksStatus[t]),this.saveStatuses()},disableStatus(t){this.enabledStatuses[t]=!1;const n=this.registeredStatus.findIndex((n=>n===t));-1!==n&&(this.registeredStatus.splice(n,1),o.default.set(this.statuses,t,{mounted:!1}),this.$nextTick((()=>{o.default.delete(this.callbacksStatus,t)}))),this.saveStatuses()},sortStatuses(t,n){const e=t.toLowerCase(),a=n.toLowerCase();return e>a?1:e<a?-1:0},handleScroll(){window.scrollY>70?document.body.classList.add("dashboard--scrolled"):document.body.classList.remove("dashboard--scrolled")}}};var k=a(93379),w=a.n(k),y=a(7795),_=a.n(y),S=a(90569),B=a.n(S),D=a(3565),O=a.n(D),N=a(19216),j=a.n(N),E=a(44589),F=a.n(E),T=a(23907),G={};G.styleTagTransform=F(),G.setAttributes=O(),G.insert=B().bind(null,"head"),G.domAPI=_(),G.insertStyleElement=j(),w()(T.Z,G),T.Z&&T.Z.locals&&T.Z.locals;var I=a(59583),z={};z.styleTagTransform=F(),z.setAttributes=O(),z.insert=B().bind(null,"head"),z.domAPI=_(),z.insertStyleElement=j(),w()(I.Z,z),I.Z&&I.Z.locals&&I.Z.locals;const M=(0,a(51900).Z)(x,(function(){var t=this,n=t._self._c;return n("div",{attrs:{id:"app-dashboard"}},[n("h2",[t._v(t._s(t.greeting.text))]),t._v(" "),n("ul",{staticClass:"statuses"},t._l(t.sortedRegisteredStatus,(function(t){return n("li",{key:t,attrs:{id:"status-"+t}},[n("div",{ref:"status-"+t,refInFor:!0})])})),0),t._v(" "),n("Draggable",t._b({staticClass:"panels",attrs:{handle:".panel--header"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.layout,(function(e){return n("div",{key:t.panels[e].id,staticClass:"panel"},[n("div",{staticClass:"panel--header"},[n("h2",[n("div",{class:t.panels[e].iconClass,attrs:{"aria-labelledby":"panel--header--icon--description","aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t"+t._s(t.panels[e].title)+"\n\t\t\t\t")]),t._v(" "),n("span",{staticClass:"hidden-visually",attrs:{id:"panel--header--icon--description"}},[t._v(" "+t._s(t.t("dashboard",'"{title} icon"',{title:t.panels[e].title}))+" ")])]),t._v(" "),n("div",{staticClass:"panel--content",class:{loading:!t.panels[e].mounted}},[n("div",{ref:t.panels[e].id,refInFor:!0,attrs:{"data-id":t.panels[e].id}})])])})),0),t._v(" "),n("div",{staticClass:"footer"},[n("NcButton",{on:{click:t.showModal},scopedSlots:t._u([{key:"icon",fn:function(){return[n("Pencil",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("dashboard","Customize"))+"\n\t\t")])],1),t._v(" "),t.modal?n("NcModal",{attrs:{size:"large"},on:{close:t.closeModal}},[n("div",{staticClass:"modal__content"},[n("h3",[t._v(t._s(t.t("dashboard","Edit widgets")))]),t._v(" "),n("ol",{staticClass:"panels"},t._l(t.sortedAllStatuses,(function(e){return n("li",{key:e,class:"panel-"+e},[n("input",{staticClass:"checkbox",attrs:{id:"status-checkbox-"+e,type:"checkbox"},domProps:{checked:t.isStatusActive(e)},on:{input:function(n){return t.updateStatusCheckbox(e,n.target.checked)}}}),t._v(" "),n("label",{attrs:{for:"status-checkbox-"+e}},[n("div",{class:t.statusInfo[e].icon,attrs:{"aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(t.statusInfo[e].text)+"\n\t\t\t\t\t")])])})),0),t._v(" "),n("Draggable",t._b({staticClass:"panels",attrs:{tag:"ol",handle:".draggable"},on:{end:t.saveLayout},model:{value:t.layout,callback:function(n){t.layout=n},expression:"layout"}},"Draggable",{swapThreshold:.3,delay:500,delayOnTouchOnly:!0,touchStartThreshold:3},!1),t._l(t.sortedPanels,(function(e){return n("li",{key:e.id,class:"panel-"+e.id},[n("input",{staticClass:"checkbox",attrs:{id:"panel-checkbox-"+e.id,type:"checkbox"},domProps:{checked:t.isActive(e)},on:{input:function(n){return t.updateCheckbox(e,n.target.checked)}}}),t._v(" "),n("label",{class:{draggable:t.isActive(e)},attrs:{for:"panel-checkbox-"+e.id}},[n("div",{class:e.iconClass,attrs:{"aria-hidden":"true",role:"img"}}),t._v("\n\t\t\t\t\t\t"+t._s(e.title)+"\n\t\t\t\t\t")])])})),0),t._v(" "),t.isAdmin?n("a",{staticClass:"button",attrs:{href:t.appStoreUrl}},[t._v(t._s(t.t("dashboard","Get more widgets from the App Store")))]):t._e(),t._v(" "),n("h3",[t._v(t._s(t.t("dashboard","Weather service")))]),t._v(" "),n("p",[t._v("\n\t\t\t\t"+t._s(t.t("dashboard","For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information."))+"\n\t\t\t")]),t._v(" "),n("p",{staticClass:"credits--end"},[n("a",{attrs:{href:"https://api.met.no/doc/TermsOfService",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","Weather data from Met.no")))]),t._v(",\n\t\t\t\t"),n("a",{attrs:{href:"https://wiki.osmfoundation.org/wiki/Privacy_Policy",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","geocoding with Nominatim")))]),t._v(",\n\t\t\t\t"),n("a",{attrs:{href:"https://www.opentopodata.org/#public-api",target:"_blank",rel:"noopener"}},[t._v(t._s(t.t("dashboard","elevation data from OpenTopoData")))]),t._v(".\n\t\t\t")])],1)]):t._e()],1)}),[],!1,null,"afb25498",null).exports;var L=a(31352),P=a(15168),U=a.n(P);a.nc=btoa((0,i.IH)()),o.default.directive("Tooltip",U()),o.default.prototype.t=L.Iu,window.OCA.Files||(window.OCA.Files={}),Object.assign(window.OCA.Files,{App:{fileList:{filesClient:OC.Files.getClient()}}},window.OCA.Files);const W=new(o.default.extend(M))({}).$mount("#app-content-vue");window.OCA.Dashboard={register:(t,n)=>W.register(t,n),registerStatus:(t,n)=>W.registerStatus(t,n)}},23907:(t,n,e)=>{e.d(n,{Z:()=>r});var a=e(87537),o=e.n(a),s=e(23645),i=e.n(s)()(o());i.push([t.id,"#app-dashboard[data-v-afb25498]{width:100%;min-height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#app-dashboard>h2[data-v-afb25498]{color:var(--color-primary-element-text);text-align:center;font-size:32px;line-height:130%;padding:1rem 0}.panels[data-v-afb25498]{width:auto;margin:auto;max-width:1800px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-afb25498],.panels>div[data-v-afb25498]{width:320px;max-width:100%;margin:16px;align-self:stretch;background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-afb25498],#body-user.theme--highcontrast .panels>div[data-v-afb25498]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-afb25498],.panels>div.sortable-ghost[data-v-afb25498]{opacity:.1}.panel>.panel--header[data-v-afb25498],.panels>div>.panel--header[data-v-afb25498]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-afb25498],.panel>.panel--header[data-v-afb25498] *,.panels>div>.panel--header[data-v-afb25498],.panels>div>.panel--header[data-v-afb25498] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-afb25498]:active,.panels>div>.panel--header[data-v-afb25498]:active{cursor:grabbing}.panel>.panel--header a[data-v-afb25498],.panels>div>.panel--header a[data-v-afb25498]{flex-grow:1}.panel>.panel--header>h2[data-v-afb25498],.panels>div>.panel--header>h2[data-v-afb25498]{display:block;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 div[data-v-afb25498],.panels>div>.panel--header>h2 div[data-v-afb25498]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;float:left}.panel>.panel--content[data-v-afb25498],.panels>div>.panel--content[data-v-afb25498]{margin:0 16px 16px 16px;height:424px;overflow:visible}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-afb25498],.panels>div>.panel--content[data-v-afb25498]{height:auto}}.footer[data-v-afb25498]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;padding:1rem 0}.edit-panels[data-v-afb25498]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-afb25498],.button-vue[data-v-afb25498],.edit-panels[data-v-afb25498],.statuses[data-v-afb25498] .action-item .action-item__menutoggle,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);opacity:1 !important}.button[data-v-afb25498]:hover,.button[data-v-afb25498]:focus,.button[data-v-afb25498]:active,.button-vue[data-v-afb25498]:hover,.button-vue[data-v-afb25498]:focus,.button-vue[data-v-afb25498]:active,.edit-panels[data-v-afb25498]:hover,.edit-panels[data-v-afb25498]:focus,.edit-panels[data-v-afb25498]:active,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:hover,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:focus,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:active,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-afb25498]:focus-visible,.button-vue[data-v-afb25498]:focus-visible,.edit-panels[data-v-afb25498]:focus-visible,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:focus-visible{box-shadow:0 0 0 2px var(--color-main-text) !important}.modal__content[data-v-afb25498]{padding:32px 16px;text-align:center}.modal__content ol[data-v-afb25498]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-afb25498]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label div[data-v-afb25498]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-afb25498]:hover{border-color:var(--color-primary-element)}.modal__content li:not(.panel-status) label div[data-v-afb25498]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-afb25498]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-afb25498]{border-color:var(--color-primary-element)}.modal__content h3[data-v-afb25498]{font-weight:bold}.modal__content h3[data-v-afb25498]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-afb25498]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-afb25498]{max-width:650px;margin:0 auto}.modal__content p a[data-v-afb25498]:hover,.modal__content p a[data-v-afb25498]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-afb25498]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-afb25498]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-afb25498]{transition:transform var(--animation-slow)}.statuses[data-v-afb25498]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>li[data-v-afb25498]{margin:8px}","",{version:3,sources:["webpack://./apps/dashboard/src/DashboardApp.vue"],names:[],mappings:"AACA,gCACC,UAAA,CACA,eAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CAEA,mCACC,uCAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,cAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,kBAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,0KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,iGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,UAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,gBAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,wOAKC,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,oBAAA,CAEA,uxBAGC,yDAAA,CAED,8SACC,sDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,8CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,yCAAA,CAKF,iEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,yCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,8BACC,UAAA",sourcesContent:["\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\tcolor: var(--color-primary-element-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n"],sourceRoot:""}]);const r=i},59583:(t,n,e)=>{e.d(n,{Z:()=>r});var a=e(87537),o=e.n(a),s=e(23645),i=e.n(s)()(o());i.push([t.id,"\nhtml, body {\n\tbackground-attachment: fixed;\n}\n#body-user #header {\n\tposition: fixed;\n}\n#content {\n\toverflow: auto;\n}\n","",{version:3,sources:["webpack://./apps/dashboard/src/DashboardApp.vue"],names:[],mappings:";AA2nBA;CACA,4BAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,cAAA;AACA",sourcesContent:["<template>\n\t<div id=\"app-dashboard\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<li v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t<div aria-labelledby=\"panel--header--icon--description\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t:class=\"panels[panelId].iconClass\"\n\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t\t<span id=\"panel--header--icon--description\" class=\"hidden-visually\"> {{ t('dashboard', '\"{title} icon\"', { title: panels[panelId].title }) }} </span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<NcButton @click=\"showModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dashboard', 'Customize') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcModal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\" :class=\"'panel-' + status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\">\n\t\t\t\t\t\t\t<div :class=\"statusInfo[status].icon\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\" :class=\"'panel-' + panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"{ draggable: isActive(panel) }\">\n\t\t\t\t\t\t\t<div :class=\"panel.iconClass\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Draggable from 'vuedraggable'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Vue from 'vue'\n\nimport isMobile from './mixins/isMobile.js'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\n\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'DashboardApp',\n\tcomponents: {\n\t\tNcButton,\n\t\tDraggable,\n\t\tNcModal,\n\t\tPencil,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t}\n\t},\n\tcomputed: {\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\tcolor: var(--color-primary-element-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n<style>\nhtml, body {\n\tbackground-attachment: fixed;\n}\n\n#body-user #header {\n\tposition: fixed;\n}\n\n#content {\n\toverflow: auto;\n}\n</style>\n"],sourceRoot:""}]);const r=i}},a={};function o(t){var n=a[t];if(void 0!==n)return n.exports;var s=a[t]={id:t,loaded:!1,exports:{}};return e[t].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=e,n=[],o.O=(t,e,a,s)=>{if(!e){var i=1/0;for(c=0;c<n.length;c++){e=n[c][0],a=n[c][1],s=n[c][2];for(var r=!0,l=0;l<e.length;l++)(!1&s||i>=s)&&Object.keys(o.O).every((t=>o.O[t](e[l])))?e.splice(l--,1):(r=!1,s<i&&(i=s));if(r){n.splice(c--,1);var d=a();void 0!==d&&(t=d)}}return t}s=s||0;for(var c=n.length;c>0&&n[c-1][2]>s;c--)n[c]=n[c-1];n[c]=[e,a,s]},o.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return o.d(n,{a:n}),n},o.d=(t,n)=>{for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),o.j=4773,(()=>{o.b=document.baseURI||self.location.href;var t={4773:0};o.O.j=n=>0===t[n];var n=(n,e)=>{var a,s,i=e[0],r=e[1],l=e[2],d=0;if(i.some((n=>0!==t[n]))){for(a in r)o.o(r,a)&&(o.m[a]=r[a]);if(l)var c=l(o)}for(n&&n(e);d<i.length;d++)s=i[d],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return o.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))})(),o.nc=void 0;var s=o.O(void 0,[7874],(()=>o(22638)));s=o.O(s)})(); +//# sourceMappingURL=dashboard-main.js.map?v=42007abba478c69038d1
\ No newline at end of file diff --git a/dist/dashboard-main.js.map b/dist/dashboard-main.js.map index 1099a97cac8..5ddb63e32b6 100644 --- a/dist/dashboard-main.js.map +++ b/dist/dashboard-main.js.map @@ -1 +1 @@ -{"version":3,"file":"dashboard-main.js?v=e61bba8ae03598e46848","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?6f0e","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?db53","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?5685","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?1477","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=style&index=0&id=4b63a425&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=style&index=1&id=4b63a425&prod&lang=css&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","<template>\n\t<div id=\"app-dashboard\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<li v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t<div aria-labelledby=\"panel--header--icon--description\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t:class=\"panels[panelId].iconClass\"\n\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t\t<span id=\"panel--header--icon--description\" class=\"hidden-visually\"> {{ t('dashboard', '\"{title} icon\"', { title: panels[panelId].title }) }} </span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<NcButton @click=\"showModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dashboard', 'Customize') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcModal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\" :class=\"'panel-' + status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\">\n\t\t\t\t\t\t\t<div :class=\"statusInfo[status].icon\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\" :class=\"'panel-' + panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"{ draggable: isActive(panel) }\">\n\t\t\t\t\t\t\t<div :class=\"panel.iconClass\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Draggable from 'vuedraggable'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Vue from 'vue'\n\nimport isMobile from './mixins/isMobile.js'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\n\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'DashboardApp',\n\tcomponents: {\n\t\tNcButton,\n\t\tDraggable,\n\t\tNcModal,\n\t\tPencil,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t}\n\t},\n\tcomputed: {\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\tcolor: var(--color-primary-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n<style>\nhtml, body {\n\tbackground-attachment: fixed;\n}\n\n#body-user #header {\n\tposition: fixed;\n}\n\n#content {\n\toverflow: auto;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=0&id=4b63a425&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=0&id=4b63a425&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=1&id=4b63a425&prod&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=1&id=4b63a425&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DashboardApp.vue?vue&type=template&id=4b63a425&scoped=true&\"\nimport script from \"./DashboardApp.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardApp.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardApp.vue?vue&type=style&index=0&id=4b63a425&prod&lang=scss&scoped=true&\"\nimport style1 from \"./DashboardApp.vue?vue&type=style&index=1&id=4b63a425&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b63a425\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-dashboard\"}},[_c('h2',[_vm._v(_vm._s(_vm.greeting.text))]),_vm._v(\" \"),_c('ul',{staticClass:\"statuses\"},_vm._l((_vm.sortedRegisteredStatus),function(status){return _c('li',{key:status,attrs:{\"id\":'status-' + status}},[_c('div',{ref:'status-' + status,refInFor:true})])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"handle\":\".panel--header\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.layout),function(panelId){return _c('div',{key:_vm.panels[panelId].id,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',[_c('div',{class:_vm.panels[panelId].iconClass,attrs:{\"aria-labelledby\":\"panel--header--icon--description\",\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.panels[panelId].title)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"panel--header--icon--description\"}},[_vm._v(\" \"+_vm._s(_vm.t('dashboard', '\"{title} icon\"', { title: _vm.panels[panelId].title }))+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\",class:{ loading: !_vm.panels[panelId].mounted }},[_c('div',{ref:_vm.panels[panelId].id,refInFor:true,attrs:{\"data-id\":_vm.panels[panelId].id}})])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('NcButton',{on:{\"click\":_vm.showModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'Customize'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.modal)?_c('NcModal',{attrs:{\"size\":\"large\"},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"modal__content\"},[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Edit widgets')))]),_vm._v(\" \"),_c('ol',{staticClass:\"panels\"},_vm._l((_vm.sortedAllStatuses),function(status){return _c('li',{key:status,class:'panel-' + status},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'status-checkbox-' + status,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isStatusActive(status)},on:{\"input\":function($event){return _vm.updateStatusCheckbox(status, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":'status-checkbox-' + status}},[_c('div',{class:_vm.statusInfo[status].icon,attrs:{\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.statusInfo[status].text)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"tag\":\"ol\",\"handle\":\".draggable\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.sortedPanels),function(panel){return _c('li',{key:panel.id,class:'panel-' + panel.id},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'panel-checkbox-' + panel.id,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isActive(panel)},on:{\"input\":function($event){return _vm.updateCheckbox(panel, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:{ draggable: _vm.isActive(panel) },attrs:{\"for\":'panel-checkbox-' + panel.id}},[_c('div',{class:panel.iconClass,attrs:{\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(panel.title)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),(_vm.isAdmin)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.appStoreUrl}},[_vm._v(_vm._s(_vm.t('dashboard', 'Get more widgets from the App Store')))]):_vm._e(),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Weather service')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"credits--end\"},[_c('a',{attrs:{\"href\":\"https://api.met.no/doc/TermsOfService\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'Weather data from Met.no')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'geocoding with Nominatim')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://www.opentopodata.org/#public-api\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'elevation data from OpenTopoData')))]),_vm._v(\".\\n\\t\\t\\t\")])],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport DashboardApp from './DashboardApp.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport { getRequestToken } from '@nextcloud/auth'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.directive('Tooltip', VTooltip)\n\nVue.prototype.t = t\n\n// FIXME workaround to make the sidebar work\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\n\nObject.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)\n\nconst Dashboard = Vue.extend(DashboardApp)\nconst Instance = new Dashboard({}).$mount('#app-content-vue')\n\nwindow.OCA.Dashboard = {\n\tregister: (app, callback) => Instance.register(app, callback),\n\tregisterStatus: (app, callback) => Instance.registerStatus(app, callback),\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-dashboard[data-v-4b63a425]{width:100%;min-height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#app-dashboard>h2[data-v-4b63a425]{color:var(--color-primary-text);text-align:center;font-size:32px;line-height:130%;padding:1rem 0}.panels[data-v-4b63a425]{width:auto;margin:auto;max-width:1800px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-4b63a425],.panels>div[data-v-4b63a425]{width:320px;max-width:100%;margin:16px;align-self:stretch;background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-4b63a425],#body-user.theme--highcontrast .panels>div[data-v-4b63a425]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-4b63a425],.panels>div.sortable-ghost[data-v-4b63a425]{opacity:.1}.panel>.panel--header[data-v-4b63a425],.panels>div>.panel--header[data-v-4b63a425]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-4b63a425],.panel>.panel--header[data-v-4b63a425] *,.panels>div>.panel--header[data-v-4b63a425],.panels>div>.panel--header[data-v-4b63a425] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-4b63a425]:active,.panels>div>.panel--header[data-v-4b63a425]:active{cursor:grabbing}.panel>.panel--header a[data-v-4b63a425],.panels>div>.panel--header a[data-v-4b63a425]{flex-grow:1}.panel>.panel--header>h2[data-v-4b63a425],.panels>div>.panel--header>h2[data-v-4b63a425]{display:block;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 div[data-v-4b63a425],.panels>div>.panel--header>h2 div[data-v-4b63a425]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;float:left}.panel>.panel--content[data-v-4b63a425],.panels>div>.panel--content[data-v-4b63a425]{margin:0 16px 16px 16px;height:424px;overflow:visible}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-4b63a425],.panels>div>.panel--content[data-v-4b63a425]{height:auto}}.footer[data-v-4b63a425]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;padding:1rem 0}.edit-panels[data-v-4b63a425]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-4b63a425],.button-vue[data-v-4b63a425],.edit-panels[data-v-4b63a425],.statuses[data-v-4b63a425] .action-item .action-item__menutoggle,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);opacity:1 !important}.button[data-v-4b63a425]:hover,.button[data-v-4b63a425]:focus,.button[data-v-4b63a425]:active,.button-vue[data-v-4b63a425]:hover,.button-vue[data-v-4b63a425]:focus,.button-vue[data-v-4b63a425]:active,.edit-panels[data-v-4b63a425]:hover,.edit-panels[data-v-4b63a425]:focus,.edit-panels[data-v-4b63a425]:active,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:hover,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:focus,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:active,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-4b63a425]:focus-visible,.button-vue[data-v-4b63a425]:focus-visible,.edit-panels[data-v-4b63a425]:focus-visible,.statuses[data-v-4b63a425] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-4b63a425] .action-item.action-item--open .action-item__menutoggle:focus-visible{box-shadow:0 0 0 2px var(--color-main-text) !important}.modal__content[data-v-4b63a425]{padding:32px 16px;text-align:center}.modal__content ol[data-v-4b63a425]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-4b63a425]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label div[data-v-4b63a425]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-4b63a425]:hover{border-color:var(--color-primary)}.modal__content li:not(.panel-status) label div[data-v-4b63a425]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-4b63a425]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-4b63a425]{border-color:var(--color-primary)}.modal__content h3[data-v-4b63a425]{font-weight:bold}.modal__content h3[data-v-4b63a425]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-4b63a425]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-4b63a425]{max-width:650px;margin:0 auto}.modal__content p a[data-v-4b63a425]:hover,.modal__content p a[data-v-4b63a425]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-4b63a425]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-4b63a425]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-4b63a425]{transition:transform var(--animation-slow)}.statuses[data-v-4b63a425]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>li[data-v-4b63a425]{margin:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/DashboardApp.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,UAAA,CACA,eAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CAEA,mCACC,+BAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,cAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,kBAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,0KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,iGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,UAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,gBAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,wOAKC,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,oBAAA,CAEA,uxBAGC,yDAAA,CAED,8SACC,sDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,8CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,iCAAA,CAKF,iEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,iCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,8BACC,UAAA\",\"sourcesContent\":[\"\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100%;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 1rem 0;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1800px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\talign-self: stretch;\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tpadding: 16px 8px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tmargin-right: 16px;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tfloat: left;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 424px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: visible;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tpadding: 1rem 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.button,\\n.button-vue,\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 16px;\\n\\t\\t\\t\\twidth: 24px;\\n\\t\\t\\t\\theight: 24px;\\n\\t\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Do not invert status icons\\n\\t\\t&:not(.panel-status) label div {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > li {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nhtml, body {\\n\\tbackground-attachment: fixed;\\n}\\n#body-user #header {\\n\\tposition: fixed;\\n}\\n#content {\\n\\toverflow: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/DashboardApp.vue\"],\"names\":[],\"mappings\":\";AA2nBA;CACA,4BAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,cAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div id=\\\"app-dashboard\\\">\\n\\t\\t<h2>{{ greeting.text }}</h2>\\n\\t\\t<ul class=\\\"statuses\\\">\\n\\t\\t\\t<li v-for=\\\"status in sortedRegisteredStatus\\\"\\n\\t\\t\\t\\t:id=\\\"'status-' + status\\\"\\n\\t\\t\\t\\t:key=\\\"status\\\">\\n\\t\\t\\t\\t<div :ref=\\\"'status-' + status\\\" />\\n\\t\\t\\t</li>\\n\\t\\t</ul>\\n\\n\\t\\t<Draggable v-model=\\\"layout\\\"\\n\\t\\t\\tclass=\\\"panels\\\"\\n\\t\\t\\tv-bind=\\\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\\\"\\n\\t\\t\\thandle=\\\".panel--header\\\"\\n\\t\\t\\t@end=\\\"saveLayout\\\">\\n\\t\\t\\t<div v-for=\\\"panelId in layout\\\" :key=\\\"panels[panelId].id\\\" class=\\\"panel\\\">\\n\\t\\t\\t\\t<div class=\\\"panel--header\\\">\\n\\t\\t\\t\\t\\t<h2>\\n\\t\\t\\t\\t\\t\\t<div aria-labelledby=\\\"panel--header--icon--description\\\"\\n\\t\\t\\t\\t\\t\\t\\taria-hidden=\\\"true\\\"\\n\\t\\t\\t\\t\\t\\t\\t:class=\\\"panels[panelId].iconClass\\\"\\n\\t\\t\\t\\t\\t\\t\\trole=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t{{ panels[panelId].title }}\\n\\t\\t\\t\\t\\t</h2>\\n\\t\\t\\t\\t\\t<span id=\\\"panel--header--icon--description\\\" class=\\\"hidden-visually\\\"> {{ t('dashboard', '\\\"{title} icon\\\"', { title: panels[panelId].title }) }} </span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div class=\\\"panel--content\\\" :class=\\\"{ loading: !panels[panelId].mounted }\\\">\\n\\t\\t\\t\\t\\t<div :ref=\\\"panels[panelId].id\\\" :data-id=\\\"panels[panelId].id\\\" />\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t</Draggable>\\n\\n\\t\\t<div class=\\\"footer\\\">\\n\\t\\t\\t<NcButton @click=\\\"showModal\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<Pencil :size=\\\"20\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t{{ t('dashboard', 'Customize') }}\\n\\t\\t\\t</NcButton>\\n\\t\\t</div>\\n\\n\\t\\t<NcModal v-if=\\\"modal\\\" size=\\\"large\\\" @close=\\\"closeModal\\\">\\n\\t\\t\\t<div class=\\\"modal__content\\\">\\n\\t\\t\\t\\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\\n\\t\\t\\t\\t<ol class=\\\"panels\\\">\\n\\t\\t\\t\\t\\t<li v-for=\\\"status in sortedAllStatuses\\\" :key=\\\"status\\\" :class=\\\"'panel-' + status\\\">\\n\\t\\t\\t\\t\\t\\t<input :id=\\\"'status-checkbox-' + status\\\"\\n\\t\\t\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\t:checked=\\\"isStatusActive(status)\\\"\\n\\t\\t\\t\\t\\t\\t\\t@input=\\\"updateStatusCheckbox(status, $event.target.checked)\\\">\\n\\t\\t\\t\\t\\t\\t<label :for=\\\"'status-checkbox-' + status\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div :class=\\\"statusInfo[status].icon\\\" aria-hidden=\\\"true\\\" role=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ statusInfo[status].text }}\\n\\t\\t\\t\\t\\t\\t</label>\\n\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t</ol>\\n\\t\\t\\t\\t<Draggable v-model=\\\"layout\\\"\\n\\t\\t\\t\\t\\tclass=\\\"panels\\\"\\n\\t\\t\\t\\t\\ttag=\\\"ol\\\"\\n\\t\\t\\t\\t\\tv-bind=\\\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\\\"\\n\\t\\t\\t\\t\\thandle=\\\".draggable\\\"\\n\\t\\t\\t\\t\\t@end=\\\"saveLayout\\\">\\n\\t\\t\\t\\t\\t<li v-for=\\\"panel in sortedPanels\\\" :key=\\\"panel.id\\\" :class=\\\"'panel-' + panel.id\\\">\\n\\t\\t\\t\\t\\t\\t<input :id=\\\"'panel-checkbox-' + panel.id\\\"\\n\\t\\t\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\t:checked=\\\"isActive(panel)\\\"\\n\\t\\t\\t\\t\\t\\t\\t@input=\\\"updateCheckbox(panel, $event.target.checked)\\\">\\n\\t\\t\\t\\t\\t\\t<label :for=\\\"'panel-checkbox-' + panel.id\\\" :class=\\\"{ draggable: isActive(panel) }\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div :class=\\\"panel.iconClass\\\" aria-hidden=\\\"true\\\" role=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ panel.title }}\\n\\t\\t\\t\\t\\t\\t</label>\\n\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t</Draggable>\\n\\n\\t\\t\\t\\t<a v-if=\\\"isAdmin\\\" :href=\\\"appStoreUrl\\\" class=\\\"button\\\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\\n\\n\\t\\t\\t\\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<p class=\\\"credits--end\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"https://api.met.no/doc/TermsOfService\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\\n\\t\\t\\t\\t\\t<a href=\\\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\\n\\t\\t\\t\\t\\t<a href=\\\"https://www.opentopodata.org/#public-api\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t</div>\\n\\t\\t</NcModal>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport { generateUrl } from '@nextcloud/router'\\nimport { getCurrentUser } from '@nextcloud/auth'\\nimport { loadState } from '@nextcloud/initial-state'\\nimport axios from '@nextcloud/axios'\\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\\nimport Draggable from 'vuedraggable'\\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\\nimport Vue from 'vue'\\n\\nimport isMobile from './mixins/isMobile.js'\\n\\nconst panels = loadState('dashboard', 'panels')\\nconst firstRun = loadState('dashboard', 'firstRun')\\n\\nconst statusInfo = {\\n\\tweather: {\\n\\t\\ttext: t('dashboard', 'Weather'),\\n\\t\\ticon: 'icon-weather-status',\\n\\t},\\n\\tstatus: {\\n\\t\\ttext: t('dashboard', 'Status'),\\n\\t\\ticon: 'icon-user-status-online',\\n\\t},\\n}\\n\\nexport default {\\n\\tname: 'DashboardApp',\\n\\tcomponents: {\\n\\t\\tNcButton,\\n\\t\\tDraggable,\\n\\t\\tNcModal,\\n\\t\\tPencil,\\n\\t},\\n\\tmixins: [\\n\\t\\tisMobile,\\n\\t],\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tisAdmin: getCurrentUser().isAdmin,\\n\\t\\t\\ttimer: new Date(),\\n\\t\\t\\tregisteredStatus: [],\\n\\t\\t\\tcallbacks: {},\\n\\t\\t\\tcallbacksStatus: {},\\n\\t\\t\\tallCallbacksStatus: {},\\n\\t\\t\\tstatusInfo,\\n\\t\\t\\tenabledStatuses: loadState('dashboard', 'statuses'),\\n\\t\\t\\tpanels,\\n\\t\\t\\tfirstRun,\\n\\t\\t\\tdisplayName: getCurrentUser()?.displayName,\\n\\t\\t\\tuid: getCurrentUser()?.uid,\\n\\t\\t\\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\\n\\t\\t\\tmodal: false,\\n\\t\\t\\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\\n\\t\\t\\tstatuses: {},\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tgreeting() {\\n\\t\\t\\tconst time = this.timer.getHours()\\n\\n\\t\\t\\t// Determine part of the day\\n\\t\\t\\tlet partOfDay\\n\\t\\t\\tif (time >= 22 || time < 5) {\\n\\t\\t\\t\\tpartOfDay = 'night'\\n\\t\\t\\t} else if (time >= 18) {\\n\\t\\t\\t\\tpartOfDay = 'evening'\\n\\t\\t\\t} else if (time >= 12) {\\n\\t\\t\\t\\tpartOfDay = 'afternoon'\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpartOfDay = 'morning'\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Define the greetings\\n\\t\\t\\tconst good = {\\n\\t\\t\\t\\tmorning: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good morning'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tafternoon: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good afternoon'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tevening: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good evening'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tnight: {\\n\\t\\t\\t\\t\\t// Don't use \\\"Good night\\\" as it's not a greeting\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Hello'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Figure out which greeting to show\\n\\t\\t\\tconst shouldShowName = this.displayName && this.uid !== this.displayName\\n\\t\\t\\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\\n\\t\\t},\\n\\n\\t\\tisActive() {\\n\\t\\t\\treturn (panel) => this.layout.indexOf(panel.id) > -1\\n\\t\\t},\\n\\t\\tisStatusActive() {\\n\\t\\t\\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\\n\\t\\t},\\n\\n\\t\\tsortedAllStatuses() {\\n\\t\\t\\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\\n\\t\\t},\\n\\t\\tsortedPanels() {\\n\\t\\t\\treturn Object.values(this.panels).sort((a, b) => {\\n\\t\\t\\t\\tconst indexA = this.layout.indexOf(a.id)\\n\\t\\t\\t\\tconst indexB = this.layout.indexOf(b.id)\\n\\t\\t\\t\\tif (indexA === -1 || indexB === -1) {\\n\\t\\t\\t\\t\\treturn indexB - indexA || a.id - b.id\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn indexA - indexB || a.id - b.id\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tsortedRegisteredStatus() {\\n\\t\\t\\treturn this.registeredStatus.slice().sort(this.sortStatuses)\\n\\t\\t},\\n\\t},\\n\\n\\twatch: {\\n\\t\\tcallbacks() {\\n\\t\\t\\tthis.rerenderPanels()\\n\\t\\t},\\n\\t\\tcallbacksStatus() {\\n\\t\\t\\tfor (const app in this.callbacksStatus) {\\n\\t\\t\\t\\tconst element = this.$refs['status-' + app]\\n\\t\\t\\t\\tif (this.statuses[app] && this.statuses[app].mounted) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (element) {\\n\\t\\t\\t\\t\\tthis.callbacksStatus[app](element[0])\\n\\t\\t\\t\\t\\tVue.set(this.statuses, app, { mounted: true })\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\n\\tmounted() {\\n\\t\\tthis.updateSkipLink()\\n\\t\\twindow.addEventListener('scroll', this.handleScroll)\\n\\n\\t\\tsetInterval(() => {\\n\\t\\t\\tthis.timer = new Date()\\n\\t\\t}, 30000)\\n\\n\\t\\tif (this.firstRun) {\\n\\t\\t\\twindow.addEventListener('scroll', this.disableFirstrunHint)\\n\\t\\t}\\n\\t},\\n\\tdestroyed() {\\n\\t\\twindow.removeEventListener('scroll', this.handleScroll)\\n\\t},\\n\\n\\tmethods: {\\n\\t\\t/**\\n\\t\\t * Method to register panels that will be called by the integrating apps\\n\\t\\t *\\n\\t\\t * @param {string} app The unique app id for the widget\\n\\t\\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\\n\\t\\t */\\n\\t\\tregister(app, callback) {\\n\\t\\t\\tVue.set(this.callbacks, app, callback)\\n\\t\\t},\\n\\t\\tregisterStatus(app, callback) {\\n\\t\\t\\t// always save callbacks in case user enables the status later\\n\\t\\t\\tVue.set(this.allCallbacksStatus, app, callback)\\n\\t\\t\\t// register only if status is enabled or missing from config\\n\\t\\t\\tif (this.isStatusActive(app)) {\\n\\t\\t\\t\\tthis.registeredStatus.push(app)\\n\\t\\t\\t\\tthis.$nextTick(() => {\\n\\t\\t\\t\\t\\tVue.set(this.callbacksStatus, app, callback)\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\trerenderPanels() {\\n\\t\\t\\tfor (const app in this.callbacks) {\\n\\t\\t\\t\\tconst element = this.$refs[app]\\n\\t\\t\\t\\tif (this.layout.indexOf(app) === -1) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (this.panels[app] && this.panels[app].mounted) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (element) {\\n\\t\\t\\t\\t\\tthis.callbacks[app](element[0], {\\n\\t\\t\\t\\t\\t\\twidget: this.panels[app],\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t\\tVue.set(this.panels[app], 'mounted', true)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tsaveLayout() {\\n\\t\\t\\taxios.post(generateUrl('/apps/dashboard/layout'), {\\n\\t\\t\\t\\tlayout: this.layout.join(','),\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tsaveStatuses() {\\n\\t\\t\\taxios.post(generateUrl('/apps/dashboard/statuses'), {\\n\\t\\t\\t\\tstatuses: JSON.stringify(this.enabledStatuses),\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tshowModal() {\\n\\t\\t\\tthis.modal = true\\n\\t\\t\\tthis.firstRun = false\\n\\t\\t},\\n\\t\\tcloseModal() {\\n\\t\\t\\tthis.modal = false\\n\\t\\t},\\n\\t\\tupdateCheckbox(panel, currentValue) {\\n\\t\\t\\tconst index = this.layout.indexOf(panel.id)\\n\\t\\t\\tif (!currentValue && index > -1) {\\n\\t\\t\\t\\tthis.layout.splice(index, 1)\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.layout.push(panel.id)\\n\\t\\t\\t}\\n\\t\\t\\tVue.set(this.panels[panel.id], 'mounted', false)\\n\\t\\t\\tthis.saveLayout()\\n\\t\\t\\tthis.$nextTick(() => this.rerenderPanels())\\n\\t\\t},\\n\\t\\tdisableFirstrunHint() {\\n\\t\\t\\twindow.removeEventListener('scroll', this.disableFirstrunHint)\\n\\t\\t\\tsetTimeout(() => {\\n\\t\\t\\t\\tthis.firstRun = false\\n\\t\\t\\t}, 1000)\\n\\t\\t},\\n\\t\\tupdateSkipLink() {\\n\\t\\t\\t// Make sure \\\"Skip to main content\\\" link points to the app content\\n\\t\\t\\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\\n\\t\\t},\\n\\t\\tupdateStatusCheckbox(app, checked) {\\n\\t\\t\\tif (checked) {\\n\\t\\t\\t\\tthis.enableStatus(app)\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.disableStatus(app)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tenableStatus(app) {\\n\\t\\t\\tthis.enabledStatuses[app] = true\\n\\t\\t\\tthis.registerStatus(app, this.allCallbacksStatus[app])\\n\\t\\t\\tthis.saveStatuses()\\n\\t\\t},\\n\\t\\tdisableStatus(app) {\\n\\t\\t\\tthis.enabledStatuses[app] = false\\n\\t\\t\\tconst i = this.registeredStatus.findIndex((s) => s === app)\\n\\t\\t\\tif (i !== -1) {\\n\\t\\t\\t\\tthis.registeredStatus.splice(i, 1)\\n\\t\\t\\t\\tVue.set(this.statuses, app, { mounted: false })\\n\\t\\t\\t\\tthis.$nextTick(() => {\\n\\t\\t\\t\\t\\tVue.delete(this.callbacksStatus, app)\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\tthis.saveStatuses()\\n\\t\\t},\\n\\t\\tsortStatuses(a, b) {\\n\\t\\t\\tconst al = a.toLowerCase()\\n\\t\\t\\tconst bl = b.toLowerCase()\\n\\t\\t\\treturn al > bl\\n\\t\\t\\t\\t? 1\\n\\t\\t\\t\\t: al < bl\\n\\t\\t\\t\\t\\t? -1\\n\\t\\t\\t\\t\\t: 0\\n\\t\\t},\\n\\t\\thandleScroll() {\\n\\t\\t\\tif (window.scrollY > 70) {\\n\\t\\t\\t\\tdocument.body.classList.add('dashboard--scrolled')\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdocument.body.classList.remove('dashboard--scrolled')\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style lang=\\\"scss\\\" scoped>\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100%;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 1rem 0;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1800px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\talign-self: stretch;\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tpadding: 16px 8px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tmargin-right: 16px;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tfloat: left;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 424px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: visible;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tpadding: 1rem 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.button,\\n.button-vue,\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 16px;\\n\\t\\t\\t\\twidth: 24px;\\n\\t\\t\\t\\theight: 24px;\\n\\t\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Do not invert status icons\\n\\t\\t&:not(.panel-status) label div {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > li {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n</style>\\n<style>\\nhtml, body {\\n\\tbackground-attachment: fixed;\\n}\\n\\n#body-user #header {\\n\\tposition: fixed;\\n}\\n\\n#content {\\n\\toverflow: auto;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4773;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4773: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(41701)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","isMobile","this","_isMobile","beforeMount","window","addEventListener","_onResize","beforeDestroy","removeEventListener","methods","document","documentElement","clientWidth","panels","loadState","firstRun","statusInfo","weather","text","t","icon","status","name","components","NcButton","Draggable","NcModal","Pencil","mixins","_getCurrentUser","_getCurrentUser2","isAdmin","getCurrentUser","timer","Date","registeredStatus","callbacks","callbacksStatus","allCallbacksStatus","enabledStatuses","displayName","uid","layout","filter","panelId","modal","appStoreUrl","generateUrl","statuses","computed","greeting","time","getHours","partOfDay","good","morning","generic","withName","undefined","escape","afternoon","evening","night","isActive","panel","indexOf","id","isStatusActive","sortedAllStatuses","Object","keys","slice","sort","sortStatuses","sortedPanels","values","a","b","indexA","indexB","sortedRegisteredStatus","watch","rerenderPanels","app","element","$refs","mounted","Vue","console","error","updateSkipLink","handleScroll","setInterval","disableFirstrunHint","destroyed","register","callback","registerStatus","push","$nextTick","widget","saveLayout","axios","join","saveStatuses","JSON","stringify","showModal","closeModal","updateCheckbox","currentValue","index","splice","setTimeout","getElementsByClassName","setAttribute","updateStatusCheckbox","checked","enableStatus","disableStatus","i","findIndex","s","al","toLowerCase","bl","scrollY","body","classList","add","remove","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","attrs","_v","_s","staticClass","_l","key","ref","refInFor","_b","on","model","value","$$v","expression","swapThreshold","delay","delayOnTouchOnly","touchStartThreshold","class","iconClass","title","loading","scopedSlots","_u","fn","proxy","domProps","$event","target","draggable","_e","__webpack_nonce__","btoa","getRequestToken","VTooltip","OCA","Files","assign","App","fileList","filesClient","OC","getClient","Instance","DashboardApp","$mount","Dashboard","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","length","fulfilled","j","every","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"dashboard-main.js?v=42007abba478c69038d1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/dashboard/src/mixins/isMobile.js","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?55b6","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?e885","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?5685","webpack://nextcloud/./apps/dashboard/src/DashboardApp.vue?1477","webpack:///nextcloud/apps/dashboard/src/main.js","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=style&index=0&id=afb25498&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/dashboard/src/DashboardApp.vue?vue&type=style&index=1&id=afb25498&prod&lang=css&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: this._isMobile(),\n\t\t}\n\t},\n\tbeforeMount() {\n\t\twindow.addEventListener('resize', this._onResize)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this._onResize)\n\t},\n\tmethods: {\n\t\t_onResize() {\n\t\t\t// Update mobile mode\n\t\t\tthis.isMobile = this._isMobile()\n\t\t},\n\t\t_isMobile() {\n\t\t\t// check if content width is under 768px\n\t\t\treturn document.documentElement.clientWidth < 768\n\t\t},\n\t},\n}\n","<template>\n\t<div id=\"app-dashboard\">\n\t\t<h2>{{ greeting.text }}</h2>\n\t\t<ul class=\"statuses\">\n\t\t\t<li v-for=\"status in sortedRegisteredStatus\"\n\t\t\t\t:id=\"'status-' + status\"\n\t\t\t\t:key=\"status\">\n\t\t\t\t<div :ref=\"'status-' + status\" />\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<Draggable v-model=\"layout\"\n\t\t\tclass=\"panels\"\n\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\thandle=\".panel--header\"\n\t\t\t@end=\"saveLayout\">\n\t\t\t<div v-for=\"panelId in layout\" :key=\"panels[panelId].id\" class=\"panel\">\n\t\t\t\t<div class=\"panel--header\">\n\t\t\t\t\t<h2>\n\t\t\t\t\t\t<div aria-labelledby=\"panel--header--icon--description\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t:class=\"panels[panelId].iconClass\"\n\t\t\t\t\t\t\trole=\"img\" />\n\t\t\t\t\t\t{{ panels[panelId].title }}\n\t\t\t\t\t</h2>\n\t\t\t\t\t<span id=\"panel--header--icon--description\" class=\"hidden-visually\"> {{ t('dashboard', '\"{title} icon\"', { title: panels[panelId].title }) }} </span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"panel--content\" :class=\"{ loading: !panels[panelId].mounted }\">\n\t\t\t\t\t<div :ref=\"panels[panelId].id\" :data-id=\"panels[panelId].id\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</Draggable>\n\n\t\t<div class=\"footer\">\n\t\t\t<NcButton @click=\"showModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dashboard', 'Customize') }}\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcModal v-if=\"modal\" size=\"large\" @close=\"closeModal\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\n\t\t\t\t<ol class=\"panels\">\n\t\t\t\t\t<li v-for=\"status in sortedAllStatuses\" :key=\"status\" :class=\"'panel-' + status\">\n\t\t\t\t\t\t<input :id=\"'status-checkbox-' + status\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isStatusActive(status)\"\n\t\t\t\t\t\t\t@input=\"updateStatusCheckbox(status, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'status-checkbox-' + status\">\n\t\t\t\t\t\t\t<div :class=\"statusInfo[status].icon\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ statusInfo[status].text }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</ol>\n\t\t\t\t<Draggable v-model=\"layout\"\n\t\t\t\t\tclass=\"panels\"\n\t\t\t\t\ttag=\"ol\"\n\t\t\t\t\tv-bind=\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\"\n\t\t\t\t\thandle=\".draggable\"\n\t\t\t\t\t@end=\"saveLayout\">\n\t\t\t\t\t<li v-for=\"panel in sortedPanels\" :key=\"panel.id\" :class=\"'panel-' + panel.id\">\n\t\t\t\t\t\t<input :id=\"'panel-checkbox-' + panel.id\"\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tclass=\"checkbox\"\n\t\t\t\t\t\t\t:checked=\"isActive(panel)\"\n\t\t\t\t\t\t\t@input=\"updateCheckbox(panel, $event.target.checked)\">\n\t\t\t\t\t\t<label :for=\"'panel-checkbox-' + panel.id\" :class=\"{ draggable: isActive(panel) }\">\n\t\t\t\t\t\t\t<div :class=\"panel.iconClass\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t\t\t\t\t{{ panel.title }}\n\t\t\t\t\t\t</label>\n\t\t\t\t\t</li>\n\t\t\t\t</Draggable>\n\n\t\t\t\t<a v-if=\"isAdmin\" :href=\"appStoreUrl\" class=\"button\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\n\n\t\t\t\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"credits--end\">\n\t\t\t\t\t<a href=\"https://api.met.no/doc/TermsOfService\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\n\t\t\t\t\t<a href=\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\n\t\t\t\t\t<a href=\"https://www.opentopodata.org/#public-api\" target=\"_blank\" rel=\"noopener\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Draggable from 'vuedraggable'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Vue from 'vue'\n\nimport isMobile from './mixins/isMobile.js'\n\nconst panels = loadState('dashboard', 'panels')\nconst firstRun = loadState('dashboard', 'firstRun')\n\nconst statusInfo = {\n\tweather: {\n\t\ttext: t('dashboard', 'Weather'),\n\t\ticon: 'icon-weather-status',\n\t},\n\tstatus: {\n\t\ttext: t('dashboard', 'Status'),\n\t\ticon: 'icon-user-status-online',\n\t},\n}\n\nexport default {\n\tname: 'DashboardApp',\n\tcomponents: {\n\t\tNcButton,\n\t\tDraggable,\n\t\tNcModal,\n\t\tPencil,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisAdmin: getCurrentUser().isAdmin,\n\t\t\ttimer: new Date(),\n\t\t\tregisteredStatus: [],\n\t\t\tcallbacks: {},\n\t\t\tcallbacksStatus: {},\n\t\t\tallCallbacksStatus: {},\n\t\t\tstatusInfo,\n\t\t\tenabledStatuses: loadState('dashboard', 'statuses'),\n\t\t\tpanels,\n\t\t\tfirstRun,\n\t\t\tdisplayName: getCurrentUser()?.displayName,\n\t\t\tuid: getCurrentUser()?.uid,\n\t\t\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\n\t\t\tmodal: false,\n\t\t\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\n\t\t\tstatuses: {},\n\t\t}\n\t},\n\tcomputed: {\n\t\tgreeting() {\n\t\t\tconst time = this.timer.getHours()\n\n\t\t\t// Determine part of the day\n\t\t\tlet partOfDay\n\t\t\tif (time >= 22 || time < 5) {\n\t\t\t\tpartOfDay = 'night'\n\t\t\t} else if (time >= 18) {\n\t\t\t\tpartOfDay = 'evening'\n\t\t\t} else if (time >= 12) {\n\t\t\t\tpartOfDay = 'afternoon'\n\t\t\t} else {\n\t\t\t\tpartOfDay = 'morning'\n\t\t\t}\n\n\t\t\t// Define the greetings\n\t\t\tconst good = {\n\t\t\t\tmorning: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good morning'),\n\t\t\t\t\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tafternoon: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good afternoon'),\n\t\t\t\t\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tevening: {\n\t\t\t\t\tgeneric: t('dashboard', 'Good evening'),\n\t\t\t\t\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t\tnight: {\n\t\t\t\t\t// Don't use \"Good night\" as it's not a greeting\n\t\t\t\t\tgeneric: t('dashboard', 'Hello'),\n\t\t\t\t\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\n\t\t\t\t},\n\t\t\t}\n\n\t\t\t// Figure out which greeting to show\n\t\t\tconst shouldShowName = this.displayName && this.uid !== this.displayName\n\t\t\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\n\t\t},\n\n\t\tisActive() {\n\t\t\treturn (panel) => this.layout.indexOf(panel.id) > -1\n\t\t},\n\t\tisStatusActive() {\n\t\t\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\n\t\t},\n\n\t\tsortedAllStatuses() {\n\t\t\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\n\t\t},\n\t\tsortedPanels() {\n\t\t\treturn Object.values(this.panels).sort((a, b) => {\n\t\t\t\tconst indexA = this.layout.indexOf(a.id)\n\t\t\t\tconst indexB = this.layout.indexOf(b.id)\n\t\t\t\tif (indexA === -1 || indexB === -1) {\n\t\t\t\t\treturn indexB - indexA || a.id - b.id\n\t\t\t\t}\n\t\t\t\treturn indexA - indexB || a.id - b.id\n\t\t\t})\n\t\t},\n\t\tsortedRegisteredStatus() {\n\t\t\treturn this.registeredStatus.slice().sort(this.sortStatuses)\n\t\t},\n\t},\n\n\twatch: {\n\t\tcallbacks() {\n\t\t\tthis.rerenderPanels()\n\t\t},\n\t\tcallbacksStatus() {\n\t\t\tfor (const app in this.callbacksStatus) {\n\t\t\t\tconst element = this.$refs['status-' + app]\n\t\t\t\tif (this.statuses[app] && this.statuses[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacksStatus[app](element[0])\n\t\t\t\t\tVue.set(this.statuses, app, { mounted: true })\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.updateSkipLink()\n\t\twindow.addEventListener('scroll', this.handleScroll)\n\n\t\tsetInterval(() => {\n\t\t\tthis.timer = new Date()\n\t\t}, 30000)\n\n\t\tif (this.firstRun) {\n\t\t\twindow.addEventListener('scroll', this.disableFirstrunHint)\n\t\t}\n\t},\n\tdestroyed() {\n\t\twindow.removeEventListener('scroll', this.handleScroll)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Method to register panels that will be called by the integrating apps\n\t\t *\n\t\t * @param {string} app The unique app id for the widget\n\t\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\n\t\t */\n\t\tregister(app, callback) {\n\t\t\tVue.set(this.callbacks, app, callback)\n\t\t},\n\t\tregisterStatus(app, callback) {\n\t\t\t// always save callbacks in case user enables the status later\n\t\t\tVue.set(this.allCallbacksStatus, app, callback)\n\t\t\t// register only if status is enabled or missing from config\n\t\t\tif (this.isStatusActive(app)) {\n\t\t\t\tthis.registeredStatus.push(app)\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.set(this.callbacksStatus, app, callback)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\trerenderPanels() {\n\t\t\tfor (const app in this.callbacks) {\n\t\t\t\tconst element = this.$refs[app]\n\t\t\t\tif (this.layout.indexOf(app) === -1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (this.panels[app] && this.panels[app].mounted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.callbacks[app](element[0], {\n\t\t\t\t\t\twidget: this.panels[app],\n\t\t\t\t\t})\n\t\t\t\t\tVue.set(this.panels[app], 'mounted', true)\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsaveLayout() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/layout'), {\n\t\t\t\tlayout: this.layout.join(','),\n\t\t\t})\n\t\t},\n\t\tsaveStatuses() {\n\t\t\taxios.post(generateUrl('/apps/dashboard/statuses'), {\n\t\t\t\tstatuses: JSON.stringify(this.enabledStatuses),\n\t\t\t})\n\t\t},\n\t\tshowModal() {\n\t\t\tthis.modal = true\n\t\t\tthis.firstRun = false\n\t\t},\n\t\tcloseModal() {\n\t\t\tthis.modal = false\n\t\t},\n\t\tupdateCheckbox(panel, currentValue) {\n\t\t\tconst index = this.layout.indexOf(panel.id)\n\t\t\tif (!currentValue && index > -1) {\n\t\t\t\tthis.layout.splice(index, 1)\n\n\t\t\t} else {\n\t\t\t\tthis.layout.push(panel.id)\n\t\t\t}\n\t\t\tVue.set(this.panels[panel.id], 'mounted', false)\n\t\t\tthis.saveLayout()\n\t\t\tthis.$nextTick(() => this.rerenderPanels())\n\t\t},\n\t\tdisableFirstrunHint() {\n\t\t\twindow.removeEventListener('scroll', this.disableFirstrunHint)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.firstRun = false\n\t\t\t}, 1000)\n\t\t},\n\t\tupdateSkipLink() {\n\t\t\t// Make sure \"Skip to main content\" link points to the app content\n\t\t\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\n\t\t},\n\t\tupdateStatusCheckbox(app, checked) {\n\t\t\tif (checked) {\n\t\t\t\tthis.enableStatus(app)\n\t\t\t} else {\n\t\t\t\tthis.disableStatus(app)\n\t\t\t}\n\t\t},\n\t\tenableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = true\n\t\t\tthis.registerStatus(app, this.allCallbacksStatus[app])\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tdisableStatus(app) {\n\t\t\tthis.enabledStatuses[app] = false\n\t\t\tconst i = this.registeredStatus.findIndex((s) => s === app)\n\t\t\tif (i !== -1) {\n\t\t\t\tthis.registeredStatus.splice(i, 1)\n\t\t\t\tVue.set(this.statuses, app, { mounted: false })\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tVue.delete(this.callbacksStatus, app)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.saveStatuses()\n\t\t},\n\t\tsortStatuses(a, b) {\n\t\t\tconst al = a.toLowerCase()\n\t\t\tconst bl = b.toLowerCase()\n\t\t\treturn al > bl\n\t\t\t\t? 1\n\t\t\t\t: al < bl\n\t\t\t\t\t? -1\n\t\t\t\t\t: 0\n\t\t},\n\t\thandleScroll() {\n\t\t\tif (window.scrollY > 70) {\n\t\t\t\tdocument.body.classList.add('dashboard--scrolled')\n\t\t\t} else {\n\t\t\t\tdocument.body.classList.remove('dashboard--scrolled')\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n#app-dashboard {\n\twidth: 100%;\n\tmin-height: 100%;\n\tbackground-size: cover;\n\tbackground-position: center center;\n\tbackground-repeat: no-repeat;\n\tbackground-attachment: fixed;\n\n\t> h2 {\n\t\tcolor: var(--color-primary-element-text);\n\t\ttext-align: center;\n\t\tfont-size: 32px;\n\t\tline-height: 130%;\n\t\tpadding: 1rem 0;\n\t}\n}\n\n.panels {\n\twidth: auto;\n\tmargin: auto;\n\tmax-width: 1800px;\n\tdisplay: flex;\n\tjustify-content: center;\n\tflex-direction: row;\n\talign-items: flex-start;\n\tflex-wrap: wrap;\n}\n\n.panel, .panels > div {\n\twidth: 320px;\n\tmax-width: 100%;\n\tmargin: 16px;\n\talign-self: stretch;\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\tborder-radius: var(--border-radius-large);\n\n\t#body-user.theme--highcontrast & {\n\t\tborder: 2px solid var(--color-border);\n\t}\n\n\t&.sortable-ghost {\n\t\t opacity: 0.1;\n\t}\n\n\t& > .panel--header {\n\t\tdisplay: flex;\n\t\tz-index: 1;\n\t\ttop: 50px;\n\t\tpadding: 16px;\n\t\tcursor: grab;\n\n\t\t&, ::v-deep * {\n\t\t\t-webkit-touch-callout: none;\n\t\t\t-webkit-user-select: none;\n\t\t\t-khtml-user-select: none;\n\t\t\t-moz-user-select: none;\n\t\t\t-ms-user-select: none;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tcursor: grabbing;\n\t\t}\n\n\t\ta {\n\t\t\tflex-grow: 1;\n\t\t}\n\n\t\t> h2 {\n\t\t\tdisplay: block;\n\t\t\talign-items: center;\n\t\t\tflex-grow: 1;\n\t\t\tmargin: 0;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 24px;\n\t\t\tfont-weight: bold;\n\t\t\tpadding: 16px 8px;\n\t\t\theight: 56px;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: grab;\n\t\t\tdiv {\n\t\t\t\tbackground-size: 32px;\n\t\t\t\twidth: 32px;\n\t\t\t\theight: 32px;\n\t\t\t\tmargin-right: 16px;\n\t\t\t\tbackground-position: center;\n\t\t\t\tfloat: left;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .panel--content {\n\t\tmargin: 0 16px 16px 16px;\n\t\theight: 424px;\n\t\t// We specifically do not want scrollbars inside widgets\n\t\toverflow: visible;\n\t}\n\n\t// No need to extend height of widgets if only one column is shown\n\t@media only screen and (max-width: 709px) {\n\t\t& > .panel--content {\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.footer {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttransition: bottom var(--animation-slow) ease-in-out;\n\tpadding: 1rem 0;\n}\n\n.edit-panels {\n\tdisplay: inline-block;\n\tmargin:auto;\n\tbackground-position: 16px center;\n\tpadding: 12px 16px;\n\tpadding-left: 36px;\n\tborder-radius: var(--border-radius-pill);\n\tmax-width: 200px;\n\topacity: 1;\n\ttext-align: center;\n}\n\n.button,\n.button-vue,\n.edit-panels,\n.statuses ::v-deep .action-item .action-item__menutoggle,\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\n\tbackground-color: var(--color-main-background-blur);\n\t-webkit-backdrop-filter: var(--filter-background-blur);\n\tbackdrop-filter: var(--filter-background-blur);\n\topacity: 1 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-hover)!important;\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t}\n}\n\n.modal__content {\n\tpadding: 32px 16px;\n\ttext-align: center;\n\n\tol {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tjustify-content: center;\n\t\tlist-style-type: none;\n\t\tpadding-bottom: 16px;\n\t}\n\tli {\n\t\tlabel {\n\t\t\tposition: relative;\n\t\t\tdisplay: block;\n\t\t\tpadding: 48px 16px 14px 16px;\n\t\t\tmargin: 8px;\n\t\t\twidth: 140px;\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t\tborder: 2px solid var(--color-main-background);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t\ttext-align: left;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\n\t\t\tdiv {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 16px;\n\t\t\t\twidth: 24px;\n\t\t\t\theight: 24px;\n\t\t\t\tbackground-size: 24px;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tborder-color: var(--color-primary-element);\n\t\t\t}\n\t\t}\n\n\t\t// Do not invert status icons\n\t\t&:not(.panel-status) label div {\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\n\t\tinput[type='checkbox'].checkbox + label:before {\n\t\t\tposition: absolute;\n\t\t\tright: 12px;\n\t\t\ttop: 16px;\n\t\t}\n\n\t\tinput:focus + label {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\th3 {\n\t\tfont-weight: bold;\n\n\t\t&:not(:first-of-type) {\n\t\t\tmargin-top: 64px;\n\t\t}\n\t}\n\n\t// Adjust design of 'Get more widgets' button\n\t.button {\n\t\tdisplay: inline-block;\n\t\tpadding: 10px 16px;\n\t\tmargin: 0;\n\t}\n\n\tp {\n\t\tmax-width: 650px;\n\t\tmargin: 0 auto;\n\n\t\ta:hover,\n\t\ta:focus {\n\t\t\tborder-bottom: 2px solid var(--color-border);\n\t\t}\n\t}\n\n\t.credits--end {\n\t\tpadding-bottom: 32px;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\ta {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n}\n\n.flip-list-move {\n\ttransition: transform var(--animation-slow);\n}\n\n.statuses {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: center;\n\tflex-wrap: wrap;\n\tmargin-bottom: 36px;\n\n\t& > li {\n\t\tmargin: 8px;\n\t}\n}\n</style>\n<style>\nhtml, body {\n\tbackground-attachment: fixed;\n}\n\n#body-user #header {\n\tposition: fixed;\n}\n\n#content {\n\toverflow: auto;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=0&id=afb25498&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=0&id=afb25498&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=1&id=afb25498&prod&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DashboardApp.vue?vue&type=style&index=1&id=afb25498&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DashboardApp.vue?vue&type=template&id=afb25498&scoped=true&\"\nimport script from \"./DashboardApp.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardApp.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardApp.vue?vue&type=style&index=0&id=afb25498&prod&lang=scss&scoped=true&\"\nimport style1 from \"./DashboardApp.vue?vue&type=style&index=1&id=afb25498&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"afb25498\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"app-dashboard\"}},[_c('h2',[_vm._v(_vm._s(_vm.greeting.text))]),_vm._v(\" \"),_c('ul',{staticClass:\"statuses\"},_vm._l((_vm.sortedRegisteredStatus),function(status){return _c('li',{key:status,attrs:{\"id\":'status-' + status}},[_c('div',{ref:'status-' + status,refInFor:true})])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"handle\":\".panel--header\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.layout),function(panelId){return _c('div',{key:_vm.panels[panelId].id,staticClass:\"panel\"},[_c('div',{staticClass:\"panel--header\"},[_c('h2',[_c('div',{class:_vm.panels[panelId].iconClass,attrs:{\"aria-labelledby\":\"panel--header--icon--description\",\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.panels[panelId].title)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"panel--header--icon--description\"}},[_vm._v(\" \"+_vm._s(_vm.t('dashboard', '\"{title} icon\"', { title: _vm.panels[panelId].title }))+\" \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel--content\",class:{ loading: !_vm.panels[panelId].mounted }},[_c('div',{ref:_vm.panels[panelId].id,refInFor:true,attrs:{\"data-id\":_vm.panels[panelId].id}})])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"footer\"},[_c('NcButton',{on:{\"click\":_vm.showModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'Customize'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.modal)?_c('NcModal',{attrs:{\"size\":\"large\"},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"modal__content\"},[_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Edit widgets')))]),_vm._v(\" \"),_c('ol',{staticClass:\"panels\"},_vm._l((_vm.sortedAllStatuses),function(status){return _c('li',{key:status,class:'panel-' + status},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'status-checkbox-' + status,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isStatusActive(status)},on:{\"input\":function($event){return _vm.updateStatusCheckbox(status, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":'status-checkbox-' + status}},[_c('div',{class:_vm.statusInfo[status].icon,attrs:{\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.statusInfo[status].text)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),_c('Draggable',_vm._b({staticClass:\"panels\",attrs:{\"tag\":\"ol\",\"handle\":\".draggable\"},on:{\"end\":_vm.saveLayout},model:{value:(_vm.layout),callback:function ($$v) {_vm.layout=$$v},expression:\"layout\"}},'Draggable',{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3},false),_vm._l((_vm.sortedPanels),function(panel){return _c('li',{key:panel.id,class:'panel-' + panel.id},[_c('input',{staticClass:\"checkbox\",attrs:{\"id\":'panel-checkbox-' + panel.id,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isActive(panel)},on:{\"input\":function($event){return _vm.updateCheckbox(panel, $event.target.checked)}}}),_vm._v(\" \"),_c('label',{class:{ draggable: _vm.isActive(panel) },attrs:{\"for\":'panel-checkbox-' + panel.id}},[_c('div',{class:panel.iconClass,attrs:{\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(panel.title)+\"\\n\\t\\t\\t\\t\\t\")])])}),0),_vm._v(\" \"),(_vm.isAdmin)?_c('a',{staticClass:\"button\",attrs:{\"href\":_vm.appStoreUrl}},[_vm._v(_vm._s(_vm.t('dashboard', 'Get more widgets from the App Store')))]):_vm._e(),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('dashboard', 'Weather service')))]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"credits--end\"},[_c('a',{attrs:{\"href\":\"https://api.met.no/doc/TermsOfService\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'Weather data from Met.no')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'geocoding with Nominatim')))]),_vm._v(\",\\n\\t\\t\\t\\t\"),_c('a',{attrs:{\"href\":\"https://www.opentopodata.org/#public-api\",\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._v(_vm._s(_vm.t('dashboard', 'elevation data from OpenTopoData')))]),_vm._v(\".\\n\\t\\t\\t\")])],1)]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport DashboardApp from './DashboardApp.vue'\nimport { translate as t } from '@nextcloud/l10n'\nimport VTooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport { getRequestToken } from '@nextcloud/auth'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.directive('Tooltip', VTooltip)\n\nVue.prototype.t = t\n\n// FIXME workaround to make the sidebar work\nif (!window.OCA.Files) {\n\twindow.OCA.Files = {}\n}\n\nObject.assign(window.OCA.Files, { App: { fileList: { filesClient: OC.Files.getClient() } } }, window.OCA.Files)\n\nconst Dashboard = Vue.extend(DashboardApp)\nconst Instance = new Dashboard({}).$mount('#app-content-vue')\n\nwindow.OCA.Dashboard = {\n\tregister: (app, callback) => Instance.register(app, callback),\n\tregisterStatus: (app, callback) => Instance.registerStatus(app, callback),\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-dashboard[data-v-afb25498]{width:100%;min-height:100%;background-size:cover;background-position:center center;background-repeat:no-repeat;background-attachment:fixed}#app-dashboard>h2[data-v-afb25498]{color:var(--color-primary-element-text);text-align:center;font-size:32px;line-height:130%;padding:1rem 0}.panels[data-v-afb25498]{width:auto;margin:auto;max-width:1800px;display:flex;justify-content:center;flex-direction:row;align-items:flex-start;flex-wrap:wrap}.panel[data-v-afb25498],.panels>div[data-v-afb25498]{width:320px;max-width:100%;margin:16px;align-self:stretch;background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);border-radius:var(--border-radius-large)}#body-user.theme--highcontrast .panel[data-v-afb25498],#body-user.theme--highcontrast .panels>div[data-v-afb25498]{border:2px solid var(--color-border)}.panel.sortable-ghost[data-v-afb25498],.panels>div.sortable-ghost[data-v-afb25498]{opacity:.1}.panel>.panel--header[data-v-afb25498],.panels>div>.panel--header[data-v-afb25498]{display:flex;z-index:1;top:50px;padding:16px;cursor:grab}.panel>.panel--header[data-v-afb25498],.panel>.panel--header[data-v-afb25498] *,.panels>div>.panel--header[data-v-afb25498],.panels>div>.panel--header[data-v-afb25498] *{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.panel>.panel--header[data-v-afb25498]:active,.panels>div>.panel--header[data-v-afb25498]:active{cursor:grabbing}.panel>.panel--header a[data-v-afb25498],.panels>div>.panel--header a[data-v-afb25498]{flex-grow:1}.panel>.panel--header>h2[data-v-afb25498],.panels>div>.panel--header>h2[data-v-afb25498]{display:block;align-items:center;flex-grow:1;margin:0;font-size:20px;line-height:24px;font-weight:bold;padding:16px 8px;height:56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:grab}.panel>.panel--header>h2 div[data-v-afb25498],.panels>div>.panel--header>h2 div[data-v-afb25498]{background-size:32px;width:32px;height:32px;margin-right:16px;background-position:center;float:left}.panel>.panel--content[data-v-afb25498],.panels>div>.panel--content[data-v-afb25498]{margin:0 16px 16px 16px;height:424px;overflow:visible}@media only screen and (max-width: 709px){.panel>.panel--content[data-v-afb25498],.panels>div>.panel--content[data-v-afb25498]{height:auto}}.footer[data-v-afb25498]{display:flex;justify-content:center;transition:bottom var(--animation-slow) ease-in-out;padding:1rem 0}.edit-panels[data-v-afb25498]{display:inline-block;margin:auto;background-position:16px center;padding:12px 16px;padding-left:36px;border-radius:var(--border-radius-pill);max-width:200px;opacity:1;text-align:center}.button[data-v-afb25498],.button-vue[data-v-afb25498],.edit-panels[data-v-afb25498],.statuses[data-v-afb25498] .action-item .action-item__menutoggle,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle{background-color:var(--color-main-background-blur);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);opacity:1 !important}.button[data-v-afb25498]:hover,.button[data-v-afb25498]:focus,.button[data-v-afb25498]:active,.button-vue[data-v-afb25498]:hover,.button-vue[data-v-afb25498]:focus,.button-vue[data-v-afb25498]:active,.edit-panels[data-v-afb25498]:hover,.edit-panels[data-v-afb25498]:focus,.edit-panels[data-v-afb25498]:active,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:hover,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:focus,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:active,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:hover,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:focus,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:active{background-color:var(--color-background-hover) !important}.button[data-v-afb25498]:focus-visible,.button-vue[data-v-afb25498]:focus-visible,.edit-panels[data-v-afb25498]:focus-visible,.statuses[data-v-afb25498] .action-item .action-item__menutoggle:focus-visible,.statuses[data-v-afb25498] .action-item.action-item--open .action-item__menutoggle:focus-visible{box-shadow:0 0 0 2px var(--color-main-text) !important}.modal__content[data-v-afb25498]{padding:32px 16px;text-align:center}.modal__content ol[data-v-afb25498]{display:flex;flex-direction:row;justify-content:center;list-style-type:none;padding-bottom:16px}.modal__content li label[data-v-afb25498]{position:relative;display:block;padding:48px 16px 14px 16px;margin:8px;width:140px;background-color:var(--color-background-hover);border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal__content li label div[data-v-afb25498]{position:absolute;top:16px;width:24px;height:24px;background-size:24px}.modal__content li label[data-v-afb25498]:hover{border-color:var(--color-primary-element)}.modal__content li:not(.panel-status) label div[data-v-afb25498]{filter:var(--background-invert-if-dark)}.modal__content li input[type=checkbox].checkbox+label[data-v-afb25498]:before{position:absolute;right:12px;top:16px}.modal__content li input:focus+label[data-v-afb25498]{border-color:var(--color-primary-element)}.modal__content h3[data-v-afb25498]{font-weight:bold}.modal__content h3[data-v-afb25498]:not(:first-of-type){margin-top:64px}.modal__content .button[data-v-afb25498]{display:inline-block;padding:10px 16px;margin:0}.modal__content p[data-v-afb25498]{max-width:650px;margin:0 auto}.modal__content p a[data-v-afb25498]:hover,.modal__content p a[data-v-afb25498]:focus{border-bottom:2px solid var(--color-border)}.modal__content .credits--end[data-v-afb25498]{padding-bottom:32px;color:var(--color-text-maxcontrast)}.modal__content .credits--end a[data-v-afb25498]{color:var(--color-text-maxcontrast)}.flip-list-move[data-v-afb25498]{transition:transform var(--animation-slow)}.statuses[data-v-afb25498]{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap;margin-bottom:36px}.statuses>li[data-v-afb25498]{margin:8px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/DashboardApp.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,UAAA,CACA,eAAA,CACA,qBAAA,CACA,iCAAA,CACA,2BAAA,CACA,2BAAA,CAEA,mCACC,uCAAA,CACA,iBAAA,CACA,cAAA,CACA,gBAAA,CACA,cAAA,CAIF,yBACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CAGD,qDACC,WAAA,CACA,cAAA,CACA,WAAA,CACA,kBAAA,CACA,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,wCAAA,CAEA,mHACC,oCAAA,CAGD,mFACE,UAAA,CAGF,mFACC,YAAA,CACA,SAAA,CACA,QAAA,CACA,YAAA,CACA,WAAA,CAEA,0KACC,0BAAA,CACA,wBAAA,CACA,uBAAA,CACA,qBAAA,CACA,oBAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CAGD,uFACC,WAAA,CAGD,yFACC,aAAA,CACA,kBAAA,CACA,WAAA,CACA,QAAA,CACA,cAAA,CACA,gBAAA,CACA,gBAAA,CACA,gBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,WAAA,CACA,iGACC,oBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,0BAAA,CACA,UAAA,CAKH,qFACC,uBAAA,CACA,YAAA,CAEA,gBAAA,CAID,0CACC,qFACC,WAAA,CAAA,CAKH,yBACC,YAAA,CACA,sBAAA,CACA,mDAAA,CACA,cAAA,CAGD,8BACC,oBAAA,CACA,WAAA,CACA,+BAAA,CACA,iBAAA,CACA,iBAAA,CACA,uCAAA,CACA,eAAA,CACA,SAAA,CACA,iBAAA,CAGD,wOAKC,kDAAA,CACA,qDAAA,CACA,6CAAA,CACA,oBAAA,CAEA,uxBAGC,yDAAA,CAED,8SACC,sDAAA,CAIF,iCACC,iBAAA,CACA,iBAAA,CAEA,oCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,oBAAA,CACA,mBAAA,CAGA,0CACC,iBAAA,CACA,aAAA,CACA,2BAAA,CACA,UAAA,CACA,WAAA,CACA,8CAAA,CACA,6CAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEA,8CACC,iBAAA,CACA,QAAA,CACA,UAAA,CACA,WAAA,CACA,oBAAA,CAGD,gDACC,yCAAA,CAKF,iEACC,uCAAA,CAGD,+EACC,iBAAA,CACA,UAAA,CACA,QAAA,CAGD,sDACC,yCAAA,CAIF,oCACC,gBAAA,CAEA,wDACC,eAAA,CAKF,yCACC,oBAAA,CACA,iBAAA,CACA,QAAA,CAGD,mCACC,eAAA,CACA,aAAA,CAEA,sFAEC,2CAAA,CAIF,+CACC,mBAAA,CACA,mCAAA,CAEA,iDACC,mCAAA,CAKH,iCACC,0CAAA,CAGD,2BACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CAEA,8BACC,UAAA\",\"sourcesContent\":[\"\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100%;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 1rem 0;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1800px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\talign-self: stretch;\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tpadding: 16px 8px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tmargin-right: 16px;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tfloat: left;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 424px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: visible;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tpadding: 1rem 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.button,\\n.button-vue,\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 16px;\\n\\t\\t\\t\\twidth: 24px;\\n\\t\\t\\t\\theight: 24px;\\n\\t\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Do not invert status icons\\n\\t\\t&:not(.panel-status) label div {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > li {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nhtml, body {\\n\\tbackground-attachment: fixed;\\n}\\n#body-user #header {\\n\\tposition: fixed;\\n}\\n#content {\\n\\toverflow: auto;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/dashboard/src/DashboardApp.vue\"],\"names\":[],\"mappings\":\";AA2nBA;CACA,4BAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,cAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div id=\\\"app-dashboard\\\">\\n\\t\\t<h2>{{ greeting.text }}</h2>\\n\\t\\t<ul class=\\\"statuses\\\">\\n\\t\\t\\t<li v-for=\\\"status in sortedRegisteredStatus\\\"\\n\\t\\t\\t\\t:id=\\\"'status-' + status\\\"\\n\\t\\t\\t\\t:key=\\\"status\\\">\\n\\t\\t\\t\\t<div :ref=\\\"'status-' + status\\\" />\\n\\t\\t\\t</li>\\n\\t\\t</ul>\\n\\n\\t\\t<Draggable v-model=\\\"layout\\\"\\n\\t\\t\\tclass=\\\"panels\\\"\\n\\t\\t\\tv-bind=\\\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\\\"\\n\\t\\t\\thandle=\\\".panel--header\\\"\\n\\t\\t\\t@end=\\\"saveLayout\\\">\\n\\t\\t\\t<div v-for=\\\"panelId in layout\\\" :key=\\\"panels[panelId].id\\\" class=\\\"panel\\\">\\n\\t\\t\\t\\t<div class=\\\"panel--header\\\">\\n\\t\\t\\t\\t\\t<h2>\\n\\t\\t\\t\\t\\t\\t<div aria-labelledby=\\\"panel--header--icon--description\\\"\\n\\t\\t\\t\\t\\t\\t\\taria-hidden=\\\"true\\\"\\n\\t\\t\\t\\t\\t\\t\\t:class=\\\"panels[panelId].iconClass\\\"\\n\\t\\t\\t\\t\\t\\t\\trole=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t{{ panels[panelId].title }}\\n\\t\\t\\t\\t\\t</h2>\\n\\t\\t\\t\\t\\t<span id=\\\"panel--header--icon--description\\\" class=\\\"hidden-visually\\\"> {{ t('dashboard', '\\\"{title} icon\\\"', { title: panels[panelId].title }) }} </span>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t<div class=\\\"panel--content\\\" :class=\\\"{ loading: !panels[panelId].mounted }\\\">\\n\\t\\t\\t\\t\\t<div :ref=\\\"panels[panelId].id\\\" :data-id=\\\"panels[panelId].id\\\" />\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\\n\\t\\t</Draggable>\\n\\n\\t\\t<div class=\\\"footer\\\">\\n\\t\\t\\t<NcButton @click=\\\"showModal\\\">\\n\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t<Pencil :size=\\\"20\\\" />\\n\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t{{ t('dashboard', 'Customize') }}\\n\\t\\t\\t</NcButton>\\n\\t\\t</div>\\n\\n\\t\\t<NcModal v-if=\\\"modal\\\" size=\\\"large\\\" @close=\\\"closeModal\\\">\\n\\t\\t\\t<div class=\\\"modal__content\\\">\\n\\t\\t\\t\\t<h3>{{ t('dashboard', 'Edit widgets') }}</h3>\\n\\t\\t\\t\\t<ol class=\\\"panels\\\">\\n\\t\\t\\t\\t\\t<li v-for=\\\"status in sortedAllStatuses\\\" :key=\\\"status\\\" :class=\\\"'panel-' + status\\\">\\n\\t\\t\\t\\t\\t\\t<input :id=\\\"'status-checkbox-' + status\\\"\\n\\t\\t\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\t:checked=\\\"isStatusActive(status)\\\"\\n\\t\\t\\t\\t\\t\\t\\t@input=\\\"updateStatusCheckbox(status, $event.target.checked)\\\">\\n\\t\\t\\t\\t\\t\\t<label :for=\\\"'status-checkbox-' + status\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div :class=\\\"statusInfo[status].icon\\\" aria-hidden=\\\"true\\\" role=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ statusInfo[status].text }}\\n\\t\\t\\t\\t\\t\\t</label>\\n\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t</ol>\\n\\t\\t\\t\\t<Draggable v-model=\\\"layout\\\"\\n\\t\\t\\t\\t\\tclass=\\\"panels\\\"\\n\\t\\t\\t\\t\\ttag=\\\"ol\\\"\\n\\t\\t\\t\\t\\tv-bind=\\\"{swapThreshold: 0.30, delay: 500, delayOnTouchOnly: true, touchStartThreshold: 3}\\\"\\n\\t\\t\\t\\t\\thandle=\\\".draggable\\\"\\n\\t\\t\\t\\t\\t@end=\\\"saveLayout\\\">\\n\\t\\t\\t\\t\\t<li v-for=\\\"panel in sortedPanels\\\" :key=\\\"panel.id\\\" :class=\\\"'panel-' + panel.id\\\">\\n\\t\\t\\t\\t\\t\\t<input :id=\\\"'panel-checkbox-' + panel.id\\\"\\n\\t\\t\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\t\\t\\t:checked=\\\"isActive(panel)\\\"\\n\\t\\t\\t\\t\\t\\t\\t@input=\\\"updateCheckbox(panel, $event.target.checked)\\\">\\n\\t\\t\\t\\t\\t\\t<label :for=\\\"'panel-checkbox-' + panel.id\\\" :class=\\\"{ draggable: isActive(panel) }\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div :class=\\\"panel.iconClass\\\" aria-hidden=\\\"true\\\" role=\\\"img\\\" />\\n\\t\\t\\t\\t\\t\\t\\t{{ panel.title }}\\n\\t\\t\\t\\t\\t\\t</label>\\n\\t\\t\\t\\t\\t</li>\\n\\t\\t\\t\\t</Draggable>\\n\\n\\t\\t\\t\\t<a v-if=\\\"isAdmin\\\" :href=\\\"appStoreUrl\\\" class=\\\"button\\\">{{ t('dashboard', 'Get more widgets from the App Store') }}</a>\\n\\n\\t\\t\\t\\t<h3>{{ t('dashboard', 'Weather service') }}</h3>\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('dashboard', 'For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<p class=\\\"credits--end\\\">\\n\\t\\t\\t\\t\\t<a href=\\\"https://api.met.no/doc/TermsOfService\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'Weather data from Met.no') }}</a>,\\n\\t\\t\\t\\t\\t<a href=\\\"https://wiki.osmfoundation.org/wiki/Privacy_Policy\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'geocoding with Nominatim') }}</a>,\\n\\t\\t\\t\\t\\t<a href=\\\"https://www.opentopodata.org/#public-api\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">{{ t('dashboard', 'elevation data from OpenTopoData') }}</a>.\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t</div>\\n\\t\\t</NcModal>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport { generateUrl } from '@nextcloud/router'\\nimport { getCurrentUser } from '@nextcloud/auth'\\nimport { loadState } from '@nextcloud/initial-state'\\nimport axios from '@nextcloud/axios'\\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\\nimport Draggable from 'vuedraggable'\\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\\nimport Vue from 'vue'\\n\\nimport isMobile from './mixins/isMobile.js'\\n\\nconst panels = loadState('dashboard', 'panels')\\nconst firstRun = loadState('dashboard', 'firstRun')\\n\\nconst statusInfo = {\\n\\tweather: {\\n\\t\\ttext: t('dashboard', 'Weather'),\\n\\t\\ticon: 'icon-weather-status',\\n\\t},\\n\\tstatus: {\\n\\t\\ttext: t('dashboard', 'Status'),\\n\\t\\ticon: 'icon-user-status-online',\\n\\t},\\n}\\n\\nexport default {\\n\\tname: 'DashboardApp',\\n\\tcomponents: {\\n\\t\\tNcButton,\\n\\t\\tDraggable,\\n\\t\\tNcModal,\\n\\t\\tPencil,\\n\\t},\\n\\tmixins: [\\n\\t\\tisMobile,\\n\\t],\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tisAdmin: getCurrentUser().isAdmin,\\n\\t\\t\\ttimer: new Date(),\\n\\t\\t\\tregisteredStatus: [],\\n\\t\\t\\tcallbacks: {},\\n\\t\\t\\tcallbacksStatus: {},\\n\\t\\t\\tallCallbacksStatus: {},\\n\\t\\t\\tstatusInfo,\\n\\t\\t\\tenabledStatuses: loadState('dashboard', 'statuses'),\\n\\t\\t\\tpanels,\\n\\t\\t\\tfirstRun,\\n\\t\\t\\tdisplayName: getCurrentUser()?.displayName,\\n\\t\\t\\tuid: getCurrentUser()?.uid,\\n\\t\\t\\tlayout: loadState('dashboard', 'layout').filter((panelId) => panels[panelId]),\\n\\t\\t\\tmodal: false,\\n\\t\\t\\tappStoreUrl: generateUrl('/settings/apps/dashboard'),\\n\\t\\t\\tstatuses: {},\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tgreeting() {\\n\\t\\t\\tconst time = this.timer.getHours()\\n\\n\\t\\t\\t// Determine part of the day\\n\\t\\t\\tlet partOfDay\\n\\t\\t\\tif (time >= 22 || time < 5) {\\n\\t\\t\\t\\tpartOfDay = 'night'\\n\\t\\t\\t} else if (time >= 18) {\\n\\t\\t\\t\\tpartOfDay = 'evening'\\n\\t\\t\\t} else if (time >= 12) {\\n\\t\\t\\t\\tpartOfDay = 'afternoon'\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tpartOfDay = 'morning'\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Define the greetings\\n\\t\\t\\tconst good = {\\n\\t\\t\\t\\tmorning: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good morning'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good morning, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tafternoon: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good afternoon'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good afternoon, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tevening: {\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Good evening'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Good evening, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t\\tnight: {\\n\\t\\t\\t\\t\\t// Don't use \\\"Good night\\\" as it's not a greeting\\n\\t\\t\\t\\t\\tgeneric: t('dashboard', 'Hello'),\\n\\t\\t\\t\\t\\twithName: t('dashboard', 'Hello, {name}', { name: this.displayName }, undefined, { escape: false }),\\n\\t\\t\\t\\t},\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Figure out which greeting to show\\n\\t\\t\\tconst shouldShowName = this.displayName && this.uid !== this.displayName\\n\\t\\t\\treturn { text: shouldShowName ? good[partOfDay].withName : good[partOfDay].generic }\\n\\t\\t},\\n\\n\\t\\tisActive() {\\n\\t\\t\\treturn (panel) => this.layout.indexOf(panel.id) > -1\\n\\t\\t},\\n\\t\\tisStatusActive() {\\n\\t\\t\\treturn (status) => !(status in this.enabledStatuses) || this.enabledStatuses[status]\\n\\t\\t},\\n\\n\\t\\tsortedAllStatuses() {\\n\\t\\t\\treturn Object.keys(this.allCallbacksStatus).slice().sort(this.sortStatuses)\\n\\t\\t},\\n\\t\\tsortedPanels() {\\n\\t\\t\\treturn Object.values(this.panels).sort((a, b) => {\\n\\t\\t\\t\\tconst indexA = this.layout.indexOf(a.id)\\n\\t\\t\\t\\tconst indexB = this.layout.indexOf(b.id)\\n\\t\\t\\t\\tif (indexA === -1 || indexB === -1) {\\n\\t\\t\\t\\t\\treturn indexB - indexA || a.id - b.id\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn indexA - indexB || a.id - b.id\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tsortedRegisteredStatus() {\\n\\t\\t\\treturn this.registeredStatus.slice().sort(this.sortStatuses)\\n\\t\\t},\\n\\t},\\n\\n\\twatch: {\\n\\t\\tcallbacks() {\\n\\t\\t\\tthis.rerenderPanels()\\n\\t\\t},\\n\\t\\tcallbacksStatus() {\\n\\t\\t\\tfor (const app in this.callbacksStatus) {\\n\\t\\t\\t\\tconst element = this.$refs['status-' + app]\\n\\t\\t\\t\\tif (this.statuses[app] && this.statuses[app].mounted) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (element) {\\n\\t\\t\\t\\t\\tthis.callbacksStatus[app](element[0])\\n\\t\\t\\t\\t\\tVue.set(this.statuses, app, { mounted: true })\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\n\\tmounted() {\\n\\t\\tthis.updateSkipLink()\\n\\t\\twindow.addEventListener('scroll', this.handleScroll)\\n\\n\\t\\tsetInterval(() => {\\n\\t\\t\\tthis.timer = new Date()\\n\\t\\t}, 30000)\\n\\n\\t\\tif (this.firstRun) {\\n\\t\\t\\twindow.addEventListener('scroll', this.disableFirstrunHint)\\n\\t\\t}\\n\\t},\\n\\tdestroyed() {\\n\\t\\twindow.removeEventListener('scroll', this.handleScroll)\\n\\t},\\n\\n\\tmethods: {\\n\\t\\t/**\\n\\t\\t * Method to register panels that will be called by the integrating apps\\n\\t\\t *\\n\\t\\t * @param {string} app The unique app id for the widget\\n\\t\\t * @param {Function} callback The callback function to register a panel which gets the DOM element passed as parameter\\n\\t\\t */\\n\\t\\tregister(app, callback) {\\n\\t\\t\\tVue.set(this.callbacks, app, callback)\\n\\t\\t},\\n\\t\\tregisterStatus(app, callback) {\\n\\t\\t\\t// always save callbacks in case user enables the status later\\n\\t\\t\\tVue.set(this.allCallbacksStatus, app, callback)\\n\\t\\t\\t// register only if status is enabled or missing from config\\n\\t\\t\\tif (this.isStatusActive(app)) {\\n\\t\\t\\t\\tthis.registeredStatus.push(app)\\n\\t\\t\\t\\tthis.$nextTick(() => {\\n\\t\\t\\t\\t\\tVue.set(this.callbacksStatus, app, callback)\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\trerenderPanels() {\\n\\t\\t\\tfor (const app in this.callbacks) {\\n\\t\\t\\t\\tconst element = this.$refs[app]\\n\\t\\t\\t\\tif (this.layout.indexOf(app) === -1) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (this.panels[app] && this.panels[app].mounted) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (element) {\\n\\t\\t\\t\\t\\tthis.callbacks[app](element[0], {\\n\\t\\t\\t\\t\\t\\twidget: this.panels[app],\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t\\tVue.set(this.panels[app], 'mounted', true)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tconsole.error('Failed to register panel in the frontend as no backend data was provided for ' + app)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tsaveLayout() {\\n\\t\\t\\taxios.post(generateUrl('/apps/dashboard/layout'), {\\n\\t\\t\\t\\tlayout: this.layout.join(','),\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tsaveStatuses() {\\n\\t\\t\\taxios.post(generateUrl('/apps/dashboard/statuses'), {\\n\\t\\t\\t\\tstatuses: JSON.stringify(this.enabledStatuses),\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\tshowModal() {\\n\\t\\t\\tthis.modal = true\\n\\t\\t\\tthis.firstRun = false\\n\\t\\t},\\n\\t\\tcloseModal() {\\n\\t\\t\\tthis.modal = false\\n\\t\\t},\\n\\t\\tupdateCheckbox(panel, currentValue) {\\n\\t\\t\\tconst index = this.layout.indexOf(panel.id)\\n\\t\\t\\tif (!currentValue && index > -1) {\\n\\t\\t\\t\\tthis.layout.splice(index, 1)\\n\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.layout.push(panel.id)\\n\\t\\t\\t}\\n\\t\\t\\tVue.set(this.panels[panel.id], 'mounted', false)\\n\\t\\t\\tthis.saveLayout()\\n\\t\\t\\tthis.$nextTick(() => this.rerenderPanels())\\n\\t\\t},\\n\\t\\tdisableFirstrunHint() {\\n\\t\\t\\twindow.removeEventListener('scroll', this.disableFirstrunHint)\\n\\t\\t\\tsetTimeout(() => {\\n\\t\\t\\t\\tthis.firstRun = false\\n\\t\\t\\t}, 1000)\\n\\t\\t},\\n\\t\\tupdateSkipLink() {\\n\\t\\t\\t// Make sure \\\"Skip to main content\\\" link points to the app content\\n\\t\\t\\tdocument.getElementsByClassName('skip-navigation')[0].setAttribute('href', '#app-dashboard')\\n\\t\\t},\\n\\t\\tupdateStatusCheckbox(app, checked) {\\n\\t\\t\\tif (checked) {\\n\\t\\t\\t\\tthis.enableStatus(app)\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tthis.disableStatus(app)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tenableStatus(app) {\\n\\t\\t\\tthis.enabledStatuses[app] = true\\n\\t\\t\\tthis.registerStatus(app, this.allCallbacksStatus[app])\\n\\t\\t\\tthis.saveStatuses()\\n\\t\\t},\\n\\t\\tdisableStatus(app) {\\n\\t\\t\\tthis.enabledStatuses[app] = false\\n\\t\\t\\tconst i = this.registeredStatus.findIndex((s) => s === app)\\n\\t\\t\\tif (i !== -1) {\\n\\t\\t\\t\\tthis.registeredStatus.splice(i, 1)\\n\\t\\t\\t\\tVue.set(this.statuses, app, { mounted: false })\\n\\t\\t\\t\\tthis.$nextTick(() => {\\n\\t\\t\\t\\t\\tVue.delete(this.callbacksStatus, app)\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\tthis.saveStatuses()\\n\\t\\t},\\n\\t\\tsortStatuses(a, b) {\\n\\t\\t\\tconst al = a.toLowerCase()\\n\\t\\t\\tconst bl = b.toLowerCase()\\n\\t\\t\\treturn al > bl\\n\\t\\t\\t\\t? 1\\n\\t\\t\\t\\t: al < bl\\n\\t\\t\\t\\t\\t? -1\\n\\t\\t\\t\\t\\t: 0\\n\\t\\t},\\n\\t\\thandleScroll() {\\n\\t\\t\\tif (window.scrollY > 70) {\\n\\t\\t\\t\\tdocument.body.classList.add('dashboard--scrolled')\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tdocument.body.classList.remove('dashboard--scrolled')\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style lang=\\\"scss\\\" scoped>\\n#app-dashboard {\\n\\twidth: 100%;\\n\\tmin-height: 100%;\\n\\tbackground-size: cover;\\n\\tbackground-position: center center;\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-attachment: fixed;\\n\\n\\t> h2 {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: 32px;\\n\\t\\tline-height: 130%;\\n\\t\\tpadding: 1rem 0;\\n\\t}\\n}\\n\\n.panels {\\n\\twidth: auto;\\n\\tmargin: auto;\\n\\tmax-width: 1800px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\tflex-direction: row;\\n\\talign-items: flex-start;\\n\\tflex-wrap: wrap;\\n}\\n\\n.panel, .panels > div {\\n\\twidth: 320px;\\n\\tmax-width: 100%;\\n\\tmargin: 16px;\\n\\talign-self: stretch;\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t#body-user.theme--highcontrast & {\\n\\t\\tborder: 2px solid var(--color-border);\\n\\t}\\n\\n\\t&.sortable-ghost {\\n\\t\\t opacity: 0.1;\\n\\t}\\n\\n\\t& > .panel--header {\\n\\t\\tdisplay: flex;\\n\\t\\tz-index: 1;\\n\\t\\ttop: 50px;\\n\\t\\tpadding: 16px;\\n\\t\\tcursor: grab;\\n\\n\\t\\t&, ::v-deep * {\\n\\t\\t\\t-webkit-touch-callout: none;\\n\\t\\t\\t-webkit-user-select: none;\\n\\t\\t\\t-khtml-user-select: none;\\n\\t\\t\\t-moz-user-select: none;\\n\\t\\t\\t-ms-user-select: none;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tcursor: grabbing;\\n\\t\\t}\\n\\n\\t\\ta {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\n\\t\\t> h2 {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 24px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tpadding: 16px 8px;\\n\\t\\t\\theight: 56px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: grab;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tbackground-size: 32px;\\n\\t\\t\\t\\twidth: 32px;\\n\\t\\t\\t\\theight: 32px;\\n\\t\\t\\t\\tmargin-right: 16px;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tfloat: left;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .panel--content {\\n\\t\\tmargin: 0 16px 16px 16px;\\n\\t\\theight: 424px;\\n\\t\\t// We specifically do not want scrollbars inside widgets\\n\\t\\toverflow: visible;\\n\\t}\\n\\n\\t// No need to extend height of widgets if only one column is shown\\n\\t@media only screen and (max-width: 709px) {\\n\\t\\t& > .panel--content {\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.footer {\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n\\ttransition: bottom var(--animation-slow) ease-in-out;\\n\\tpadding: 1rem 0;\\n}\\n\\n.edit-panels {\\n\\tdisplay: inline-block;\\n\\tmargin:auto;\\n\\tbackground-position: 16px center;\\n\\tpadding: 12px 16px;\\n\\tpadding-left: 36px;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tmax-width: 200px;\\n\\topacity: 1;\\n\\ttext-align: center;\\n}\\n\\n.button,\\n.button-vue,\\n.edit-panels,\\n.statuses ::v-deep .action-item .action-item__menutoggle,\\n.statuses ::v-deep .action-item.action-item--open .action-item__menutoggle {\\n\\tbackground-color: var(--color-main-background-blur);\\n\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\tbackdrop-filter: var(--filter-background-blur);\\n\\topacity: 1 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-hover)!important;\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\\n\\t}\\n}\\n\\n.modal__content {\\n\\tpadding: 32px 16px;\\n\\ttext-align: center;\\n\\n\\tol {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tjustify-content: center;\\n\\t\\tlist-style-type: none;\\n\\t\\tpadding-bottom: 16px;\\n\\t}\\n\\tli {\\n\\t\\tlabel {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 48px 16px 14px 16px;\\n\\t\\t\\tmargin: 8px;\\n\\t\\t\\twidth: 140px;\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t\\ttext-align: left;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 16px;\\n\\t\\t\\t\\twidth: 24px;\\n\\t\\t\\t\\theight: 24px;\\n\\t\\t\\t\\tbackground-size: 24px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Do not invert status icons\\n\\t\\t&:not(.panel-status) label div {\\n\\t\\t\\tfilter: var(--background-invert-if-dark);\\n\\t\\t}\\n\\n\\t\\tinput[type='checkbox'].checkbox + label:before {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tright: 12px;\\n\\t\\t\\ttop: 16px;\\n\\t\\t}\\n\\n\\t\\tinput:focus + label {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\th3 {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:not(:first-of-type) {\\n\\t\\t\\tmargin-top: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Adjust design of 'Get more widgets' button\\n\\t.button {\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: 10px 16px;\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\tp {\\n\\t\\tmax-width: 650px;\\n\\t\\tmargin: 0 auto;\\n\\n\\t\\ta:hover,\\n\\t\\ta:focus {\\n\\t\\t\\tborder-bottom: 2px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t.credits--end {\\n\\t\\tpadding-bottom: 32px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\ta {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n}\\n\\n.flip-list-move {\\n\\ttransition: transform var(--animation-slow);\\n}\\n\\n.statuses {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tjustify-content: center;\\n\\tflex-wrap: wrap;\\n\\tmargin-bottom: 36px;\\n\\n\\t& > li {\\n\\t\\tmargin: 8px;\\n\\t}\\n}\\n</style>\\n<style>\\nhtml, body {\\n\\tbackground-attachment: fixed;\\n}\\n\\n#body-user #header {\\n\\tposition: fixed;\\n}\\n\\n#content {\\n\\toverflow: auto;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4773;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4773: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(22638)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","data","isMobile","this","_isMobile","beforeMount","window","addEventListener","_onResize","beforeDestroy","removeEventListener","methods","document","documentElement","clientWidth","panels","loadState","firstRun","statusInfo","weather","text","t","icon","status","name","components","NcButton","Draggable","NcModal","Pencil","mixins","_getCurrentUser","_getCurrentUser2","isAdmin","getCurrentUser","timer","Date","registeredStatus","callbacks","callbacksStatus","allCallbacksStatus","enabledStatuses","displayName","uid","layout","filter","panelId","modal","appStoreUrl","generateUrl","statuses","computed","greeting","time","getHours","partOfDay","good","morning","generic","withName","undefined","escape","afternoon","evening","night","isActive","panel","indexOf","id","isStatusActive","sortedAllStatuses","Object","keys","slice","sort","sortStatuses","sortedPanels","values","a","b","indexA","indexB","sortedRegisteredStatus","watch","rerenderPanels","app","element","$refs","mounted","Vue","console","error","updateSkipLink","handleScroll","setInterval","disableFirstrunHint","destroyed","register","callback","registerStatus","push","$nextTick","widget","saveLayout","axios","join","saveStatuses","JSON","stringify","showModal","closeModal","updateCheckbox","currentValue","index","splice","setTimeout","getElementsByClassName","setAttribute","updateStatusCheckbox","checked","enableStatus","disableStatus","i","findIndex","s","al","toLowerCase","bl","scrollY","body","classList","add","remove","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","attrs","_v","_s","staticClass","_l","key","ref","refInFor","_b","on","model","value","$$v","expression","swapThreshold","delay","delayOnTouchOnly","touchStartThreshold","class","iconClass","title","loading","scopedSlots","_u","fn","proxy","domProps","$event","target","draggable","_e","__webpack_nonce__","btoa","getRequestToken","VTooltip","OCA","Files","assign","App","fileList","filesClient","OC","getClient","Instance","DashboardApp","$mount","Dashboard","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","length","fulfilled","j","every","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/files-main.js b/dist/files-main.js index f5ecd8b70b7..42050ec28b6 100644 --- a/dist/files-main.js +++ b/dist/files-main.js @@ -1,3 +1,3 @@ /*! For license information please see files-main.js.LICENSE.txt */ -(()=>{"use strict";var e,n={71030:(e,n,i)=>{var o=i(17499),s=i(79954),r=i(31352),a=i(79753),l=i(45994);const c=function(){var t,e,n,i;const o=(null===(t=OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.App)||void 0===n||null===(i=n.currentFileList)||void 0===i?void 0:i.dirInfo)||{path:"/",name:""};return"".concat(o.path,"/").concat(o.name).replace(/\/\//gi,"/")};var d=i(4820),u=i(20144),p=i(62520),h=i(64024),f=i(93455),A=i.n(f),v=i(70110),m=i.n(v);const g=256,w={name:"TemplatePreview",inheritAttrs:!1,props:{basename:{type:String,required:!0},checked:{type:Boolean,default:!1},fileid:{type:[String,Number],required:!0},filename:{type:String,required:!0},previewUrl:{type:String,default:null},hasPreview:{type:Boolean,default:!0},mime:{type:String,required:!0},ratio:{type:Number,default:null}},data:()=>({failedPreview:!1}),computed:{nameWithoutExt(){return this.basename.indexOf(".")>-1?this.basename.split(".").slice(0,-1).join("."):this.basename},id(){return"template-picker-".concat(this.fileid)},realPreviewUrl(){return this.failedPreview&&this.mimeIcon?this.mimeIcon:this.previewUrl?this.previewUrl:(0,l.ts)()?(0,a.generateUrl)("/core/preview?fileId=".concat(this.fileid,"&x=").concat(g,"&y=").concat(g,"&a=1")):(0,a.generateUrl)("/apps/files_sharing/publicpreview/".concat(document.getElementById("sharingToken")&&document.getElementById("sharingToken").value,"?fileId=").concat(this.fileid,"&file=").concat(function(t){const e=(t.startsWith("/")?t:"/".concat(t)).split("/");let n="";return e.forEach((t=>{""!==t&&(n+="/"+encodeURIComponent(t))})),n}(this.filename),"&x=").concat(g,"&y=").concat(g,"&a=1"))},mimeIcon(){return OC.MimeType.getIconUrl(this.mime)}},methods:{onCheck(){this.$emit("check",this.fileid)},onFailure(){this.failedPreview=!0}}};var b=i(93379),C=i.n(b),y=i(7795),_=i.n(y),x=i(90569),S=i.n(x),k=i(3565),I=i.n(k),N=i(19216),E=i.n(N),F=i(44589),B=i.n(F),P=i(3491),D={};D.styleTagTransform=B(),D.setAttributes=I(),D.insert=S().bind(null,"head"),D.domAPI=_(),D.insertStyleElement=E(),C()(P.Z,D),P.Z&&P.Z.locals&&P.Z.locals;var T=i(51900);const z=(0,T.Z)(w,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"template-picker__item"},[e("input",{staticClass:"radio",attrs:{id:t.id,type:"radio",name:"template-picker"},domProps:{checked:t.checked},on:{change:t.onCheck}}),t._v(" "),e("label",{staticClass:"template-picker__label",attrs:{for:t.id}},[e("div",{staticClass:"template-picker__preview",class:t.failedPreview?"template-picker__preview--failed":""},[e("img",{staticClass:"template-picker__image",attrs:{src:t.realPreviewUrl,alt:"",draggable:"false"},on:{error:t.onFailure}})]),t._v(" "),e("span",{staticClass:"template-picker__title"},[t._v("\n\t\t\t"+t._s(t.nameWithoutExt)+"\n\t\t")])])])}),[],!1,null,"6c072a31",null).exports;var L=i(25108);const U={name:"TemplatePicker",components:{NcEmptyContent:A(),NcModal:m(),TemplatePreview:z},props:{logger:{type:Object,required:!0}},data:()=>({checked:-1,loading:!1,name:null,opened:!1,provider:null}),computed:{nameWithoutExt(){return this.name.indexOf(".")>-1?this.name.split(".").slice(0,-1).join("."):this.name},emptyTemplate(){var e,n;return{basename:t("files","Blank"),fileid:-1,filename:this.t("files","Blank"),hasPreview:!1,mime:(null===(e=this.provider)||void 0===e?void 0:e.mimetypes[0])||(null===(n=this.provider)||void 0===n?void 0:n.mimetypes)}},selectedTemplate(){return this.provider.templates.find((t=>t.fileid===this.checked))},style(){const t=(this.provider.ratio?this.provider.ratio:1.77)>1?240:160;return{"--margin":"8px","--width":t+"px","--border":"2px","--fullwidth":t+16+4+"px","--height":this.provider.ratio?Math.round(t/this.provider.ratio)+"px":null}}},methods:{async open(t,e){this.checked=this.emptyTemplate.fileid,this.name=t,this.provider=e;const n=(await async function(){return(await d.default.get((0,a.generateOcsUrl)("apps/files/api/v1/templates"))).data.ocs.data}()).find((t=>t.app===e.app&&t.label===e.label));if(null===n)throw new Error("Failed to match provider in results");this.provider=n,0!==n.templates.length?this.opened=!0:this.onSubmit()},close(){this.checked=this.emptyTemplate.fileid,this.loading=!1,this.name=null,this.opened=!1,this.provider=null},onCheck(t){this.checked=t},async onSubmit(){var t,e,n;this.loading=!0;const i=c(),o=null===(t=OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.App)||void 0===n?void 0:n.currentFileList;var s,r;this.nameWithoutExt===this.name&&(this.logger.debug("Fixed invalid filename",{name:this.name,extension:null===(s=this.provider)||void 0===s?void 0:s.extension}),this.name=this.name+(null===(r=this.provider)||void 0===r?void 0:r.extension));try{var l,u;const t=await async function(t,e,n){return(await d.default.post((0,a.generateOcsUrl)("apps/files/api/v1/templates/create"),{filePath:t,templatePath:e,templateType:n})).data.ocs.data}((0,p.normalize)("".concat(i,"/").concat(this.name)),null===(l=this.selectedTemplate)||void 0===l?void 0:l.filename,null===(u=this.selectedTemplate)||void 0===u?void 0:u.templateType);this.logger.debug("Created new file",t);const e=await(null==o?void 0:o.addAndFetchFileInfo(this.name).then(((t,e)=>e))),n=new OCA.Files.FileInfoModel(e,{filesClient:null==o?void 0:o.filesClient}),s=OCA.Files.fileActions.getDefaultFileAction(t.mime,"file",OC.PERMISSION_ALL);s&&s.action(t.basename,{$file:null==o?void 0:o.findFileEl(this.name),dir:i,fileList:o,fileActions:null==o?void 0:o.fileActions,fileInfoModel:n}),this.close()}catch(t){this.logger.error("Error while creating the new file from template"),L.error(t),(0,h.x2)(this.t("files","Unable to create new file from template"))}finally{this.loading=!1}}}};var V=i(54654),O={};O.styleTagTransform=B(),O.setAttributes=I(),O.insert=S().bind(null,"head"),O.domAPI=_(),O.insertStyleElement=E(),C()(V.Z,O),V.Z&&V.Z.locals&&V.Z.locals;const Z=(0,T.Z)(U,(function(){var t=this,e=t._self._c;return t.opened?e("NcModal",{staticClass:"templates-picker",attrs:{"clear-view-delay":-1,size:"large"},on:{close:t.close}},[e("form",{staticClass:"templates-picker__form",style:t.style,on:{submit:function(e){return e.preventDefault(),e.stopPropagation(),t.onSubmit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("files","Pick a template for {name}",{name:t.nameWithoutExt})))]),t._v(" "),e("ul",{staticClass:"templates-picker__list"},[e("TemplatePreview",t._b({attrs:{checked:t.checked===t.emptyTemplate.fileid},on:{check:t.onCheck}},"TemplatePreview",t.emptyTemplate,!1)),t._v(" "),t._l(t.provider.templates,(function(n){return e("TemplatePreview",t._b({key:n.fileid,attrs:{checked:t.checked===n.fileid,ratio:t.provider.ratio},on:{check:t.onCheck}},"TemplatePreview",n,!1))}))],2),t._v(" "),e("div",{staticClass:"templates-picker__buttons"},[e("input",{staticClass:"primary",attrs:{type:"submit","aria-label":t.t("files","Create a new file with the selected template")},domProps:{value:t.t("files","Create")}})])]),t._v(" "),t.loading?e("NcEmptyContent",{staticClass:"templates-picker__loading",attrs:{icon:"icon-loading"}},[t._v("\n\t\t"+t._s(t.t("files","Creating file"))+"\n\t")]):t._e()],1):t._e()}),[],!1,null,"d46f1dc6",null).exports,q=(0,o.IY)().setApp("files").detectUser().build();u.default.mixin({methods:{t:r.Iu,n:r.uN}});const R=document.createElement("div");R.id="template-picker",document.body.appendChild(R);let j=(0,s.j)("files","templates",[]),M=(0,s.j)("files","templates_path",!1);q.debug("Templates providers",j),q.debug("Templates folder",{templatesPath:M});const $=new(u.default.extend(Z))({name:"TemplatePicker",propsData:{logger:q}});$.$mount("#template-picker"),window.addEventListener("DOMContentLoaded",(function(){if(!M){q.debug("Templates folder not initialized");const t={attach(t){t.addMenuEntry({id:"template-init",displayName:(0,r.Iu)("files","Set up templates folder"),templateName:(0,r.Iu)("files","Templates"),iconClass:"icon-template-add",fileType:"file",actionLabel:(0,r.Iu)("files","Create new templates folder"),actionHandler(e){W(e),t.removeMenuEntry("template-init")}})}};OC.Plugins.register("OCA.Files.NewFileMenu",t)}})),j.forEach(((t,e)=>{const n={attach(n){const i=n.fileList;"files"!==i.id&&"files.public"!==i.id||n.addMenuEntry({id:"template-new-".concat(t.app,"-").concat(e),displayName:t.label,templateName:t.label+t.extension,iconClass:t.iconClass||"icon-file",fileType:"file",actionLabel:t.actionLabel,actionHandler(e){$.open(e,t)}})}};OC.Plugins.register("OCA.Files.NewFileMenu",n)}));const W=async function(t){const e=(c()+"/".concat(t)).replace("//","/");try{q.debug("Initializing the templates directory",{templatePath:e});const t=await d.default.post((0,a.generateOcsUrl)("apps/files/api/v1/templates/path"),{templatePath:e,copySystemTemplates:!0});OCA.Files.App.currentFileList.changeDirectory(e,!0,!0),j=t.data.ocs.data.templates,M=t.data.ocs.data.template_path}catch(t){q.error("Unable to initialize the templates directory"),(0,h.x2)((0,r.Iu)("files","Unable to initialize the templates directory"))}};var G=i(78595);!function(){const t={attach(t){(0,G.Ld)("nextcloud:unified-search.search",(e=>{let{query:n}=e;t.setFilter(n)})),(0,G.Ld)("nextcloud:unified-search.reset",(()=>{this.query=null,t.setFilter("")}))}};window.OC.Plugins.register("OCA.Files.FileList",t)}();var H=i(91770),K=i(78510);const Q=(0,o.IY)().setApp("files").detectUser().build();class Y{constructor(t){var e,n,i;e=this,i=void 0,(n=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(n="_action"))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,this.validateAction(t),this._action=t}get id(){return this._action.id}get displayName(){return this._action.displayName}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get default(){return this._action.default}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(t){if(!t.id||"string"!=typeof t.id)throw new Error("Invalid id");if(!t.displayName||"function"!=typeof t.displayName)throw new Error("Invalid displayName function");if(!t.iconSvgInline||"function"!=typeof t.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!t.exec||"function"!=typeof t.exec)throw new Error("Invalid exec function");if("enabled"in t&&"function"!=typeof t.enabled)throw new Error("Invalid enabled function");if("execBatch"in t&&"function"!=typeof t.execBatch)throw new Error("Invalid execBatch function");if("order"in t&&"number"!=typeof t.order)throw new Error("Invalid order");if("default"in t&&"boolean"!=typeof t.default)throw new Error("Invalid default");if("inline"in t&&"function"!=typeof t.inline)throw new Error("Invalid inline function");if("renderInline"in t&&"function"!=typeof t.renderInline)throw new Error("Invalid renderInline function")}}const J=function(t){void 0===window._nc_fileactions&&(window._nc_fileactions=[],Q.debug("FileActions initialized")),window._nc_fileactions.find((e=>e.id===t.id))?Q.error("FileAction ".concat(t.id," already registered"),{action:t}):window._nc_fileactions.push(t)},X=function(){return window._nc_fileactions||[]};J(new Y({id:"delete",displayName:(t,e)=>"trashbin"===e.id?(0,r.Iu)("files_trashbin","Delete permanently"):(0,r.Iu)("files","Delete"),iconSvgInline:()=>K,enabled:t=>t.length>0&&t.map((t=>t.permissions)).every((t=>0!=(t&H.y3.DELETE))),async exec(t){try{return await d.default.delete(t.source),(0,G.j8)("files:node:deleted",t),!0}catch(e){return Q.error("Error while deleting a file",{error:e,source:t.source,node:t}),!1}},async execBatch(t,e,n){return Promise.all(t.map((t=>this.exec(t,e,n))))},order:100}));var tt=i(48250);const et="details";J(new Y({id:et,displayName:()=>(0,r.Iu)("files","Details"),iconSvgInline:()=>tt,enabled:t=>{var e,n,i;return!(null===(e=window)||void 0===e||null===(n=e.OCA)||void 0===n||null===(i=n.Files)||void 0===i||!i.Sidebar)&&t.some((t=>{var e;return null===(e=t.root)||void 0===e?void 0:e.startsWith("/files/")}))},async exec(t){try{var e,n,i,o,s;return null===(e=window)||void 0===e||null===(n=e.OCA)||void 0===n||null===(i=n.Files)||void 0===i||null===(o=i.Sidebar)||void 0===o||null===(s=o.open)||void 0===s||s.call(o,t.path),null}catch(t){return Q.error("Error while opening sidebar",{error:t}),!1}},default:!0,order:-50}));var nt=i(59305),it=i(23664),ot=i(69680),st=i.n(ot),rt=i(10861),at=i.n(rt),lt=i(64192),ct=i.n(lt),dt=i(33581);const ut=function(){const t=(0,nt.Q_)("files",{state:()=>({files:{},roots:{}}),getters:{getNode:t=>e=>t.files[e],getNodes:t=>e=>e.map((e=>t.files[e])).filter(Boolean),getRoot:t=>e=>t.roots[e]},actions:{updateNodes(t){const e=t.reduce(((t,e)=>e.fileid?(t[e.fileid]=e,t):(Q.warn("Trying to update/set a node without fileid",e),t)),{});u.default.set(this,"files",{...this.files,...e})},deleteNodes(t){t.forEach((t=>{t.fileid&&u.default.delete(this.files,t.fileid)}))},setRoot(t){let{service:e,root:n}=t;u.default.set(this.roots,e,n)},onDeletedNode(t){this.deleteNodes([t])}}})(...arguments);return t._initialized||((0,G.Ld)("files:node:deleted",t.onDeletedNode),t._initialized=!0),t},pt=function(){const t=(0,nt.Q_)("paths",{state:()=>({paths:{}}),getters:{getPath:t=>(e,n)=>{if(t.paths[e])return t.paths[e][n]}},actions:{addPath(t){this.paths[t.service]||u.default.set(this.paths,t.service,{}),u.default.set(this.paths[t.service],t.path,t.fileid)}}})(...arguments);return t._initialized||(t._initialized=!0),t},ht=(0,nt.Q_)("selection",{state:()=>({selected:[],lastSelection:[],lastSelectedIndex:null}),actions:{set(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];u.default.set(this,"selected",t)},setLastIndex(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;u.default.set(this,"lastSelection",t?this.selected:[]),u.default.set(this,"lastSelectedIndex",t)},reset(){u.default.set(this,"selected",[]),u.default.set(this,"lastSelection",[]),u.default.set(this,"lastSelectedIndex",null)}}}),ft=(0,s.j)("files","viewConfigs",{}),At=function(){const t=(0,nt.Q_)("viewconfig",{state:()=>({viewConfig:ft}),getters:{getConfig:t=>e=>t.viewConfig[e]||{}},actions:{onUpdate(t,e,n){this.viewConfig[t]||u.default.set(this.viewConfig,t,{}),u.default.set(this.viewConfig[t],e,n)},async update(t,e,n){d.default.put((0,a.generateUrl)("/apps/files/api/v1/views/".concat(t,"/").concat(e)),{value:n}),(0,G.j8)("files:viewconfig:updated",{view:t,key:e,value:n})},setSortingBy(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"basename",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"files";this.update(e,"sorting_mode",t),this.update(e,"sorting_direction","asc")},toggleSortingDirection(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files";const e="asc"===(this.getConfig(t)||{sorting_direction:"asc"}).sorting_direction?"desc":"asc";this.update(t,"sorting_direction",e)}}}),e=t(...arguments);return e._initialized||((0,G.Ld)("files:viewconfig:updated",(function(t){let{view:n,key:i,value:o}=t;e.onUpdate(n,i,o)})),e._initialized=!0),e};var vt=i(15764),mt=i(64412),gt=i.n(mt),wt=i(44706),bt=i.n(wt);const Ct=u.default.extend({name:"BreadCrumbs",components:{Home:vt.Z,NcBreadcrumbs:bt(),NcBreadcrumb:gt()},props:{path:{type:String,default:"/"}},setup:()=>({filesStore:ut(),pathsStore:pt()}),computed:{currentView(){return this.$navigation.active},dirs(){var t;return["/",...this.path.split("/").filter(Boolean).map((t="/",e=>t+="".concat(e,"/"))).map((t=>t.replace(/^(.+)\/$/,"$1")))]},sections(){return this.dirs.map((t=>{const e={...this.$route,query:{dir:t}};return{dir:t,exact:!0,name:this.getDirDisplayName(t),to:e}}))}},methods:{getNodeFromId(t){return this.filesStore.getNode(t)},getFileIdFromPath(t){var e;return this.pathsStore.getPath(null===(e=this.currentView)||void 0===e?void 0:e.id,t)},getDirDisplayName(e){var n;if("/"===e)return t("files","Home");const i=this.getFileIdFromPath(e),o=this.getNodeFromId(i);return(null==o||null===(n=o.attributes)||void 0===n?void 0:n.displayName)||(0,p.basename)(e)},onClick(t){var e;(null==t||null===(e=t.query)||void 0===e?void 0:e.dir)===this.$route.query.dir&&this.$emit("reload")},ariaLabel(e){var n,i;return(null==e||null===(n=e.to)||void 0===n||null===(i=n.query)||void 0===i?void 0:i.dir)===this.$route.query.dir?t("files","Reload current directory"):t("files",'Go to the "{dir}" directory',e)}}});var yt=i(39959),_t={};_t.styleTagTransform=B(),_t.setAttributes=I(),_t.insert=S().bind(null,"head"),_t.domAPI=_(),_t.insertStyleElement=E(),C()(yt.Z,_t),yt.Z&&yt.Z.locals&&yt.Z.locals;const xt=(0,T.Z)(Ct,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcBreadcrumbs",{attrs:{"data-cy-files-content-breadcrumbs":""}},t._l(t.sections,(function(n,i){return e("NcBreadcrumb",t._b({key:n.dir,attrs:{"aria-label":t.ariaLabel(n),title:t.ariaLabel(n)},nativeOn:{click:function(e){return t.onClick(n.to)}},scopedSlots:t._u([0===i?{key:"icon",fn:function(){return[e("Home",{attrs:{size:20}})]},proxy:!0}:null],null,!0)},"NcBreadcrumb",n,!1))})),1)}),[],!1,null,"68b3b20b",null).exports;var St=i(35212),kt=i(20296),It=i(74139),Nt=i(3443),Et=i.n(Nt),Ft=i(79855),Bt=i(34829),Pt=i(45400),Dt=i.n(Pt),Tt=i(12945),zt=i.n(Tt),Lt=i(20571),Ut=i.n(Lt),Vt=i(4777);const Ot=(0,nt.Q_)("actionsmenu",{state:()=>({opened:null})}),Zt=(0,s.j)("files","config",{show_hidden:!1,crop_image_previews:!0}),qt=function(){const t=(0,nt.Q_)("userconfig",{state:()=>({userConfig:Zt}),actions:{onUpdate(t,e){u.default.set(this.userConfig,t,e)},async update(t,e){await d.default.put((0,a.generateUrl)("/apps/files/api/v1/config/"+t),{value:e}),(0,G.j8)("files:config:updated",{key:t,value:e})}}})(...arguments);return t._initialized||((0,G.Ld)("files:config:updated",(function(e){let{key:n,value:i}=e;t.onUpdate(n,i)})),t._initialized=!0),t},Rt={name:"CustomElementRender",props:{source:{type:Object,required:!0},currentView:{type:Object,required:!0},render:{type:Function,required:!0}},computed:{element(){return this.render(this.source,this.currentView)}},watch:{element(){this.$el.replaceWith(this.element),this.$el=this.element}},mounted(){this.$el.replaceWith(this.element),this.$el=this.element}},jt=(0,T.Z)(Rt,(function(){return(0,this._self._c)("span")}),[],!1,null,null,null).exports;var Mt=i(27856);const $t={name:"CustomSvgIconRender",props:{svg:{type:String,required:!0}},watch:{svg(){this.$el.innerHTML=(0,Mt.sanitize)(this.svg)}},mounted(){this.$el.innerHTML=(0,Mt.sanitize)(this.svg)}};var Wt=i(61959),Gt={};Gt.styleTagTransform=B(),Gt.setAttributes=I(),Gt.insert=S().bind(null,"head"),Gt.domAPI=_(),Gt.insertStyleElement=E(),C()(Wt.Z,Gt),Wt.Z&&Wt.Z.locals&&Wt.Z.locals;const Ht=(0,T.Z)($t,(function(){return(0,this._self._c)("span",{staticClass:"custom-svg-icon"})}),[],!1,null,"93e9b2f4",null).exports,Kt=X(),Qt=u.default.extend({name:"FileEntry",components:{CustomElementRender:jt,CustomSvgIconRender:Ht,FileIcon:Ft.Z,FolderIcon:Bt.default,Fragment:It.H,NcActionButton:Dt(),NcActions:zt(),NcCheckboxRadioSwitch:Ut(),NcLoadingIcon:ct(),StarIcon:Vt.default},props:{active:{type:Boolean,default:!1},isSizeAvailable:{type:Boolean,default:!1},source:{type:Object,required:!0},index:{type:Number,required:!0},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0}},setup(){const t=Ot(),e=ut(),n=function(){const t=(0,nt.Q_)("keyboard",{state:()=>({altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1}),actions:{onEvent(t){t||(t=window.event),u.default.set(this,"altKey",!!t.altKey),u.default.set(this,"ctrlKey",!!t.ctrlKey),u.default.set(this,"metaKey",!!t.metaKey),u.default.set(this,"shiftKey",!!t.shiftKey)}}})(...arguments);return t._initialized||(window.addEventListener("keydown",t.onEvent),window.addEventListener("keyup",t.onEvent),window.addEventListener("mousemove",t.onEvent),t._initialized=!0),t}();return{actionsMenuStore:t,filesStore:e,keyboardStore:n,selectionStore:ht(),userConfigStore:qt()}},data:()=>({backgroundFailed:!1,backgroundImage:"",boundariesElement:document.querySelector(".app-content > .files-list"),loading:""}),computed:{userConfig(){return this.userConfigStore.userConfig},currentView(){return this.$navigation.active},columns(){var t;return this.filesListWidth<512?[]:(null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},fileid(){var t,e,n;return null===(t=this.source)||void 0===t||null===(e=t.fileid)||void 0===e||null===(n=e.toString)||void 0===n?void 0:n.call(e)},displayName(){return this.source.attributes.displayName||this.source.basename},size(){const t=parseInt(this.source.size,10)||0;return"number"!=typeof t||t<0?this.t("files","Pending"):(0,H.sS)(t,!0)},sizeOpacity(){const t=parseInt(this.source.size,10)||0;return!t||t<0?1:.7+(1-.7)*Math.pow(this.source.size/10485760,2)},linkTo(){if("folder"===this.source.type){const t={...this.$route,query:{dir:(0,p.join)(this.dir,this.source.basename)}};return{is:"router-link",title:this.t("files","Open folder {name}",{name:this.displayName}),to:t}}return this.enabledDefaultActions.length>0?{title:this.enabledDefaultActions[0].displayName([this.source],this.currentView),role:"button"}:{href:this.source.source,title:this.t("files","Download file {name}",{name:this.displayName})}},selectedFiles(){return this.selectionStore.selected},isSelected(){var t,e,n;return this.selectedFiles.includes(null===(t=this.source)||void 0===t||null===(e=t.fileid)||void 0===e||null===(n=e.toString)||void 0===n?void 0:n.call(e))},cropPreviews(){return this.userConfig.crop_image_previews},previewUrl(){try{const t=new URL(window.location.origin+this.source.attributes.previewUrl);return t.searchParams.set("x","32"),t.searchParams.set("y","32"),t.searchParams.set("a",!0===this.cropPreviews?"0":"1"),t.href}catch(t){return null}},mimeIconUrl(){var t,e,n;const i=this.source.mime||"application/octet-stream",o=null===(t=window.OC)||void 0===t||null===(e=t.MimeType)||void 0===e||null===(n=e.getIconUrl)||void 0===n?void 0:n.call(e,i);return o?"url(".concat(o,")"):""},enabledActions(){return Kt.filter((t=>!t.enabled||t.enabled([this.source],this.currentView))).sort(((t,e)=>(t.order||0)-(e.order||0)))},enabledInlineActions(){return this.filesListWidth<768?[]:this.enabledActions.filter((t=>{var e;return null==t||null===(e=t.inline)||void 0===e?void 0:e.call(t,this.source,this.currentView)}))},enabledMenuActions(){if(this.filesListWidth<768)return this.enabledDefaultActions.length>0?this.enabledActions.slice(1):this.enabledActions;const t=[...this.enabledInlineActions,...this.enabledActions.filter((t=>!t.inline))];return this.enabledDefaultActions.length>0?t.slice(1):t},enabledDefaultActions(){return[...this.enabledActions.filter((t=>t.default))]},openedMenu:{get(){return this.actionsMenuStore.opened===this.uniqueId},set(t){this.actionsMenuStore.opened=t?this.uniqueId:null}},uniqueId(){return this.source.source.split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)},isFavorite(){return 1===this.source.attributes.favorite}},watch:{active(t,e){if(!1===t&&!0===e)return this.resetState(),void(this.$el.parentNode.style.display="none");this.$el.parentNode.style.display=""},previewUrl(){this.clearImg(),this.debounceIfNotCached()}},mounted(){var t,e;this.debounceGetPreview=(0,kt.debounce)((function(){this.fetchAndApplyPreview()}),150,!1),this.debounceIfNotCached(),null===(t=this.$el.parentNode)||void 0===t||null===(e=t.addEventListener)||void 0===e||e.call(t,"contextmenu",this.onRightClick)},beforeDestroy(){this.resetState()},methods:{async debounceIfNotCached(){var t;if(this.previewUrl)return await(t=this.previewUrl,caches.open("previews").then((function(e){return e.match(t).then((function(t){return!!t}))})))?(this.backgroundImage="url(".concat(this.previewUrl,")"),void(this.backgroundFailed=!1)):void this.debounceGetPreview()},fetchAndApplyPreview(){this.previewUrl&&(this.previewPromise&&this.clearImg(),this.previewPromise=new(Et())(((t,e,n)=>{const i=new Image;i.fetchpriority=this.active?"high":"auto",i.onload=()=>{this.backgroundImage="url(".concat(this.previewUrl,")"),this.backgroundFailed=!1,t(i)},i.onerror=()=>{this.backgroundFailed=!0,e(i)},i.src=this.previewUrl,n((()=>{i.onerror=null,i.onload=null,i.src=""}))})))},resetState(){this.loading="",this.clearImg(),this.openedMenu=!1},clearImg(){this.backgroundImage="",this.backgroundFailed=!1,this.previewPromise&&(this.previewPromise.cancel(),this.previewPromise=null)},async onActionClick(t){const e=t.displayName([this.source],this.currentView);try{this.loading=t.id,u.default.set(this.source,"_loading",!0);const n=await t.exec(this.source,this.currentView,this.dir);if(null===n)return;if(n)return void(0,h.s$)(this.t("files",'"{displayName}" action executed successfully',{displayName:e}));(0,h.x2)(this.t("files",'"{displayName}" action failed',{displayName:e}))}catch(n){Q.error("Error while executing action",{action:t,e:n}),(0,h.x2)(this.t("files",'"{displayName}" action failed',{displayName:e}))}finally{this.loading="",u.default.set(this.source,"_loading",!1)}},execDefaultAction(t){"folder"!==this.source.type&&this.enabledDefaultActions.length>0&&(t.preventDefault(),t.stopPropagation(),this.enabledDefaultActions[0].exec(this.source,this.currentView,this.dir))},openDetailsIfAvailable(t){const e=this.enabledDefaultActions.find((t=>t.id===et));e&&(t.preventDefault(),t.stopPropagation(),e.exec(this.source,this.currentView))},onSelectionChange(t){var e;const n=this.index,i=this.selectionStore.lastSelectedIndex;if(null!==(e=this.keyboardStore)&&void 0!==e&&e.shiftKey&&null!==i){const t=this.selectedFiles.includes(this.fileid),e=Math.min(n,i),o=Math.max(i,n),s=this.selectionStore.lastSelection,r=this.nodes.map((t=>{var e,n;return null===(e=t.fileid)||void 0===e||null===(n=e.toString)||void 0===n?void 0:n.call(e)})).slice(e,o+1),a=[...s,...r].filter((e=>!t||e!==this.fileid));return Q.debug("Shift key pressed, selecting all files in between",{start:e,end:o,filesToSelect:r,isAlreadySelected:t}),void this.selectionStore.set(a)}Q.debug("Updating selection",{selection:t}),this.selectionStore.set(t),this.selectionStore.setLastIndex(n)},onRightClick(t){if(this.openedMenu)return;const e=this.selectedFiles.length>1;this.actionsMenuStore.opened=this.isSelected&&e?"global":this.uniqueId,t.preventDefault(),t.stopPropagation()},t:r.Iu,formatFileSize:H.sS}});var Yt=i(13352),Jt={};Jt.styleTagTransform=B(),Jt.setAttributes=I(),Jt.insert=S().bind(null,"head"),Jt.domAPI=_(),Jt.insertStyleElement=E(),C()(Yt.Z,Jt),Yt.Z&&Yt.Z.locals&&Yt.Z.locals;var Xt=i(37020),te={};te.styleTagTransform=B(),te.setAttributes=I(),te.insert=S().bind(null,"head"),te.domAPI=_(),te.insertStyleElement=E(),C()(Xt.Z,te),Xt.Z&&Xt.Z.locals&&Xt.Z.locals;const ee=(0,T.Z)(Qt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("Fragment",[e("td",{staticClass:"files-list__row-checkbox"},[t.active?e("NcCheckboxRadioSwitch",{attrs:{"aria-label":t.t("files","Select the row for {displayName}",{displayName:t.displayName}),checked:t.selectedFiles,value:t.fileid,name:"selectedFiles"},on:{"update:checked":t.onSelectionChange}}):t._e()],1),t._v(" "),e("td",{staticClass:"files-list__row-name"},[e("a",t._b({ref:"name",on:{click:t.execDefaultAction}},"a",t.linkTo,!1),[e("span",{staticClass:"files-list__row-icon"},["folder"===t.source.type?e("FolderIcon"):t.previewUrl&&!t.backgroundFailed?e("span",{ref:"previewImg",staticClass:"files-list__row-icon-preview",style:{backgroundImage:t.backgroundImage}}):t.mimeIconUrl?e("span",{staticClass:"files-list__row-icon-preview files-list__row-icon-preview--mime",style:{backgroundImage:t.mimeIconUrl}}):e("FileIcon"),t._v(" "),t.isFavorite?e("span",{staticClass:"files-list__row-icon-favorite",attrs:{"aria-label":t.t("files","Favorite")}},[e("StarIcon",{attrs:{"aria-hidden":"true",size:20}})],1):t._e()],1),t._v(" "),e("span",{staticClass:"files-list__row-name-text"},[t._v(t._s(t.displayName))])])]),t._v(" "),e("td",{staticClass:"files-list__row-actions",class:"files-list__row-actions-".concat(t.uniqueId)},[t.active?e("NcActions",{ref:"actionsMenu",attrs:{"boundaries-element":t.boundariesElement,container:t.boundariesElement,disabled:t.source._loading,"force-title":!0,"force-menu":!0,inline:t.enabledInlineActions.length,open:t.openedMenu},on:{"update:open":function(e){t.openedMenu=e}}},t._l(t.enabledMenuActions,(function(n){return e("NcActionButton",{key:n.id,class:"files-list__row-action-"+n.id,on:{click:function(e){return t.onActionClick(n)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading===n.id?e("NcLoadingIcon",{attrs:{size:18}}):e("CustomSvgIconRender",{attrs:{svg:n.iconSvgInline([t.source],t.currentView)}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.displayName([t.source],t.currentView))+"\n\t\t\t")])})),1):t._e()],1),t._v(" "),t.isSizeAvailable?e("td",{staticClass:"files-list__row-size",style:{opacity:t.sizeOpacity},on:{click:t.openDetailsIfAvailable}},[e("span",[t._v(t._s(t.size))])]):t._e(),t._v(" "),t._l(t.columns,(function(n){var i;return e("td",{key:n.id,staticClass:"files-list__row-column-custom",class:"files-list__row-".concat(null===(i=t.currentView)||void 0===i?void 0:i.id,"-").concat(n.id),on:{click:t.openDetailsIfAvailable}},[t.active?e("CustomElementRender",{attrs:{"current-view":t.currentView,render:n.render,source:t.source}}):t._e()],1)}))],2)}),[],!1,null,"0600090e",null).exports,ne=u.default.extend({name:"FilesListFooter",components:{},props:{isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},summary:{type:String,default:""},filesListWidth:{type:Number,default:0}},setup(){const t=pt();return{filesStore:ut(),pathsStore:t}},computed:{currentView(){return this.$navigation.active},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},currentFolder(){var t;if(null===(t=this.currentView)||void 0===t||!t.id)return;if("/"===this.dir)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.dir);return this.filesStore.getNode(e)},columns(){var t;return this.filesListWidth<512?[]:(null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]},totalSize(){var t;return null!==(t=this.currentFolder)&&void 0!==t&&t.size?(0,H.sS)(this.currentFolder.size,!0):(0,H.sS)(this.nodes.reduce(((t,e)=>t+e.size||0),0),!0)}},methods:{classForColumn(t){return{"files-list__row-column-custom":!0,["files-list__row-".concat(this.currentView.id,"-").concat(t.id)]:!0}},t:r.Iu}});var ie=i(97105),oe={};oe.styleTagTransform=B(),oe.setAttributes=I(),oe.insert=S().bind(null,"head"),oe.domAPI=_(),oe.insertStyleElement=E(),C()(ie.Z,oe),ie.Z&&ie.Z.locals&&ie.Z.locals;const se=(0,T.Z)(ne,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",[e("th",{staticClass:"files-list__row-checkbox"},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("files","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"files-list__row-name"},[e("span",{staticClass:"files-list__row-icon"}),t._v(" "),e("span",[t._v(t._s(t.summary))])]),t._v(" "),e("td",{staticClass:"files-list__row-actions"}),t._v(" "),t.isSizeAvailable?e("td",{staticClass:"files-list__column files-list__row-size"},[e("span",[t._v(t._s(t.totalSize))])]):t._e(),t._v(" "),t._l(t.columns,(function(n){var i;return e("th",{key:n.id,class:t.classForColumn(n)},[e("span",[t._v(t._s(null===(i=n.summary)||void 0===i?void 0:i.call(n,t.nodes,t.currentView)))])])}))],2)}),[],!1,null,"e6a083be",null).exports,re=u.default.extend({data:()=>({filesListWidth:null}),created(){const t=document.querySelector("#app-content-vue");this.$resizeObserver=new ResizeObserver((e=>{e.length>0&&e[0].target===t&&(this.filesListWidth=e[0].contentRect.width)})),this.$resizeObserver.observe(t)},beforeDestroy(){this.$resizeObserver.disconnect()}}),ae=X(),le=u.default.extend({name:"FilesListHeaderActions",components:{CustomSvgIconRender:Ht,NcActions:zt(),NcActionButton:Dt(),NcLoadingIcon:ct()},mixins:[re],props:{currentView:{type:Object,required:!0},selectedNodes:{type:Array,default:()=>[]}},setup:()=>({actionsMenuStore:Ot(),filesStore:ut(),selectionStore:ht()}),data:()=>({loading:null}),computed:{dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},enabledActions(){return ae.filter((t=>t.execBatch)).filter((t=>!t.enabled||t.enabled(this.nodes,this.currentView))).sort(((t,e)=>(t.order||0)-(e.order||0)))},nodes(){return this.selectedNodes.map((t=>this.getNode(t))).filter((t=>t))},areSomeNodesLoading(){return this.nodes.some((t=>t._loading))},openedMenu:{get(){return"global"===this.actionsMenuStore.opened},set(t){this.actionsMenuStore.opened=t?"global":null}},inlineActions(){return this.filesListWidth<512?0:this.filesListWidth<768?1:this.filesListWidth<1024?2:3}},methods:{getNode(t){return this.filesStore.getNode(t)},async onActionClick(t){const e=t.displayName(this.nodes,this.currentView),n=this.selectedNodes;try{this.loading=t.id,this.nodes.forEach((t=>{u.default.set(t,"_loading",!0)}));const i=await t.execBatch(this.nodes,this.currentView,this.dir);if(!i.some((t=>null!==t)))return void this.selectionStore.reset();if(i.some((t=>!1===t))){const t=n.filter(((t,e)=>!1===i[e]));return this.selectionStore.set(t),void(0,h.x2)(this.t("files",'"{displayName}" failed on some elements ',{displayName:e}))}(0,h.s$)(this.t("files",'"{displayName}" batch action executed successfully',{displayName:e})),this.selectionStore.reset()}catch(n){Q.error("Error while executing action",{action:t,e:n}),(0,h.x2)(this.t("files",'"{displayName}" action failed',{displayName:e}))}finally{this.loading=null,this.nodes.forEach((t=>{u.default.set(t,"_loading",!1)}))}},t:r.Iu}});var ce=i(97877),de={};de.styleTagTransform=B(),de.setAttributes=I(),de.insert=S().bind(null,"head"),de.domAPI=_(),de.insertStyleElement=E(),C()(ce.Z,de),ce.Z&&ce.Z.locals&&ce.Z.locals;const ue=(0,T.Z)(le,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("th",{staticClass:"files-list__column files-list__row-actions-batch",attrs:{colspan:"2"}},[e("NcActions",{ref:"actionsMenu",attrs:{disabled:!!t.loading||t.areSomeNodesLoading,"force-title":!0,inline:t.inlineActions,"menu-title":t.inlineActions<=1?t.t("files","Actions"):null,open:t.openedMenu},on:{"update:open":function(e){t.openedMenu=e}}},t._l(t.enabledActions,(function(n){return e("NcActionButton",{key:n.id,class:"files-list__row-actions-batch-"+n.id,on:{click:function(e){return t.onActionClick(n)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading===n.id?e("NcLoadingIcon",{attrs:{size:18}}):e("CustomSvgIconRender",{attrs:{svg:n.iconSvgInline(t.nodes,t.currentView)}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t"+t._s(n.displayName(t.nodes,t.currentView))+"\n\t\t")])})),1)],1)}),[],!1,null,"03e57b1e",null).exports;var pe=i(20404),he=i(23873);const fe=u.default.extend({computed:{...(0,nt.rn)(At,["getConfig","setSortingBy","toggleSortingDirection"]),currentView(){return this.$navigation.active},sortingMode(){var t,e;return(null===(t=this.getConfig(this.currentView.id))||void 0===t?void 0:t.sorting_mode)||(null===(e=this.currentView)||void 0===e?void 0:e.defaultSortKey)||"basename"},isAscSorting(){var t;return"asc"===(null===(t=this.getConfig(this.currentView.id))||void 0===t?void 0:t.sorting_direction)}},methods:{toggleSortBy(t){this.sortingMode!==t?this.setSortingBy(t,this.currentView.id):this.toggleSortingDirection(this.currentView.id)}}}),Ae=u.default.extend({name:"FilesListHeaderButton",components:{MenuDown:pe.Z,MenuUp:he.Z,NcButton:at()},mixins:[fe],props:{name:{type:String,required:!0},mode:{type:String,required:!0}},methods:{sortAriaLabel(t){const e=this.isAscSorting?this.t("files","ascending"):this.t("files","descending");return this.t("files","Sort list by {column} ({direction})",{column:t,direction:e})},t:r.Iu}});var ve=i(29252),me={};me.styleTagTransform=B(),me.setAttributes=I(),me.insert=S().bind(null,"head"),me.domAPI=_(),me.insertStyleElement=E(),C()(ve.Z,me),ve.Z&&ve.Z.locals&&ve.Z.locals;const ge=(0,T.Z)(Ae,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcButton",{staticClass:"files-list__column-sort-button",class:{"files-list__column-sort-button--active":t.sortingMode===t.mode},attrs:{"aria-label":t.sortAriaLabel(t.name),type:"tertiary"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.toggleSortBy(t.mode)}}},[t.sortingMode!==t.mode||t.isAscSorting?e("MenuUp",{attrs:{slot:"icon"},slot:"icon"}):e("MenuDown",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t"+t._s(t.name)+"\n")],1)}),[],!1,null,null,null).exports,we=u.default.extend({name:"FilesListHeader",components:{FilesListHeaderButton:ge,NcCheckboxRadioSwitch:Ut(),FilesListHeaderActions:ue},mixins:[fe],props:{isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0}},setup:()=>({filesStore:ut(),selectionStore:ht()}),computed:{currentView(){return this.$navigation.active},columns(){var t;return this.filesListWidth<512?[]:(null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},selectAllBind(){const t=this.isNoneSelected||this.isSomeSelected?this.t("files","Select all"):this.t("files","Unselect all");return{"aria-label":t,checked:this.isAllSelected,indeterminate:this.isSomeSelected,title:t}},selectedNodes(){return this.selectionStore.selected},isAllSelected(){return this.selectedNodes.length===this.nodes.length},isNoneSelected(){return 0===this.selectedNodes.length},isSomeSelected(){return!this.isAllSelected&&!this.isNoneSelected}},methods:{classForColumn(t){return{"files-list__column":!0,"files-list__column--sortable":!!t.sort,"files-list__row-column-custom":!0,["files-list__row-".concat(this.currentView.id,"-").concat(t.id)]:!0}},onToggleAll(t){if(t){const t=this.nodes.map((t=>t.fileid.toString()));Q.debug("Added all nodes to selection",{selection:t}),this.selectionStore.setLastIndex(null),this.selectionStore.set(t)}else Q.debug("Cleared selection"),this.selectionStore.reset()},t:r.Iu}});var be=i(96153),Ce={};Ce.styleTagTransform=B(),Ce.setAttributes=I(),Ce.insert=S().bind(null,"head"),Ce.domAPI=_(),Ce.insertStyleElement=E(),C()(be.Z,Ce),be.Z&&be.Z.locals&&be.Z.locals;const ye=(0,T.Z)(we,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",[e("th",{staticClass:"files-list__column files-list__row-checkbox"},[e("NcCheckboxRadioSwitch",t._b({on:{"update:checked":t.onToggleAll}},"NcCheckboxRadioSwitch",t.selectAllBind,!1))],1),t._v(" "),t.isNoneSelected?[e("th",{staticClass:"files-list__column files-list__row-name files-list__column--sortable",on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.toggleSortBy("basename")}}},[e("span",{staticClass:"files-list__row-icon"}),t._v(" "),e("FilesListHeaderButton",{attrs:{name:t.t("files","Name"),mode:"basename"}})],1),t._v(" "),e("th",{staticClass:"files-list__row-actions"}),t._v(" "),t.isSizeAvailable?e("th",{staticClass:"files-list__column files-list__row-size",class:{"files-list__column--sortable":t.isSizeAvailable}},[e("FilesListHeaderButton",{attrs:{name:t.t("files","Size"),mode:"size"}})],1):t._e(),t._v(" "),t._l(t.columns,(function(n){return e("th",{key:n.id,class:t.classForColumn(n)},[n.sort?e("FilesListHeaderButton",{attrs:{name:n.title,mode:n.id}}):e("span",[t._v("\n\t\t\t\t"+t._s(n.title)+"\n\t\t\t")])],1)}))]:e("FilesListHeaderActions",{attrs:{"current-view":t.currentView,"selected-nodes":t.selectedNodes}})],2)}),[],!1,null,"76b6186a",null).exports,_e=u.default.extend({name:"FilesListVirtual",components:{RecycleScroller:St.EK,FileEntry:ee,FilesListHeader:ye,FilesListFooter:se},mixins:[re],props:{currentView:{type:Object,required:!0},nodes:{type:Array,required:!0}},data:()=>({FileEntry:ee}),computed:{files(){return this.nodes.filter((t=>"file"===t.type))},summaryFile(){const t=this.files.length;return(0,r.uN)("files","{count} file","{count} files",t,{count:t})},summaryFolder(){const t=this.nodes.length-this.files.length;return(0,r.uN)("files","{count} folder","{count} folders",t,{count:t})},summary(){return(0,r.Iu)("files","{summaryFile} and {summaryFolder}",this)},isSizeAvailable(){return!(this.filesListWidth<768)&&this.nodes.some((t=>void 0!==t.attributes.size))}},mounted(){const t=this.$el.querySelectorAll(".vue-recycle-scroller__slot");t[0].setAttribute("role","thead"),t[1].setAttribute("role","tfoot")},methods:{getFileId:t=>t.fileid,t:r.Iu}});var xe=i(76775),Se={};Se.styleTagTransform=B(),Se.setAttributes=I(),Se.insert=S().bind(null,"head"),Se.domAPI=_(),Se.insertStyleElement=E(),C()(xe.Z,Se),xe.Z&&xe.Z.locals&&xe.Z.locals;const ke=(0,T.Z)(_e,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("RecycleScroller",{ref:"recycleScroller",staticClass:"files-list",attrs:{"key-field":"source",items:t.nodes,"item-size":55,"table-mode":!0,"item-class":"files-list__row","item-tag":"tr","list-class":"files-list__body","list-tag":"tbody",role:"table"},scopedSlots:t._u([{key:"default",fn:function(n){let{item:i,active:o,index:s}=n;return[e("FileEntry",{attrs:{active:o,index:s,"is-size-available":t.isSizeAvailable,"files-list-width":t.filesListWidth,nodes:t.nodes,source:i}})]}},{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.currentView.caption||"")+"\n\t\t\t"+t._s(t.t("files","This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list."))+"\n\t\t")]),t._v(" "),e("FilesListHeader",{attrs:{"files-list-width":t.filesListWidth,"is-size-available":t.isSizeAvailable,nodes:t.nodes}})]},proxy:!0},{key:"after",fn:function(){return[e("FilesListFooter",{attrs:{"files-list-width":t.filesListWidth,"is-size-available":t.isSizeAvailable,nodes:t.nodes,summary:t.summary}})]},proxy:!0}])})}),[],!1,null,"640a8bb8",null).exports;var Ie=i(14222);function Ne(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const Ee=class{constructor(){Ne(this,"_views",[]),Ne(this,"_currentView",null),Q.debug("Navigation service initialized")}register(t){try{Be(t),Fe(t,this._views)}catch(e){throw e instanceof Error&&Q.error(e.message,{view:t}),e}t.legacy&&Q.warn("Legacy view detected, please migrate to Vue"),t.iconClass&&(t.legacy=!0),this._views.push(t)}remove(t){const e=this._views.findIndex((e=>e.id===t));-1!==e&&this._views.splice(e,1)}get views(){return this._views}setActive(t){this._currentView=t}get active(){return this._currentView}},Fe=function(t,e){if(e.find((e=>e.id===t.id)))throw new Error("Navigation id ".concat(t.id," is already registered"));return!0},Be=function(t){if(!t.id||"string"!=typeof t.id)throw new Error("Navigation id is required and must be a string");if(!t.name||"string"!=typeof t.name)throw new Error("Navigation name is required and must be a string");if(!t.legacy){if(!t.getContents||"function"!=typeof t.getContents)throw new Error("Navigation getContents is required and must be a function");if(!t.icon||"string"!=typeof t.icon||!(0,Ie.Z)(t.icon))throw new Error("Navigation icon is required and must be a valid svg string")}if(!("order"in t)||"number"!=typeof t.order)throw new Error("Navigation order is required and must be a number");if(t.columns&&t.columns.forEach(Pe),t.emptyView&&"function"!=typeof t.emptyView)throw new Error("Navigation emptyView must be a function");if(t.parent&&"string"!=typeof t.parent)throw new Error("Navigation parent must be a string");if("sticky"in t&&"boolean"!=typeof t.sticky)throw new Error("Navigation sticky must be a boolean");if("expanded"in t&&"boolean"!=typeof t.expanded)throw new Error("Navigation expanded must be a boolean");if(t.defaultSortKey&&"string"!=typeof t.defaultSortKey)throw new Error("Navigation defaultSortKey must be a string");return!0},Pe=function(t){if(!t.id||"string"!=typeof t.id)throw new Error("A column id is required");if(!t.title||"string"!=typeof t.title)throw new Error("A column title is required");if(!t.render||"function"!=typeof t.render)throw new Error("A render function is required");if(t.sort&&"function"!=typeof t.sort)throw new Error("Column sortFunction must be a function");if(t.summary&&"function"!=typeof t.summary)throw new Error("Column summary must be a function");return!0},De=u.default.extend({name:"FilesList",components:{BreadCrumbs:xt,FilesListVirtual:ke,NcAppContent:st(),NcButton:at(),NcEmptyContent:A(),NcLoadingIcon:ct(),TrashCan:dt.Z},mixins:[fe],setup(){const t=pt();return{filesStore:ut(),pathsStore:t,selectionStore:ht(),viewConfigStore:At()}},data:()=>({loading:!0,promise:null}),computed:{currentView(){return this.$navigation.active||this.$navigation.views.find((t=>"files"===t.id))},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},currentFolder(){var t;if(null===(t=this.currentView)||void 0===t||!t.id)return;if("/"===this.dir)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.dir);return this.filesStore.getNode(e)},dirContents(){var t,e;if(!this.currentView)return[];const n=((null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]).find((t=>t.id===this.sortingMode));if(null!=n&&n.sort&&"function"==typeof n.sort){var i;const t=[...((null===(i=this.currentFolder)||void 0===i?void 0:i._children)||[]).map(this.getNode).filter((t=>t))].sort(n.sort);return this.isAscSorting?t:t.reverse()}return(0,it.X)([...((null===(e=this.currentFolder)||void 0===e?void 0:e._children)||[]).map(this.getNode).filter((t=>t))],[..."basename"===this.sortingMode?[t=>"folder"!==t.type]:[],t=>t[this.sortingMode],t=>t.basename],this.isAscSorting?["asc","asc","asc"]:["desc","desc","desc"])},isEmptyDir(){return 0===this.dirContents.length},isRefreshing(){return void 0!==this.currentFolder&&!this.isEmptyDir&&this.loading},toPreviousDir(){const t=this.dir.split("/").slice(0,-1).join("/")||"/";return{...this.$route,query:{dir:t}}}},watch:{currentView(t,e){(null==t?void 0:t.id)!==(null==e?void 0:e.id)&&(Q.debug("View changed",{newView:t,oldView:e}),this.selectionStore.reset(),this.fetchContent())},dir(t,e){var n,i;Q.debug("Directory changed",{newDir:t,oldDir:e}),this.selectionStore.reset(),this.fetchContent(),null!==(n=this.$refs)&&void 0!==n&&null!==(i=n.filesListVirtual)&&void 0!==i&&i.$el&&(this.$refs.filesListVirtual.$el.scrollTop=0)}},methods:{async fetchContent(){var t,e;if(null!==(t=this.currentView)&&void 0!==t&&t.legacy)return;this.loading=!0;const n=this.dir,i=this.currentView;"function"==typeof(null===(e=this.promise)||void 0===e?void 0:e.cancel)&&(this.promise.cancel(),Q.debug("Cancelled previous ongoing fetch")),this.promise=i.getContents(n);try{const{folder:t,contents:e}=await this.promise;Q.debug("Fetched contents",{dir:n,folder:t,contents:e}),this.filesStore.updateNodes(e),t._children=e.map((t=>t.fileid)),"/"===n?this.filesStore.setRoot({service:i.id,root:t}):t.fileid?(this.filesStore.updateNodes([t]),this.pathsStore.addPath({service:i.id,fileid:t.fileid,path:n})):Q.error("Invalid root folder returned",{dir:n,folder:t,currentView:i}),e.filter((t=>"folder"===t.type)).forEach((t=>{this.pathsStore.addPath({service:i.id,fileid:t.fileid,path:(0,p.join)(n,t.basename)})}))}catch(t){Q.error("Error while fetching content",{error:t})}finally{this.loading=!1}},getNode(t){return this.filesStore.getNode(t)},t:r.Iu}});var Te=i(1508),ze={};ze.styleTagTransform=B(),ze.setAttributes=I(),ze.insert=S().bind(null,"head"),ze.domAPI=_(),ze.insertStyleElement=E(),C()(Te.Z,ze),Te.Z&&Te.Z.locals&&Te.Z.locals;const Le=(0,T.Z)(De,(function(){var t,e,n=this,i=n._self._c;return n._self._setupProxy,i("NcAppContent",{directives:[{name:"show",rawName:"v-show",value:!(null!==(t=n.currentView)&&void 0!==t&&t.legacy),expression:"!currentView?.legacy"}],class:{"app-content--hidden":null===(e=n.currentView)||void 0===e?void 0:e.legacy},attrs:{"data-cy-files-content":""}},[i("div",{staticClass:"files-list__header"},[i("BreadCrumbs",{attrs:{path:n.dir},on:{reload:n.fetchContent}}),n._v(" "),n.isRefreshing?i("NcLoadingIcon",{staticClass:"files-list__refresh-icon"}):n._e()],1),n._v(" "),n.loading&&!n.isRefreshing?i("NcLoadingIcon",{staticClass:"files-list__loading-icon",attrs:{size:38,title:n.t("files","Loading current folder")}}):!n.loading&&n.isEmptyDir?i("NcEmptyContent",{attrs:{title:n.t("files","No files in here"),description:n.t("files","No files or folders have been deleted yet"),"data-cy-files-content-empty":""},scopedSlots:n._u([{key:"action",fn:function(){return["/"!==n.dir?i("NcButton",{attrs:{"aria-label":"t('files', 'Go to the previous folder')",type:"primary",to:n.toPreviousDir}},[n._v("\n\t\t\t\t"+n._s(n.t("files","Go back"))+"\n\t\t\t")]):n._e()]},proxy:!0},{key:"icon",fn:function(){return[i("TrashCan")]},proxy:!0}])}):i("FilesListVirtual",{ref:"filesListVirtual",attrs:{"current-view":n.currentView,nodes:n.dirContents}})],1)}),[],!1,null,"66068cbb",null).exports;var Ue=i(57638),Ve=i(55209),Oe=i.n(Ve),Ze=i(14032),qe=i.n(Ze),Re=i(91211),je=i.n(Re);var Me=i(28615),$e=i(74184),We=i(48959),Ge=i.n(We);const He={name:"NavigationQuota",components:{ChartPie:$e.Z,NcAppNavigationItem:qe(),NcProgressBar:Ge()},data:()=>({loadingStorageStats:!1,storageStats:(0,s.j)("files","storageStats",null)}),computed:{storageStatsTitle(){var t,e,n;const i=(0,H.sS)(null===(t=this.storageStats)||void 0===t?void 0:t.used),o=(0,H.sS)(null===(e=this.storageStats)||void 0===e?void 0:e.quota);return(null===(n=this.storageStats)||void 0===n?void 0:n.quota)<0?this.t("files","{usedQuotaByte} used",{usedQuotaByte:i}):this.t("files","{used} of {quota} used",{used:i,quota:o})},storageStatsTooltip(){return this.storageStats.relative?this.t("files","{relative}% used",this.storageStats):""}},beforeMount(){setInterval(this.throttleUpdateStorageStats,6e4),(0,G.Ld)("files:node:created",this.throttleUpdateStorageStats),(0,G.Ld)("files:node:deleted",this.throttleUpdateStorageStats),(0,G.Ld)("files:node:moved",this.throttleUpdateStorageStats),(0,G.Ld)("files:node:updated",this.throttleUpdateStorageStats)},methods:{debounceUpdateStorageStats:(0,Me.D)(200,(function(t){this.updateStorageStats(t)})),throttleUpdateStorageStats:(0,Me.P)(1e3,(function(t){this.updateStorageStats(t)})),async updateStorageStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!this.loadingStorageStats){this.loadingStorageStats=!0;try{var n;const t=await d.default.get((0,a.generateUrl)("/apps/files/api/v1/stats"));if(null==t||null===(n=t.data)||void 0===n||!n.data)throw new Error("Invalid storage stats");this.storageStats=t.data.data}catch(n){Q.error("Could not refresh storage stats",{error:n}),e&&(0,h.x2)(t("files","Could not refresh storage stats"))}finally{this.loadingStorageStats=!1}}},t:r.Iu}};var Ke=i(93582),Qe={};Qe.styleTagTransform=B(),Qe.setAttributes=I(),Qe.insert=S().bind(null,"head"),Qe.domAPI=_(),Qe.insertStyleElement=E(),C()(Ke.Z,Qe),Ke.Z&&Ke.Z.locals&&Ke.Z.locals;const Ye=(0,T.Z)(He,(function(){var t=this,e=t._self._c;return t.storageStats?e("NcAppNavigationItem",{staticClass:"app-navigation-entry__settings-quota",class:{"app-navigation-entry__settings-quota--not-unlimited":t.storageStats.quota>=0},attrs:{"aria-label":t.t("files","Storage informations"),loading:t.loadingStorageStats,name:t.storageStatsTitle,title:t.storageStatsTooltip,"data-cy-files-navigation-settings-quota":""},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.debounceUpdateStorageStats.apply(null,arguments)}}},[e("ChartPie",{attrs:{slot:"icon",size:20},slot:"icon"}),t._v(" "),t.storageStats.quota>=0?e("NcProgressBar",{attrs:{slot:"extra",error:t.storageStats.relative>80,value:Math.min(t.storageStats.relative,100)},slot:"extra"}):t._e()],1):t._e()}),[],!1,null,"918797b2",null).exports;var Je=i(68988),Xe=i.n(Je),tn=i(16809),en=i.n(tn),nn=i(70386),on=i(36029),sn=i.n(on);const rn={name:"Setting",props:{el:{type:Function,required:!0}},mounted(){this.$el.appendChild(this.el())}},an=(0,T.Z)(rn,(function(){return(0,this._self._c)("div")}),[],!1,null,null,null).exports,ln={name:"Settings",components:{Clipboard:nn.Z,NcAppSettingsDialog:Xe(),NcAppSettingsSection:en(),NcCheckboxRadioSwitch:Ut(),NcInputField:sn(),Setting:an},props:{open:{type:Boolean,default:!1}},setup:()=>({userConfigStore:qt()}),data(){var t,e,n,i;return{settings:(null===(t=window.OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.Settings)||void 0===n?void 0:n.settings)||[],webdavUrl:(0,a.generateRemoteUrl)("dav/files/"+encodeURIComponent(null===(i=(0,l.ts)())||void 0===i?void 0:i.uid)),webdavDocs:"https://docs.nextcloud.com/server/stable/go.php?to=user-webdav",appPasswordUrl:(0,a.generateUrl)("/settings/user/security#generate-app-token-section"),webdavUrlCopied:!1}},computed:{userConfig(){return this.userConfigStore.userConfig}},beforeMount(){this.settings.forEach((t=>t.open()))},beforeDestroy(){this.settings.forEach((t=>t.close()))},methods:{onClose(){this.$emit("close")},setConfig(t,e){this.userConfigStore.update(t,e)},async copyCloudId(){document.querySelector("input#webdav-url-input").select(),navigator.clipboard?(await navigator.clipboard.writeText(this.webdavUrl),this.webdavUrlCopied=!0,(0,h.s$)(t("files","WebDAV URL copied to clipboard")),setTimeout((()=>{this.webdavUrlCopied=!1}),5e3)):(0,h.x2)(t("files","Clipboard is not available"))},t:r.Iu}},cn=ln;var dn=i(35662),un={};un.styleTagTransform=B(),un.setAttributes=I(),un.insert=S().bind(null,"head"),un.domAPI=_(),un.insertStyleElement=E(),C()(dn.Z,un),dn.Z&&dn.Z.locals&&dn.Z.locals;const pn=(0,T.Z)(cn,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.open,"show-navigation":!0,title:t.t("files","Files settings")},on:{"update:open":t.onClose}},[e("NcAppSettingsSection",{attrs:{id:"settings",title:t.t("files","Files settings")}},[e("NcCheckboxRadioSwitch",{attrs:{checked:t.userConfig.show_hidden},on:{"update:checked":function(e){return t.setConfig("show_hidden",e)}}},[t._v("\n\t\t\t"+t._s(t.t("files","Show hidden files"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{checked:t.userConfig.crop_image_previews},on:{"update:checked":function(e){return t.setConfig("crop_image_previews",e)}}},[t._v("\n\t\t\t"+t._s(t.t("files","Crop image previews"))+"\n\t\t")])],1),t._v(" "),0!==t.settings.length?e("NcAppSettingsSection",{attrs:{id:"more-settings",title:t.t("files","Additional settings")}},[t._l(t.settings,(function(t){return[e("Setting",{key:t.name,attrs:{el:t.el}})]}))],2):t._e(),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"webdav",title:t.t("files","WebDAV")}},[e("NcInputField",{attrs:{id:"webdav-url-input","show-trailing-button":!0,success:t.webdavUrlCopied,"trailing-button-label":t.t("files","Copy to clipboard"),value:t.webdavUrl,readonly:"readonly",type:"url"},on:{focus:function(t){return t.target.select()},"trailing-button-click":t.copyCloudId},scopedSlots:t._u([{key:"trailing-button-icon",fn:function(){return[e("Clipboard",{attrs:{size:20}})]},proxy:!0}])}),t._v(" "),e("em",[e("a",{staticClass:"setting-link",attrs:{href:t.webdavDocs,target:"_blank",rel:"noreferrer noopener"}},[t._v("\n\t\t\t\t"+t._s(t.t("files","Use this address to access your Files via WebDAV"))+" ↗\n\t\t\t")])]),t._v(" "),e("br"),t._v(" "),e("em",[e("a",{staticClass:"setting-link",attrs:{href:t.appPasswordUrl}},[t._v("\n\t\t\t\t"+t._s(t.t("files","If you have enabled 2FA, you must create and use a new app password by clicking here."))+" ↗\n\t\t\t")])])],1)],1)}),[],!1,null,"76ca5d1f",null).exports,hn={name:"Navigation",components:{Cog:Ue.default,NavigationQuota:Ye,NcAppNavigation:Oe(),NcAppNavigationItem:qe(),NcIconSvgWrapper:je(),SettingsModal:pn},props:{Navigation:{type:Ee,required:!0}},setup:()=>({viewConfigStore:At()}),data:()=>({settingsOpened:!1}),computed:{currentViewId(){var t,e;return(null===(t=this.$route)||void 0===t||null===(e=t.params)||void 0===e?void 0:e.view)||"files"},currentView(){return this.views.find((t=>t.id===this.currentViewId))},views(){return this.Navigation.views},parentViews(){return this.views.filter((t=>!t.parent)).sort(((t,e)=>t.order-e.order))},childViews(){return this.views.filter((t=>!!t.parent)).reduce(((t,e)=>(t[e.parent]=[...t[e.parent]||[],e],t[e.parent].sort(((t,e)=>t.order-e.order)),t)),{})}},watch:{currentView(t,e){(null==t?void 0:t.id)!==(null==e?void 0:e.id)&&(this.Navigation.setActive(t),Q.debug("Navigation changed",{id:t.id,view:t}),this.showView(t,e))}},beforeMount(){this.currentView&&(Q.debug("Navigation mounted. Showing requested view",{view:this.currentView}),this.showView(this.currentView)),(0,G.Ld)("files:legacy-navigation:changed",this.onLegacyNavigationChanged),(0,G.Ld)("files:legacy-view:initialized",(()=>{Q.debug("Legacy view initialized",{...this.currentView}),this.showView(this.currentView)}))},methods:{showView(t,e){var n,i,o,s,r;if(null===(n=window)||void 0===n||null===(i=n.OCA)||void 0===i||null===(o=i.Files)||void 0===o||null===(s=o.Sidebar)||void 0===s||null===(r=s.close)||void 0===r||r.call(s),null!=t&&t.legacy){const e=document.querySelector("#app-content #app-content-"+this.currentView.id+".viewcontainer");document.querySelectorAll("#app-content .viewcontainer").forEach((t=>{t.classList.add("hidden")})),e.classList.remove("hidden");const{dir:n="/"}=OC.Util.History.parseUrlQuery(),i={itemId:t.id,dir:n};Q.debug("Triggering legacy navigation event",i),window.jQuery(e).trigger(new window.jQuery.Event("show",i)),window.jQuery(e).trigger(new window.jQuery.Event("urlChanged",i))}this.Navigation.setActive(t),function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}(t.name),(0,G.j8)("files:navigation:changed",t)},onLegacyNavigationChanged(){let{id:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:"files"};const e=this.Navigation.views.find((e=>e.id===t));e&&e.legacy&&e.id!==this.currentView.id&&(this.$router.replace({...this.$route,params:{view:e.id}}),this.Navigation.setActive(e),this.showView(e))},onToggleExpand(t){const e=this.isExpanded(t);t.expanded=!e,this.viewConfigStore.update(t.id,"expanded",!e)},isExpanded(t){var e;return"boolean"==typeof(null===(e=this.viewConfigStore.getConfig(t.id))||void 0===e?void 0:e.expanded)?!0===this.viewConfigStore.getConfig(t.id).expanded:!0===t.expanded},generateToNavigation(t){if(t.params){const{dir:e,fileid:n}=t.params;return{name:"filelist",params:t.params,query:{dir:e,fileid:n}}}return{name:"filelist",params:{view:t.id}}},openSettings(){this.settingsOpened=!0},onSettingsClose(){this.settingsOpened=!1},t:r.Iu}},fn=hn;var An=i(87289),vn={};vn.styleTagTransform=B(),vn.setAttributes=I(),vn.insert=S().bind(null,"head"),vn.domAPI=_(),vn.insertStyleElement=E(),C()(An.Z,vn),An.Z&&An.Z.locals&&An.Z.locals;const mn=(0,T.Z)(fn,(function(){var t=this,e=t._self._c;return e("NcAppNavigation",{attrs:{"data-cy-files-navigation":""},scopedSlots:t._u([{key:"list",fn:function(){return t._l(t.parentViews,(function(n){return e("NcAppNavigationItem",{key:n.id,attrs:{"allow-collapse":!0,"data-cy-files-navigation-item":n.id,icon:n.iconClass,open:t.isExpanded(n),pinned:n.sticky,title:n.name,to:t.generateToNavigation(n)},on:{"update:open":function(e){return t.onToggleExpand(n)}}},[n.icon?e("NcIconSvgWrapper",{attrs:{slot:"icon",svg:n.icon},slot:"icon"}):t._e(),t._v(" "),t._l(t.childViews[n.id],(function(n){return e("NcAppNavigationItem",{key:n.id,attrs:{"data-cy-files-navigation-item":n.id,exact:!0,icon:n.iconClass,title:n.name,to:t.generateToNavigation(n)}},[n.icon?e("NcIconSvgWrapper",{attrs:{slot:"icon",svg:n.icon},slot:"icon"}):t._e()],1)}))],2)}))},proxy:!0},{key:"footer",fn:function(){return[e("ul",{staticClass:"app-navigation-entry__settings"},[e("NavigationQuota"),t._v(" "),e("NcAppNavigationItem",{attrs:{"aria-label":t.t("files","Open the files app settings"),title:t.t("files","Files settings"),"data-cy-files-navigation-settings-button":""},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openSettings.apply(null,arguments)}}},[e("Cog",{attrs:{slot:"icon",size:20},slot:"icon"})],1)],1)]},proxy:!0}])},[t._v(" "),t._v(" "),e("SettingsModal",{attrs:{open:t.settingsOpened,"data-cy-files-navigation-settings":""},on:{close:t.onSettingsClose}})],1)}),[],!1,null,"657a978e",null).exports,gn=function(t){let{id:e,name:n,order:i,icon:o,parent:s,classes:r="",expanded:a,params:l}=t;OCP.Files.Navigation.register({id:e,name:n,order:i,params:l,parent:s,expanded:!0===a,iconClass:o?"icon-".concat(o):"nav-icon-"+e,legacy:!0,sticky:r.includes("pinned")})};var wn=i(78345),bn=i(97047);u.default.use(wn.ZP);const Cn=new wn.ZP({mode:"history",base:(0,a.generateUrl)("/apps/files",""),linkActiveClass:"active",routes:[{path:"/",alias:"/files"},{path:"/:view/:fileid?",name:"filelist",props:!0}],stringifyQuery(t){const e=bn.Z.stringify(t).replace(/%2F/gim,"/");return e?"?"+e:""}});function yn(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var _n,xn,Sn=i(25108);window.OCA.Files=null!==(_n=window.OCA.Files)&&void 0!==_n?_n:{},window.OCP.Files=null!==(xn=window.OCP.Files)&&void 0!==xn?xn:{};const kn=new class{constructor(t){var e,n,i;e=this,i=void 0,(n=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(n="_router"))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,this._router=t}goTo(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._router.push({path:t,replace:e})}goToRoute(t,e,n,i){return this._router.push({name:t,query:n,params:e,replace:i})}}(Cn);Object.assign(window.OCP.Files,{Router:kn}),u.default.use(nt.og);const In=(0,nt.WB)(),Nn=new Ee;Object.assign(window.OCP.Files,{Navigation:Nn}),u.default.prototype.$navigation=Nn;const En=new class{constructor(){var t,e,n;t=this,n=void 0,(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e="_settings"))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,this._settings=[],Sn.debug("OCA.Files.Settings initialized")}register(t){return this._settings.filter((e=>e.name===t.name)).length>0?(Sn.error("A setting with the same name is already registered"),!1):(this._settings.push(t),!0)}get settings(){return this._settings}};Object.assign(window.OCA.Files,{Settings:En}),Object.assign(window.OCA.Files.Settings,{Setting:class{constructor(t,e){let{el:n,open:i,close:o}=e;yn(this,"_close",void 0),yn(this,"_el",void 0),yn(this,"_name",void 0),yn(this,"_open",void 0),this._name=t,this._el=n,this._open=i,this._close=o,"function"!=typeof this._open&&(this._open=()=>{}),"function"!=typeof this._close&&(this._close=()=>{})}get name(){return this._name}get el(){return this._el}get open(){return this._open}get close(){return this._close}}}),new(u.default.extend(mn))({name:"FilesNavigationRoot",propsData:{Navigation:Nn},router:Cn,pinia:In}).$mount("#app-navigation-files"),new(u.default.extend(Le))({name:"FilesListRoot",router:Cn,pinia:In}).$mount("#app-content-vue"),function(){const t=Object.values((0,s.j)("files","navigation",{}));t.length>0&&(Q.debug("Legacy files views detected. Processing...",t),t.forEach((t=>{gn(t),t.sublist&&t.sublist.forEach((e=>gn({...e,parent:t.id})))})))}(),"serviceWorker"in navigator?window.addEventListener("load",(async()=>{try{const t=(0,a.generateUrl)("/apps/files/preview-service-worker.js",{},{noRewrite:!0}),e=await navigator.serviceWorker.register(t,{scope:"/"});Q.debug("SW registered: ",{registration:e})}catch(t){Q.error("SW registration failed: ",{error:t})}})):Q.debug("Service Worker is not enabled on this browser.")},39959:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}","",{version:3,sources:["webpack://./apps/files/src/components/BreadCrumbs.vue"],names:[],mappings:"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA",sourcesContent:["\n.breadcrumb {\n\t// Take as much space as possible\n\tflex: 1 1 100% !important;\n\twidth: 100%;\n\n\t::v-deep a {\n\t\tcursor: pointer !important;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},61959:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".custom-svg-icon[data-v-93e9b2f4]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-93e9b2f4] svg{height:22px;width:22px;fill:currentColor}","",{version:3,sources:["webpack://./apps/files/src/components/CustomSvgIconRender.vue"],names:[],mappings:"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA",sourcesContent:["\n.custom-svg-icon {\n\tdisplay: flex;\n\talign-items: center;\n\talign-self: center;\n\tjustify-content: center;\n\tjustify-self: center;\n\twidth: 44px;\n\theight: 44px;\n\topacity: 1;\n\n\t::v-deep svg {\n\t\t// mdi icons have a size of 24px\n\t\t// 22px results in roughly 16px inner size\n\t\theight: 22px;\n\t\twidth: 22px;\n\t\tfill: currentColor;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},13352:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,"tr[data-v-0600090e]:hover,tr[data-v-0600090e]:focus,tr[data-v-0600090e]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-0600090e]:not([style*=background]){background:var(--color-loading-dark)}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry.vue"],names:[],mappings:"AAGC,+EAGC,6CAAA,CAKF,wEACI,oCAAA",sourcesContent:["\n/* Hover effect on tbody lines only */\ntr {\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n}\n\n/* Preview not loaded animation effect */\n.files-list__row-icon-preview:not([style*='background']) {\n background: var(--color-loading-dark);\n\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\n}\n"],sourceRoot:""}]);const a=r},97105:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,"tr[data-v-e6a083be]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-e6a083be]{user-select:none;color:var(--color-text-maxcontrast) !important}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListFooter.vue"],names:[],mappings:"AAEA,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA",sourcesContent:["\n// Scoped row\ntr {\n\tpadding-bottom: 300px;\n\tborder-top: 1px solid var(--color-border);\n\t// Prevent hover effect on the whole row\n\tbackground-color: transparent !important;\n\tborder-bottom: none !important;\n}\n\ntd {\n\tuser-select: none;\n\t// Make sure the cell colors don't apply to column headers\n\tcolor: var(--color-text-maxcontrast) !important;\n}\n\n"],sourceRoot:""}]);const a=r},96153:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list__column[data-v-76b6186a]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-76b6186a]{cursor:pointer}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeader.vue"],names:[],mappings:"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA",sourcesContent:["\n.files-list__column {\n\tuser-select: none;\n\t// Make sure the cell colors don't apply to column headers\n\tcolor: var(--color-text-maxcontrast) !important;\n\n\t&--sortable {\n\t\tcursor: pointer;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},97877:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list__row-actions-batch[data-v-03e57b1e]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeaderActions.vue"],names:[],mappings:"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA",sourcesContent:["\n.files-list__row-actions-batch {\n\tflex: 1 1 100% !important;\n\n\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t::v-deep .button-vue__wrapper {\n\t\twidth: 100%;\n\t\tspan.button-vue__text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=r},29252:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeaderButton.vue"],names:[],mappings:"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA",sourcesContent:["\n.files-list__column-sort-button {\n\t// Compensate for cells margin\n\tmargin: 0 calc(var(--cell-margin) * -1);\n\t// Reverse padding\n\tpadding: 0 4px 0 16px !important;\n\n\t// Icon after text\n\t.button-vue__wrapper {\n\t\tflex-direction: row-reverse;\n\t\t// Take max inner width for text overflow ellipsis\n\t\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t\twidth: 100%;\n\t}\n\n\t.button-vue__icon {\n\t\ttransition-timing-function: linear;\n\t\ttransition-duration: .1s;\n\t\ttransition-property: opacity;\n\t\topacity: 0;\n\t}\n\n\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t.button-vue__text {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&--active,\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\t.button-vue__icon {\n\t\t\topacity: 1 !important;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=r},76775:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list[data-v-640a8bb8]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-640a8bb8] tbody,.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-640a8bb8] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}.files-list[data-v-640a8bb8] td,.files-list[data-v-640a8bb8] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-640a8bb8] td span,.files-list[data-v-640a8bb8] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-640a8bb8] .files-list__row-checkbox{justify-content:center}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-640a8bb8] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-640a8bb8] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-640a8bb8] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-640a8bb8] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list[data-v-640a8bb8] .files-list__row-icon-favorite{position:absolute;top:4px;right:-8px;color:#fc0}.files-list[data-v-640a8bb8] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-640a8bb8] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%}.files-list[data-v-640a8bb8] .files-list__row-name a:focus .files-list__row-name-text,.files-list[data-v-640a8bb8] .files-list__row-name a:focus-visible .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-640a8bb8] .files-list__row-name .files-list__row-name-text{padding:5px 10px;margin-left:-10px}.files-list[data-v-640a8bb8] .files-list__row-actions{width:auto}.files-list[data-v-640a8bb8] .files-list__row-actions~td,.files-list[data-v-640a8bb8] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-640a8bb8] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-640a8bb8] .files-list__row-actions button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list[data-v-640a8bb8] .files-list__row-size{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list[data-v-640a8bb8] .files-list__row-column-custom{width:calc(var(--row-height)*2)}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListVirtual.vue"],names:[],mappings:"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAGD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA,CAGD,gEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,0EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,sBAAA,CACA,8EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,iHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,2GACC,mBAAA,CAKH,mDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,wDACC,0BAAA,CAGD,gGACC,8BAAA,CACA,+BAAA,CAGD,2DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAGD,4DACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CAIF,mDAEC,eAAA,CAEA,aAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,oLAEC,mDAAA,CACA,kBAAA,CAIF,8EAEC,gBAAA,CACA,iBAAA,CAIF,sDACC,UAAA,CAGA,kHAEC,2BAAA,CAIA,+EAEC,kBAAA,CAED,6GAEC,mCAAA,CAKH,mDAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,mFACC,+BAAA,CACA,wGACC,kBAAA,CAKH,4DACC,+BAAA",sourcesContent:["\n.files-list {\n\t--row-height: 55px;\n\t--cell-margin: 14px;\n\n\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\n\t--checkbox-size: 24px;\n\t--clickable-area: 44px;\n\t--icon-preview-size: 32px;\n\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\n\t&::v-deep {\n\t\t// Table head, body and footer\n\t\ttbody, .vue-recycle-scroller__slot {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\t// Necessary for virtual scrolling absolute\n\t\t\tposition: relative;\n\t\t}\n\n\t\t// Table header\n\t\t.vue-recycle-scroller__slot[role='thead'] {\n\t\t\t// Pinned on top when scrolling\n\t\t\tposition: sticky;\n\t\t\tz-index: 10;\n\t\t\ttop: 0;\n\t\t\theight: var(--row-height);\n\t\t\tbackground-color: var(--color-main-background);\n\t\t}\n\n\t\ttr {\n\t\t\tposition: absolute;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\twidth: 100%;\n\t\t\tborder-bottom: 1px solid var(--color-border);\n\t\t}\n\n\t\ttd, th {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tflex: 0 0 auto;\n\t\t\tjustify-content: left;\n\t\t\twidth: var(--row-height);\n\t\t\theight: var(--row-height);\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tborder: none;\n\n\t\t\t// Columns should try to add any text\n\t\t\t// node wrapped in a span. That should help\n\t\t\t// with the ellipsis on overflow.\n\t\t\tspan {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-checkbox {\n\t\t\tjustify-content: center;\n\t\t\t.checkbox-radio-switch {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: center;\n\n\t\t\t\t--icon-size: var(--checkbox-size);\n\n\t\t\t\tlabel.checkbox-radio-switch__label {\n\t\t\t\t\twidth: var(--clickable-area);\n\t\t\t\t\theight: var(--clickable-area);\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\n\t\t\t\t}\n\n\t\t\t\t.checkbox-radio-switch__icon {\n\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-icon {\n\t\t\tposition: relative;\n\t\t\tdisplay: flex;\n\t\t\toverflow: visible;\n\t\t\talign-items: center;\n\t\t\t// No shrinking or growing allowed\n\t\t\tflex: 0 0 var(--icon-preview-size);\n\t\t\tjustify-content: center;\n\t\t\twidth: var(--icon-preview-size);\n\t\t\theight: 100%;\n\t\t\t// Show same padding as the checkbox right padding for visual balance\n\t\t\tmargin-right: var(--checkbox-padding);\n\t\t\tcolor: var(--color-primary-element);\n\n\t\t\t& > span {\n\t\t\t\tjustify-content: flex-start;\n\t\t\t}\n\n\t\t\t&> span:not(.files-list__row-icon-favorite) svg {\n\t\t\t\twidth: var(--icon-preview-size);\n\t\t\t\theight: var(--icon-preview-size);\n\t\t\t}\n\n\t\t\t&-preview {\n\t\t\t\toverflow: hidden;\n\t\t\t\twidth: var(--icon-preview-size);\n\t\t\t\theight: var(--icon-preview-size);\n\t\t\t\tborder-radius: var(--border-radius);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\t// Center and contain the preview\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-size: contain;\n\t\t\t}\n\n\t\t\t&-favorite {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 4px;\n\t\t\t\tright: -8px;\n\t\t\t\tcolor: #ffcc00;\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-name {\n\t\t\t// Prevent link from overflowing\n\t\t\toverflow: hidden;\n\t\t\t// Take as much space as possible\n\t\t\tflex: 1 1 auto;\n\n\t\t\ta {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\t// Fill cell height and width\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\n\t\t\t\t// Keyboard indicator a11y\n\t\t\t\t&:focus .files-list__row-name-text,\n\t\t\t\t&:focus-visible .files-list__row-name-text {\n\t\t\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\t\t\tborder-radius: 20px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.files-list__row-name-text {\n\t\t\t\t// Make some space for the outline\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -10px;\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-actions {\n\t\t\twidth: auto;\n\n\t\t\t// Add margin to all cells after the actions\n\t\t\t& ~ td,\n\t\t\t& ~ th {\n\t\t\t\tmargin: 0 var(--cell-margin);\n\t\t\t}\n\n\t\t\tbutton {\n\t\t\t\t.button-vue__text {\n\t\t\t\t\t// Remove bold from default button styling\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t}\n\t\t\t\t&:not(:hover, :focus, :active) .button-vue__wrapper {\n\t\t\t\t\t// Also apply color-text-maxcontrast to non-active button\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-size {\n\t\t\t// Right align text\n\t\t\tjustify-content: flex-end;\n\t\t\twidth: calc(var(--row-height) * 1.5);\n\t\t\t// opacity varies with the size\n\t\t\tcolor: var(--color-main-text);\n\n\t\t\t// Icon is before text since size is right aligned\n\t\t\t.files-list__column-sort-button {\n\t\t\t\tpadding: 0 16px 0 4px !important;\n\t\t\t\t.button-vue__wrapper {\n\t\t\t\t\tflex-direction: row;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-column-custom {\n\t\t\twidth: calc(var(--row-height) * 2);\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=r},93582:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".app-navigation-entry__settings-quota--not-unlimited[data-v-918797b2] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-918797b2]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}","",{version:3,sources:["webpack://./apps/files/src/components/NavigationQuota.vue"],names:[],mappings:"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA",sourcesContent:["\n// User storage stats display\n.app-navigation-entry__settings-quota {\n\t// Align title with progress and icon\n\t&--not-unlimited::v-deep .app-navigation-entry__title {\n\t\tmargin-top: -4px;\n\t}\n\n\tprogress {\n\t\tposition: absolute;\n\t\tbottom: 10px;\n\t\tmargin-left: 44px;\n\t\twidth: calc(100% - 44px - 22px);\n\t}\n}\n"],sourceRoot:""}]);const a=r},3491:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".template-picker__item[data-v-6c072a31]{display:flex}.template-picker__label[data-v-6c072a31]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-6c072a31],.template-picker__label *[data-v-6c072a31]{cursor:pointer;user-select:none}.template-picker__label[data-v-6c072a31]::before{display:none !important}.template-picker__preview[data-v-6c072a31]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-6c072a31]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-6c072a31]{display:flex}.template-picker__image[data-v-6c072a31]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-6c072a31]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-6c072a31]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}","",{version:3,sources:["webpack://./apps/files/src/components/TemplatePreview.vue"],names:[],mappings:"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA",sourcesContent:["\n\n.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},1508:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".app-content[data-v-66068cbb]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-66068cbb]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-66068cbb]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-66068cbb]{flex:0 0}.files-list__refresh-icon[data-v-66068cbb]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-66068cbb]{margin:auto}","",{version:3,sources:["webpack://./apps/files/src/views/FilesList.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA",sourcesContent:["\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n\n\t// TODO: remove after all legacy views are migrated\n\t// Hides the legacy app-content if shown view is not legacy\n\t&:not(&--hidden)::v-deep + #app-content {\n\t\tdisplay: none;\n\t}\n}\n\n$margin: 4px;\n$navigationToggleSize: 50px;\n\n.files-list {\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\t// Do not grow or shrink (vertically)\n\t\tflex: 0 0;\n\t\t// Align with the navigation toggle icon\n\t\tmargin: $margin $margin $margin $navigationToggleSize;\n\t\t> * {\n\t\t\t// Do not grow or shrink (horizontally)\n\t\t\t// Only the breadcrumbs shrinks\n\t\t\tflex: 0 0;\n\t\t}\n\t}\n\t&__refresh-icon {\n\t\tflex: 0 0 44px;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\t&__loading-icon {\n\t\tmargin: auto;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},87289:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".app-navigation[data-v-657a978e] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-657a978e]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-657a978e]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}","",{version:3,sources:["webpack://./apps/files/src/views/Navigation.vue"],names:[],mappings:"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA",sourcesContent:["\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\n.app-navigation::v-deep .app-navigation-entry-icon {\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.app-navigation > ul.app-navigation__list {\n\t// Use flex gap value for more elegant spacing\n\tpadding-bottom: var(--default-grid-baseline, 4px);\n}\n\n.app-navigation-entry__settings {\n\theight: auto !important;\n\toverflow: hidden !important;\n\tpadding-top: 0 !important;\n\t// Prevent shrinking or growing\n\tflex: 0 0 auto;\n}\n"],sourceRoot:""}]);const a=r},35662:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".setting-link[data-v-76ca5d1f]:hover{text-decoration:underline}","",{version:3,sources:["webpack://./apps/files/src/views/Settings.vue"],names:[],mappings:"AACA,qCACC,yBAAA",sourcesContent:["\n.setting-link:hover {\n\ttext-decoration: underline;\n}\n"],sourceRoot:""}]);const a=r},54654:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".templates-picker__form[data-v-d46f1dc6]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-d46f1dc6]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-d46f1dc6]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-d46f1dc6]{display:flex;justify-content:end;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-d46f1dc6],.templates-picker__buttons input[type=submit][data-v-d46f1dc6]{height:44px}.templates-picker[data-v-d46f1dc6] .modal-container{position:relative}.templates-picker__loading[data-v-d46f1dc6]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}","",{version:3,sources:["webpack://./apps/files/src/views/TemplatePicker.vue"],names:[],mappings:"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,mBAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA",sourcesContent:["\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},37020:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,"\n/* @keyframes preview-gradient-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n} */\n","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry.vue"],names:[],mappings:";AA6mBA;;;;;;;;;;GAUA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<Fragment>\n\t\t<td class=\"files-list__row-checkbox\">\n\t\t\t<NcCheckboxRadioSwitch v-if=\"active\"\n\t\t\t\t:aria-label=\"t('files', 'Select the row for {displayName}', { displayName })\"\n\t\t\t\t:checked=\"selectedFiles\"\n\t\t\t\t:value=\"fileid\"\n\t\t\t\tname=\"selectedFiles\"\n\t\t\t\t@update:checked=\"onSelectionChange\" />\n\t\t</td>\n\n\t\t\x3c!-- Link to file --\x3e\n\t\t<td class=\"files-list__row-name\">\n\t\t\t<a ref=\"name\" v-bind=\"linkTo\" @click=\"execDefaultAction\">\n\t\t\t\t\x3c!-- Icon or preview --\x3e\n\t\t\t\t<span class=\"files-list__row-icon\">\n\t\t\t\t\t<FolderIcon v-if=\"source.type === 'folder'\" />\n\n\t\t\t\t\t\x3c!-- Decorative image, should not be aria documented --\x3e\n\t\t\t\t\t<span v-else-if=\"previewUrl && !backgroundFailed\"\n\t\t\t\t\t\tref=\"previewImg\"\n\t\t\t\t\t\tclass=\"files-list__row-icon-preview\"\n\t\t\t\t\t\t:style=\"{ backgroundImage }\" />\n\n\t\t\t\t\t<span v-else-if=\"mimeIconUrl\"\n\t\t\t\t\t\tclass=\"files-list__row-icon-preview files-list__row-icon-preview--mime\"\n\t\t\t\t\t\t:style=\"{ backgroundImage: mimeIconUrl }\" />\n\n\t\t\t\t\t<FileIcon v-else />\n\n\t\t\t\t\t\x3c!-- Favorite icon --\x3e\n\t\t\t\t\t<span v-if=\"isFavorite\"\n\t\t\t\t\t\tclass=\"files-list__row-icon-favorite\"\n\t\t\t\t\t\t:aria-label=\"t('files', 'Favorite')\">\n\t\t\t\t\t\t<StarIcon aria-hidden=\"true\" :size=\"20\" />\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\n\t\t\t\t\x3c!-- File name --\x3e\n\t\t\t\t<span class=\"files-list__row-name-text\">{{ displayName }}</span>\n\t\t\t</a>\n\t\t</td>\n\n\t\t\x3c!-- Actions --\x3e\n\t\t<td :class=\"`files-list__row-actions-${uniqueId}`\" class=\"files-list__row-actions\">\n\t\t\t\x3c!-- Inline actions --\x3e\n\t\t\t\x3c!-- TODO: implement CustomElementRender --\x3e\n\n\t\t\t\x3c!-- Menu actions --\x3e\n\t\t\t<NcActions v-if=\"active\"\n\t\t\t\tref=\"actionsMenu\"\n\t\t\t\t:boundaries-element=\"boundariesElement\"\n\t\t\t\t:container=\"boundariesElement\"\n\t\t\t\t:disabled=\"source._loading\"\n\t\t\t\t:force-title=\"true\"\n\t\t\t\t:force-menu=\"true\"\n\t\t\t\t:inline=\"enabledInlineActions.length\"\n\t\t\t\t:open.sync=\"openedMenu\">\n\t\t\t\t<NcActionButton v-for=\"action in enabledMenuActions\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:class=\"'files-list__row-action-' + action.id\"\n\t\t\t\t\t@click=\"onActionClick(action)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcLoadingIcon v-if=\"loading === action.id\" :size=\"18\" />\n\t\t\t\t\t\t<CustomSvgIconRender v-else :svg=\"action.iconSvgInline([source], currentView)\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ action.displayName([source], currentView) }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</td>\n\n\t\t\x3c!-- Size --\x3e\n\t\t<td v-if=\"isSizeAvailable\"\n\t\t\t:style=\"{ opacity: sizeOpacity }\"\n\t\t\tclass=\"files-list__row-size\"\n\t\t\t@click=\"openDetailsIfAvailable\">\n\t\t\t<span>{{ size }}</span>\n\t\t</td>\n\n\t\t\x3c!-- View columns --\x3e\n\t\t<td v-for=\"column in columns\"\n\t\t\t:key=\"column.id\"\n\t\t\t:class=\"`files-list__row-${currentView?.id}-${column.id}`\"\n\t\t\tclass=\"files-list__row-column-custom\"\n\t\t\t@click=\"openDetailsIfAvailable\">\n\t\t\t<CustomElementRender v-if=\"active\"\n\t\t\t\t:current-view=\"currentView\"\n\t\t\t\t:render=\"column.render\"\n\t\t\t\t:source=\"source\" />\n\t\t</td>\n\t</Fragment>\n</template>\n\n<script lang='ts'>\nimport { debounce } from 'debounce'\nimport { formatFileSize } from '@nextcloud/files'\nimport { Fragment } from 'vue-frag'\nimport { join } from 'path'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { translate } from '@nextcloud/l10n'\nimport CancelablePromise from 'cancelable-promise'\nimport FileIcon from 'vue-material-design-icons/File.vue'\nimport FolderIcon from 'vue-material-design-icons/Folder.vue'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport StarIcon from 'vue-material-design-icons/Star.vue'\nimport Vue from 'vue'\n\nimport { ACTION_DETAILS } from '../actions/sidebarAction.ts'\nimport { getFileActions } from '../services/FileAction.ts'\nimport { hashCode } from '../utils/hashUtils.ts'\nimport { isCachedPreview } from '../services/PreviewService.ts'\nimport { useActionsMenuStore } from '../store/actionsmenu.ts'\nimport { useFilesStore } from '../store/files.ts'\nimport { useKeyboardStore } from '../store/keyboard.ts'\nimport { useSelectionStore } from '../store/selection.ts'\nimport { useUserConfigStore } from '../store/userconfig.ts'\nimport CustomElementRender from './CustomElementRender.vue'\nimport CustomSvgIconRender from './CustomSvgIconRender.vue'\nimport logger from '../logger.js'\n\n// The registered actions list\nconst actions = getFileActions()\n\nexport default Vue.extend({\n\tname: 'FileEntry',\n\n\tcomponents: {\n\t\tCustomElementRender,\n\t\tCustomSvgIconRender,\n\t\tFileIcon,\n\t\tFolderIcon,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcLoadingIcon,\n\t\tStarIcon,\n\t},\n\n\tprops: {\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisSizeAvailable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tsource: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tnodes: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tfilesListWidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst actionsMenuStore = useActionsMenuStore()\n\t\tconst filesStore = useFilesStore()\n\t\tconst keyboardStore = useKeyboardStore()\n\t\tconst selectionStore = useSelectionStore()\n\t\tconst userConfigStore = useUserConfigStore()\n\t\treturn {\n\t\t\tactionsMenuStore,\n\t\t\tfilesStore,\n\t\t\tkeyboardStore,\n\t\t\tselectionStore,\n\t\t\tuserConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundFailed: false,\n\t\t\tbackgroundImage: '',\n\t\t\tboundariesElement: document.querySelector('.app-content > .files-list'),\n\t\t\tloading: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tuserConfig() {\n\t\t\treturn this.userConfigStore.userConfig\n\t\t},\n\n\t\tcurrentView() {\n\t\t\treturn this.$navigation.active\n\t\t},\n\t\tcolumns() {\n\t\t\t// Hide columns if the list is too small\n\t\t\tif (this.filesListWidth < 512) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.currentView?.columns || []\n\t\t},\n\n\t\tdir() {\n\t\t\t// Remove any trailing slash but leave root slash\n\t\t\treturn (this.$route?.query?.dir || '/').replace(/^(.+)\\/$/, '$1')\n\t\t},\n\t\tfileid() {\n\t\t\treturn this.source?.fileid?.toString?.()\n\t\t},\n\t\tdisplayName() {\n\t\t\treturn this.source.attributes.displayName\n\t\t\t\t|| this.source.basename\n\t\t},\n\n\t\tsize() {\n\t\t\tconst size = parseInt(this.source.size, 10) || 0\n\t\t\tif (typeof size !== 'number' || size < 0) {\n\t\t\t\treturn this.t('files', 'Pending')\n\t\t\t}\n\t\t\treturn formatFileSize(size, true)\n\t\t},\n\t\tsizeOpacity() {\n\t\t\tconst size = parseInt(this.source.size, 10) || 0\n\t\t\tif (!size || size < 0) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\t// Whatever theme is active, the contrast will pass WCAG AA\n\t\t\t// with color main text over main background and an opacity of 0.7\n\t\t\tconst minOpacity = 0.7\n\t\t\tconst maxOpacitySize = 10 * 1024 * 1024\n\t\t\treturn minOpacity + (1 - minOpacity) * Math.pow((this.source.size / maxOpacitySize), 2)\n\t\t},\n\n\t\tlinkTo() {\n\t\t\tif (this.source.type === 'folder') {\n\t\t\t\tconst to = { ...this.$route, query: { dir: join(this.dir, this.source.basename) } }\n\t\t\t\treturn {\n\t\t\t\t\tis: 'router-link',\n\t\t\t\t\ttitle: this.t('files', 'Open folder {name}', { name: this.displayName }),\n\t\t\t\t\tto,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\tconst action = this.enabledDefaultActions[0]\n\t\t\t\tconst displayName = action.displayName([this.source], this.currentView)\n\t\t\t\treturn {\n\t\t\t\t\ttitle: displayName,\n\t\t\t\t\trole: 'button',\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\thref: this.source.source,\n\t\t\t\t// TODO: Use first action title ?\n\t\t\t\ttitle: this.t('files', 'Download file {name}', { name: this.displayName }),\n\t\t\t}\n\t\t},\n\n\t\tselectedFiles() {\n\t\t\treturn this.selectionStore.selected\n\t\t},\n\t\tisSelected() {\n\t\t\treturn this.selectedFiles.includes(this.source?.fileid?.toString?.())\n\t\t},\n\n\t\tcropPreviews() {\n\t\t\treturn this.userConfig.crop_image_previews\n\t\t},\n\t\tpreviewUrl() {\n\t\t\ttry {\n\t\t\t\tconst url = new URL(window.location.origin + this.source.attributes.previewUrl)\n\t\t\t\t// Request tiny previews\n\t\t\t\turl.searchParams.set('x', '32')\n\t\t\t\turl.searchParams.set('y', '32')\n\t\t\t\t// Handle cropping\n\t\t\t\turl.searchParams.set('a', this.cropPreviews === true ? '0' : '1')\n\t\t\t\treturn url.href\n\t\t\t} catch (e) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t},\n\t\tmimeIconUrl() {\n\t\t\tconst mimeType = this.source.mime || 'application/octet-stream'\n\t\t\tconst mimeIconUrl = window.OC?.MimeType?.getIconUrl?.(mimeType)\n\t\t\tif (mimeIconUrl) {\n\t\t\t\treturn `url(${mimeIconUrl})`\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\n\t\tenabledActions() {\n\t\t\treturn actions\n\t\t\t\t.filter(action => !action.enabled || action.enabled([this.source], this.currentView))\n\t\t\t\t.sort((a, b) => (a.order || 0) - (b.order || 0))\n\t\t},\n\t\tenabledInlineActions() {\n\t\t\tif (this.filesListWidth < 768) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.enabledActions.filter(action => action?.inline?.(this.source, this.currentView))\n\t\t},\n\t\tenabledMenuActions() {\n\t\t\tif (this.filesListWidth < 768) {\n\t\t\t\t// If we have a default action, do not render the first one\n\t\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\t\treturn this.enabledActions.slice(1)\n\t\t\t\t}\n\t\t\t\treturn this.enabledActions\n\t\t\t}\n\n\t\t\tconst actions = [\n\t\t\t\t...this.enabledInlineActions,\n\t\t\t\t...this.enabledActions.filter(action => !action.inline),\n\t\t\t]\n\n\t\t\t// If we have a default action, do not render the first one\n\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\treturn actions.slice(1)\n\t\t\t}\n\n\t\t\treturn actions\n\t\t},\n\t\tenabledDefaultActions() {\n\t\t\treturn [\n\t\t\t\t...this.enabledActions.filter(action => action.default),\n\t\t\t]\n\t\t},\n\t\topenedMenu: {\n\t\t\tget() {\n\t\t\t\treturn this.actionsMenuStore.opened === this.uniqueId\n\t\t\t},\n\t\t\tset(opened) {\n\t\t\t\tthis.actionsMenuStore.opened = opened ? this.uniqueId : null\n\t\t\t},\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn hashCode(this.source.source)\n\t\t},\n\n\t\tisFavorite() {\n\t\t\treturn this.source.attributes.favorite === 1\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(active, before) {\n\t\t\tif (active === false && before === true) {\n\t\t\t\tthis.resetState()\n\n\t\t\t\t// When the row is not active anymore\n\t\t\t\t// remove the display from the row to prevent\n\t\t\t\t// keyboard interaction with it.\n\t\t\t\tthis.$el.parentNode.style.display = 'none'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Restore default tabindex\n\t\t\tthis.$el.parentNode.style.display = ''\n\t\t},\n\n\t\t/**\n\t\t * When the source changes, reset the preview\n\t\t * and fetch the new one.\n\t\t */\n\t\tpreviewUrl() {\n\t\t\tthis.clearImg()\n\t\t\tthis.debounceIfNotCached()\n\t\t},\n\t},\n\n\t/**\n\t * The row is mounted once and reused as we scroll.\n\t */\n\tmounted() {\n\t\t// ⚠ Init the debounce function on mount and\n\t\t// not when the module is imported to\n\t\t// avoid sharing between recycled components\n\t\tthis.debounceGetPreview = debounce(function() {\n\t\t\tthis.fetchAndApplyPreview()\n\t\t}, 150, false)\n\n\t\t// Fetch the preview on init\n\t\tthis.debounceIfNotCached()\n\n\t\t// Right click watcher on tr\n\t\tthis.$el.parentNode?.addEventListener?.('contextmenu', this.onRightClick)\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.resetState()\n\t},\n\n\tmethods: {\n\t\tasync debounceIfNotCached() {\n\t\t\tif (!this.previewUrl) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Check if we already have this preview cached\n\t\t\tconst isCached = await isCachedPreview(this.previewUrl)\n\t\t\tif (isCached) {\n\t\t\t\tthis.backgroundImage = `url(${this.previewUrl})`\n\t\t\t\tthis.backgroundFailed = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// We don't have this preview cached or it expired, requesting it\n\t\t\tthis.debounceGetPreview()\n\t\t},\n\n\t\tfetchAndApplyPreview() {\n\t\t\t// Ignore if no preview\n\t\t\tif (!this.previewUrl) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If any image is being processed, reset it\n\t\t\tif (this.previewPromise) {\n\t\t\t\tthis.clearImg()\n\t\t\t}\n\n\t\t\t// Store the promise to be able to cancel it\n\t\t\tthis.previewPromise = new CancelablePromise((resolve, reject, onCancel) => {\n\t\t\t\tconst img = new Image()\n\t\t\t\t// If active, load the preview with higher priority\n\t\t\t\timg.fetchpriority = this.active ? 'high' : 'auto'\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tthis.backgroundImage = `url(${this.previewUrl})`\n\t\t\t\t\tthis.backgroundFailed = false\n\t\t\t\t\tresolve(img)\n\t\t\t\t}\n\t\t\t\timg.onerror = () => {\n\t\t\t\t\tthis.backgroundFailed = true\n\t\t\t\t\treject(img)\n\t\t\t\t}\n\t\t\t\timg.src = this.previewUrl\n\n\t\t\t\t// Image loading has been canceled\n\t\t\t\tonCancel(() => {\n\t\t\t\t\timg.onerror = null\n\t\t\t\t\timg.onload = null\n\t\t\t\t\timg.src = ''\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\n\t\tresetState() {\n\t\t\t// Reset loading state\n\t\t\tthis.loading = ''\n\n\t\t\t// Reset the preview\n\t\t\tthis.clearImg()\n\n\t\t\t// Close menu\n\t\t\tthis.openedMenu = false\n\t\t},\n\n\t\tclearImg() {\n\t\t\tthis.backgroundImage = ''\n\t\t\tthis.backgroundFailed = false\n\n\t\t\tif (this.previewPromise) {\n\t\t\t\tthis.previewPromise.cancel()\n\t\t\t\tthis.previewPromise = null\n\t\t\t}\n\t\t},\n\n\t\tasync onActionClick(action) {\n\t\t\tconst displayName = action.displayName([this.source], this.currentView)\n\t\t\ttry {\n\t\t\t\t// Set the loading marker\n\t\t\t\tthis.loading = action.id\n\t\t\t\tVue.set(this.source, '_loading', true)\n\n\t\t\t\tconst success = await action.exec(this.source, this.currentView, this.dir)\n\n\t\t\t\t// If the action returns null, we stay silent\n\t\t\t\tif (success === null) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (success) {\n\t\t\t\t\tshowSuccess(this.t('files', '\"{displayName}\" action executed successfully', { displayName }))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tshowError(this.t('files', '\"{displayName}\" action failed', { displayName }))\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error('Error while executing action', { action, e })\n\t\t\t\tshowError(this.t('files', '\"{displayName}\" action failed', { displayName }))\n\t\t\t} finally {\n\t\t\t\t// Reset the loading marker\n\t\t\t\tthis.loading = ''\n\t\t\t\tVue.set(this.source, '_loading', false)\n\t\t\t}\n\t\t},\n\t\texecDefaultAction(event) {\n\t\t\t// Do not execute the default action on the folder, navigate instead\n\t\t\tif (this.source.type === 'folder') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t\t// Execute the first default action if any\n\t\t\t\tthis.enabledDefaultActions[0].exec(this.source, this.currentView, this.dir)\n\t\t\t}\n\t\t},\n\n\t\topenDetailsIfAvailable(event) {\n\t\t\tconst detailsAction = this.enabledDefaultActions.find(action => action.id === ACTION_DETAILS)\n\t\t\tif (detailsAction) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tdetailsAction.exec(this.source, this.currentView)\n\t\t\t}\n\t\t},\n\n\t\tonSelectionChange(selection) {\n\t\t\tconst newSelectedIndex = this.index\n\t\t\tconst lastSelectedIndex = this.selectionStore.lastSelectedIndex\n\n\t\t\t// Get the last selected and select all files in between\n\t\t\tif (this.keyboardStore?.shiftKey && lastSelectedIndex !== null) {\n\t\t\t\tconst isAlreadySelected = this.selectedFiles.includes(this.fileid)\n\n\t\t\t\tconst start = Math.min(newSelectedIndex, lastSelectedIndex)\n\t\t\t\tconst end = Math.max(lastSelectedIndex, newSelectedIndex)\n\n\t\t\t\tconst lastSelection = this.selectionStore.lastSelection\n\t\t\t\tconst filesToSelect = this.nodes\n\t\t\t\t\t.map(file => file.fileid?.toString?.())\n\t\t\t\t\t.slice(start, end + 1)\n\n\t\t\t\t// If already selected, update the new selection _without_ the current file\n\t\t\t\tconst selection = [...lastSelection, ...filesToSelect]\n\t\t\t\t\t.filter(fileId => !isAlreadySelected || fileId !== this.fileid)\n\n\t\t\t\tlogger.debug('Shift key pressed, selecting all files in between', { start, end, filesToSelect, isAlreadySelected })\n\t\t\t\t// Keep previous lastSelectedIndex to be use for further shift selections\n\t\t\t\tthis.selectionStore.set(selection)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlogger.debug('Updating selection', { selection })\n\t\t\tthis.selectionStore.set(selection)\n\t\t\tthis.selectionStore.setLastIndex(newSelectedIndex)\n\t\t},\n\n\t\t// Open the actions menu on right click\n\t\tonRightClick(event) {\n\t\t\t// If already opened, fallback to default browser\n\t\t\tif (this.openedMenu) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If the clicked row is in the selection, open global menu\n\t\t\tconst isMoreThanOneSelected = this.selectedFiles.length > 1\n\t\t\tthis.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId\n\n\t\t\t// Prevent any browser defaults\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t},\n\n\t\tt: translate,\n\t\tformatFileSize,\n\t},\n})\n<\/script>\n\n<style scoped lang='scss'>\n/* Hover effect on tbody lines only */\ntr {\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n}\n\n/* Preview not loaded animation effect */\n.files-list__row-icon-preview:not([style*='background']) {\n background: var(--color-loading-dark);\n\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\n}\n</style>\n\n<style>\n/* @keyframes preview-gradient-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n} */\n</style>\n"],sourceRoot:""}]);const a=r}},i={};function o(t){var e=i[t];if(void 0!==e)return e.exports;var s=i[t]={id:t,loaded:!1,exports:{}};return n[t].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=n,e=[],o.O=(t,n,i,s)=>{if(!n){var r=1/0;for(d=0;d<e.length;d++){n=e[d][0],i=e[d][1],s=e[d][2];for(var a=!0,l=0;l<n.length;l++)(!1&s||r>=s)&&Object.keys(o.O).every((t=>o.O[t](n[l])))?n.splice(l--,1):(a=!1,s<r&&(r=s));if(a){e.splice(d--,1);var c=i();void 0!==c&&(t=c)}}return t}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[n,i,s]},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),o.j=2181,(()=>{o.b=document.baseURI||self.location.href;var t={2181:0};o.O.j=e=>0===t[e];var e=(e,n)=>{var i,s,r=n[0],a=n[1],l=n[2],c=0;if(r.some((e=>0!==t[e]))){for(i in a)o.o(a,i)&&(o.m[i]=a[i]);if(l)var d=l(o)}for(e&&e(n);c<r.length;c++)s=r[c],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return o.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),o.nc=void 0;var s=o.O(void 0,[7874],(()=>o(71030)));s=o.O(s)})(); -//# sourceMappingURL=files-main.js.map?v=f7e90b4201bd515159b9
\ No newline at end of file +(()=>{"use strict";var e,n={73500:(e,n,i)=>{var o=i(17499),s=i(79954),r=i(31352),a=i(79753),l=i(45994);const c=function(){var t,e,n,i;const o=(null===(t=OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.App)||void 0===n||null===(i=n.currentFileList)||void 0===i?void 0:i.dirInfo)||{path:"/",name:""};return"".concat(o.path,"/").concat(o.name).replace(/\/\//gi,"/")};var d=i(4820),u=i(20144),p=i(62520),h=i(64024),f=i(93455),A=i.n(f),v=i(70110),m=i.n(v);const g=256,w={name:"TemplatePreview",inheritAttrs:!1,props:{basename:{type:String,required:!0},checked:{type:Boolean,default:!1},fileid:{type:[String,Number],required:!0},filename:{type:String,required:!0},previewUrl:{type:String,default:null},hasPreview:{type:Boolean,default:!0},mime:{type:String,required:!0},ratio:{type:Number,default:null}},data:()=>({failedPreview:!1}),computed:{nameWithoutExt(){return this.basename.indexOf(".")>-1?this.basename.split(".").slice(0,-1).join("."):this.basename},id(){return"template-picker-".concat(this.fileid)},realPreviewUrl(){return this.failedPreview&&this.mimeIcon?this.mimeIcon:this.previewUrl?this.previewUrl:(0,l.ts)()?(0,a.generateUrl)("/core/preview?fileId=".concat(this.fileid,"&x=").concat(g,"&y=").concat(g,"&a=1")):(0,a.generateUrl)("/apps/files_sharing/publicpreview/".concat(document.getElementById("sharingToken")&&document.getElementById("sharingToken").value,"?fileId=").concat(this.fileid,"&file=").concat(function(t){const e=(t.startsWith("/")?t:"/".concat(t)).split("/");let n="";return e.forEach((t=>{""!==t&&(n+="/"+encodeURIComponent(t))})),n}(this.filename),"&x=").concat(g,"&y=").concat(g,"&a=1"))},mimeIcon(){return OC.MimeType.getIconUrl(this.mime)}},methods:{onCheck(){this.$emit("check",this.fileid)},onFailure(){this.failedPreview=!0}}};var b=i(93379),C=i.n(b),y=i(7795),_=i.n(y),x=i(90569),S=i.n(x),k=i(3565),I=i.n(k),N=i(19216),E=i.n(N),F=i(44589),B=i.n(F),P=i(67679),D={};D.styleTagTransform=B(),D.setAttributes=I(),D.insert=S().bind(null,"head"),D.domAPI=_(),D.insertStyleElement=E(),C()(P.Z,D),P.Z&&P.Z.locals&&P.Z.locals;var T=i(51900);const z=(0,T.Z)(w,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"template-picker__item"},[e("input",{staticClass:"radio",attrs:{id:t.id,type:"radio",name:"template-picker"},domProps:{checked:t.checked},on:{change:t.onCheck}}),t._v(" "),e("label",{staticClass:"template-picker__label",attrs:{for:t.id}},[e("div",{staticClass:"template-picker__preview",class:t.failedPreview?"template-picker__preview--failed":""},[e("img",{staticClass:"template-picker__image",attrs:{src:t.realPreviewUrl,alt:"",draggable:"false"},on:{error:t.onFailure}})]),t._v(" "),e("span",{staticClass:"template-picker__title"},[t._v("\n\t\t\t"+t._s(t.nameWithoutExt)+"\n\t\t")])])])}),[],!1,null,"5b09ec60",null).exports;var L=i(25108);const U={name:"TemplatePicker",components:{NcEmptyContent:A(),NcModal:m(),TemplatePreview:z},props:{logger:{type:Object,required:!0}},data:()=>({checked:-1,loading:!1,name:null,opened:!1,provider:null}),computed:{nameWithoutExt(){return this.name.indexOf(".")>-1?this.name.split(".").slice(0,-1).join("."):this.name},emptyTemplate(){var e,n;return{basename:t("files","Blank"),fileid:-1,filename:this.t("files","Blank"),hasPreview:!1,mime:(null===(e=this.provider)||void 0===e?void 0:e.mimetypes[0])||(null===(n=this.provider)||void 0===n?void 0:n.mimetypes)}},selectedTemplate(){return this.provider.templates.find((t=>t.fileid===this.checked))},style(){const t=(this.provider.ratio?this.provider.ratio:1.77)>1?240:160;return{"--margin":"8px","--width":t+"px","--border":"2px","--fullwidth":t+16+4+"px","--height":this.provider.ratio?Math.round(t/this.provider.ratio)+"px":null}}},methods:{async open(t,e){this.checked=this.emptyTemplate.fileid,this.name=t,this.provider=e;const n=(await async function(){return(await d.default.get((0,a.generateOcsUrl)("apps/files/api/v1/templates"))).data.ocs.data}()).find((t=>t.app===e.app&&t.label===e.label));if(null===n)throw new Error("Failed to match provider in results");this.provider=n,0!==n.templates.length?this.opened=!0:this.onSubmit()},close(){this.checked=this.emptyTemplate.fileid,this.loading=!1,this.name=null,this.opened=!1,this.provider=null},onCheck(t){this.checked=t},async onSubmit(){var t,e,n;this.loading=!0;const i=c(),o=null===(t=OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.App)||void 0===n?void 0:n.currentFileList;var s,r;this.nameWithoutExt===this.name&&(this.logger.debug("Fixed invalid filename",{name:this.name,extension:null===(s=this.provider)||void 0===s?void 0:s.extension}),this.name=this.name+(null===(r=this.provider)||void 0===r?void 0:r.extension));try{var l,u;const t=await async function(t,e,n){return(await d.default.post((0,a.generateOcsUrl)("apps/files/api/v1/templates/create"),{filePath:t,templatePath:e,templateType:n})).data.ocs.data}((0,p.normalize)("".concat(i,"/").concat(this.name)),null===(l=this.selectedTemplate)||void 0===l?void 0:l.filename,null===(u=this.selectedTemplate)||void 0===u?void 0:u.templateType);this.logger.debug("Created new file",t);const e=await(null==o?void 0:o.addAndFetchFileInfo(this.name).then(((t,e)=>e))),n=new OCA.Files.FileInfoModel(e,{filesClient:null==o?void 0:o.filesClient}),s=OCA.Files.fileActions.getDefaultFileAction(t.mime,"file",OC.PERMISSION_ALL);s&&s.action(t.basename,{$file:null==o?void 0:o.findFileEl(this.name),dir:i,fileList:o,fileActions:null==o?void 0:o.fileActions,fileInfoModel:n}),this.close()}catch(t){this.logger.error("Error while creating the new file from template"),L.error(t),(0,h.x2)(this.t("files","Unable to create new file from template"))}finally{this.loading=!1}}}};var V=i(54654),O={};O.styleTagTransform=B(),O.setAttributes=I(),O.insert=S().bind(null,"head"),O.domAPI=_(),O.insertStyleElement=E(),C()(V.Z,O),V.Z&&V.Z.locals&&V.Z.locals;const Z=(0,T.Z)(U,(function(){var t=this,e=t._self._c;return t.opened?e("NcModal",{staticClass:"templates-picker",attrs:{"clear-view-delay":-1,size:"large"},on:{close:t.close}},[e("form",{staticClass:"templates-picker__form",style:t.style,on:{submit:function(e){return e.preventDefault(),e.stopPropagation(),t.onSubmit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("files","Pick a template for {name}",{name:t.nameWithoutExt})))]),t._v(" "),e("ul",{staticClass:"templates-picker__list"},[e("TemplatePreview",t._b({attrs:{checked:t.checked===t.emptyTemplate.fileid},on:{check:t.onCheck}},"TemplatePreview",t.emptyTemplate,!1)),t._v(" "),t._l(t.provider.templates,(function(n){return e("TemplatePreview",t._b({key:n.fileid,attrs:{checked:t.checked===n.fileid,ratio:t.provider.ratio},on:{check:t.onCheck}},"TemplatePreview",n,!1))}))],2),t._v(" "),e("div",{staticClass:"templates-picker__buttons"},[e("input",{staticClass:"primary",attrs:{type:"submit","aria-label":t.t("files","Create a new file with the selected template")},domProps:{value:t.t("files","Create")}})])]),t._v(" "),t.loading?e("NcEmptyContent",{staticClass:"templates-picker__loading",attrs:{icon:"icon-loading"}},[t._v("\n\t\t"+t._s(t.t("files","Creating file"))+"\n\t")]):t._e()],1):t._e()}),[],!1,null,"d46f1dc6",null).exports,q=(0,o.IY)().setApp("files").detectUser().build();u.default.mixin({methods:{t:r.Iu,n:r.uN}});const R=document.createElement("div");R.id="template-picker",document.body.appendChild(R);let j=(0,s.j)("files","templates",[]),M=(0,s.j)("files","templates_path",!1);q.debug("Templates providers",j),q.debug("Templates folder",{templatesPath:M});const $=new(u.default.extend(Z))({name:"TemplatePicker",propsData:{logger:q}});$.$mount("#template-picker"),window.addEventListener("DOMContentLoaded",(function(){if(!M){q.debug("Templates folder not initialized");const t={attach(t){t.addMenuEntry({id:"template-init",displayName:(0,r.Iu)("files","Set up templates folder"),templateName:(0,r.Iu)("files","Templates"),iconClass:"icon-template-add",fileType:"file",actionLabel:(0,r.Iu)("files","Create new templates folder"),actionHandler(e){W(e),t.removeMenuEntry("template-init")}})}};OC.Plugins.register("OCA.Files.NewFileMenu",t)}})),j.forEach(((t,e)=>{const n={attach(n){const i=n.fileList;"files"!==i.id&&"files.public"!==i.id||n.addMenuEntry({id:"template-new-".concat(t.app,"-").concat(e),displayName:t.label,templateName:t.label+t.extension,iconClass:t.iconClass||"icon-file",fileType:"file",actionLabel:t.actionLabel,actionHandler(e){$.open(e,t)}})}};OC.Plugins.register("OCA.Files.NewFileMenu",n)}));const W=async function(t){const e=(c()+"/".concat(t)).replace("//","/");try{q.debug("Initializing the templates directory",{templatePath:e});const t=await d.default.post((0,a.generateOcsUrl)("apps/files/api/v1/templates/path"),{templatePath:e,copySystemTemplates:!0});OCA.Files.App.currentFileList.changeDirectory(e,!0,!0),j=t.data.ocs.data.templates,M=t.data.ocs.data.template_path}catch(t){q.error("Unable to initialize the templates directory"),(0,h.x2)((0,r.Iu)("files","Unable to initialize the templates directory"))}};var G=i(78595);!function(){const t={attach(t){(0,G.Ld)("nextcloud:unified-search.search",(e=>{let{query:n}=e;t.setFilter(n)})),(0,G.Ld)("nextcloud:unified-search.reset",(()=>{this.query=null,t.setFilter("")}))}};window.OC.Plugins.register("OCA.Files.FileList",t)}();var H=i(91770),K=i(78510);const Q=(0,o.IY)().setApp("files").detectUser().build();class Y{constructor(t){var e,n,i;e=this,i=void 0,(n=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(n="_action"))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,this.validateAction(t),this._action=t}get id(){return this._action.id}get displayName(){return this._action.displayName}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get default(){return this._action.default}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(t){if(!t.id||"string"!=typeof t.id)throw new Error("Invalid id");if(!t.displayName||"function"!=typeof t.displayName)throw new Error("Invalid displayName function");if(!t.iconSvgInline||"function"!=typeof t.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!t.exec||"function"!=typeof t.exec)throw new Error("Invalid exec function");if("enabled"in t&&"function"!=typeof t.enabled)throw new Error("Invalid enabled function");if("execBatch"in t&&"function"!=typeof t.execBatch)throw new Error("Invalid execBatch function");if("order"in t&&"number"!=typeof t.order)throw new Error("Invalid order");if("default"in t&&"boolean"!=typeof t.default)throw new Error("Invalid default");if("inline"in t&&"function"!=typeof t.inline)throw new Error("Invalid inline function");if("renderInline"in t&&"function"!=typeof t.renderInline)throw new Error("Invalid renderInline function")}}const J=function(t){void 0===window._nc_fileactions&&(window._nc_fileactions=[],Q.debug("FileActions initialized")),window._nc_fileactions.find((e=>e.id===t.id))?Q.error("FileAction ".concat(t.id," already registered"),{action:t}):window._nc_fileactions.push(t)},X=function(){return window._nc_fileactions||[]};J(new Y({id:"delete",displayName:(t,e)=>"trashbin"===e.id?(0,r.Iu)("files_trashbin","Delete permanently"):(0,r.Iu)("files","Delete"),iconSvgInline:()=>K,enabled:t=>t.length>0&&t.map((t=>t.permissions)).every((t=>0!=(t&H.y3.DELETE))),async exec(t){try{return await d.default.delete(t.source),(0,G.j8)("files:node:deleted",t),!0}catch(e){return Q.error("Error while deleting a file",{error:e,source:t.source,node:t}),!1}},async execBatch(t,e,n){return Promise.all(t.map((t=>this.exec(t,e,n))))},order:100}));var tt=i(48250);const et="details";J(new Y({id:et,displayName:()=>(0,r.Iu)("files","Details"),iconSvgInline:()=>tt,enabled:t=>{var e,n,i;return!(null===(e=window)||void 0===e||null===(n=e.OCA)||void 0===n||null===(i=n.Files)||void 0===i||!i.Sidebar)&&t.some((t=>{var e;return null===(e=t.root)||void 0===e?void 0:e.startsWith("/files/")}))},async exec(t){try{var e,n,i,o,s;return null===(e=window)||void 0===e||null===(n=e.OCA)||void 0===n||null===(i=n.Files)||void 0===i||null===(o=i.Sidebar)||void 0===o||null===(s=o.open)||void 0===s||s.call(o,t.path),null}catch(t){return Q.error("Error while opening sidebar",{error:t}),!1}},default:!0,order:-50}));var nt=i(59305),it=i(23664),ot=i(69680),st=i.n(ot),rt=i(10861),at=i.n(rt),lt=i(64192),ct=i.n(lt),dt=i(33581);const ut=function(){const t=(0,nt.Q_)("files",{state:()=>({files:{},roots:{}}),getters:{getNode:t=>e=>t.files[e],getNodes:t=>e=>e.map((e=>t.files[e])).filter(Boolean),getRoot:t=>e=>t.roots[e]},actions:{updateNodes(t){const e=t.reduce(((t,e)=>e.fileid?(t[e.fileid]=e,t):(Q.warn("Trying to update/set a node without fileid",e),t)),{});u.default.set(this,"files",{...this.files,...e})},deleteNodes(t){t.forEach((t=>{t.fileid&&u.default.delete(this.files,t.fileid)}))},setRoot(t){let{service:e,root:n}=t;u.default.set(this.roots,e,n)},onDeletedNode(t){this.deleteNodes([t])}}})(...arguments);return t._initialized||((0,G.Ld)("files:node:deleted",t.onDeletedNode),t._initialized=!0),t},pt=function(){const t=(0,nt.Q_)("paths",{state:()=>({paths:{}}),getters:{getPath:t=>(e,n)=>{if(t.paths[e])return t.paths[e][n]}},actions:{addPath(t){this.paths[t.service]||u.default.set(this.paths,t.service,{}),u.default.set(this.paths[t.service],t.path,t.fileid)}}})(...arguments);return t._initialized||(t._initialized=!0),t},ht=(0,nt.Q_)("selection",{state:()=>({selected:[],lastSelection:[],lastSelectedIndex:null}),actions:{set(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];u.default.set(this,"selected",t)},setLastIndex(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;u.default.set(this,"lastSelection",t?this.selected:[]),u.default.set(this,"lastSelectedIndex",t)},reset(){u.default.set(this,"selected",[]),u.default.set(this,"lastSelection",[]),u.default.set(this,"lastSelectedIndex",null)}}}),ft=(0,s.j)("files","viewConfigs",{}),At=function(){const t=(0,nt.Q_)("viewconfig",{state:()=>({viewConfig:ft}),getters:{getConfig:t=>e=>t.viewConfig[e]||{}},actions:{onUpdate(t,e,n){this.viewConfig[t]||u.default.set(this.viewConfig,t,{}),u.default.set(this.viewConfig[t],e,n)},async update(t,e,n){d.default.put((0,a.generateUrl)("/apps/files/api/v1/views/".concat(t,"/").concat(e)),{value:n}),(0,G.j8)("files:viewconfig:updated",{view:t,key:e,value:n})},setSortingBy(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"basename",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"files";this.update(e,"sorting_mode",t),this.update(e,"sorting_direction","asc")},toggleSortingDirection(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files";const e="asc"===(this.getConfig(t)||{sorting_direction:"asc"}).sorting_direction?"desc":"asc";this.update(t,"sorting_direction",e)}}}),e=t(...arguments);return e._initialized||((0,G.Ld)("files:viewconfig:updated",(function(t){let{view:n,key:i,value:o}=t;e.onUpdate(n,i,o)})),e._initialized=!0),e};var vt=i(15764),mt=i(64412),gt=i.n(mt),wt=i(44706),bt=i.n(wt);const Ct=u.default.extend({name:"BreadCrumbs",components:{Home:vt.Z,NcBreadcrumbs:bt(),NcBreadcrumb:gt()},props:{path:{type:String,default:"/"}},setup:()=>({filesStore:ut(),pathsStore:pt()}),computed:{currentView(){return this.$navigation.active},dirs(){var t;return["/",...this.path.split("/").filter(Boolean).map((t="/",e=>t+="".concat(e,"/"))).map((t=>t.replace(/^(.+)\/$/,"$1")))]},sections(){return this.dirs.map((t=>{const e={...this.$route,query:{dir:t}};return{dir:t,exact:!0,name:this.getDirDisplayName(t),to:e}}))}},methods:{getNodeFromId(t){return this.filesStore.getNode(t)},getFileIdFromPath(t){var e;return this.pathsStore.getPath(null===(e=this.currentView)||void 0===e?void 0:e.id,t)},getDirDisplayName(e){var n;if("/"===e)return t("files","Home");const i=this.getFileIdFromPath(e),o=this.getNodeFromId(i);return(null==o||null===(n=o.attributes)||void 0===n?void 0:n.displayName)||(0,p.basename)(e)},onClick(t){var e;(null==t||null===(e=t.query)||void 0===e?void 0:e.dir)===this.$route.query.dir&&this.$emit("reload")},ariaLabel(e){var n,i;return(null==e||null===(n=e.to)||void 0===n||null===(i=n.query)||void 0===i?void 0:i.dir)===this.$route.query.dir?t("files","Reload current directory"):t("files",'Go to the "{dir}" directory',e)}}});var yt=i(39959),_t={};_t.styleTagTransform=B(),_t.setAttributes=I(),_t.insert=S().bind(null,"head"),_t.domAPI=_(),_t.insertStyleElement=E(),C()(yt.Z,_t),yt.Z&&yt.Z.locals&&yt.Z.locals;const xt=(0,T.Z)(Ct,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcBreadcrumbs",{attrs:{"data-cy-files-content-breadcrumbs":""}},t._l(t.sections,(function(n,i){return e("NcBreadcrumb",t._b({key:n.dir,attrs:{"aria-label":t.ariaLabel(n),title:t.ariaLabel(n)},nativeOn:{click:function(e){return t.onClick(n.to)}},scopedSlots:t._u([0===i?{key:"icon",fn:function(){return[e("Home",{attrs:{size:20}})]},proxy:!0}:null],null,!0)},"NcBreadcrumb",n,!1))})),1)}),[],!1,null,"68b3b20b",null).exports;var St=i(35212),kt=i(20296),It=i(74139),Nt=i(3443),Et=i.n(Nt),Ft=i(79855),Bt=i(34829),Pt=i(45400),Dt=i.n(Pt),Tt=i(12945),zt=i.n(Tt),Lt=i(20571),Ut=i.n(Lt),Vt=i(4777);const Ot=(0,nt.Q_)("actionsmenu",{state:()=>({opened:null})}),Zt=(0,s.j)("files","config",{show_hidden:!1,crop_image_previews:!0}),qt=function(){const t=(0,nt.Q_)("userconfig",{state:()=>({userConfig:Zt}),actions:{onUpdate(t,e){u.default.set(this.userConfig,t,e)},async update(t,e){await d.default.put((0,a.generateUrl)("/apps/files/api/v1/config/"+t),{value:e}),(0,G.j8)("files:config:updated",{key:t,value:e})}}})(...arguments);return t._initialized||((0,G.Ld)("files:config:updated",(function(e){let{key:n,value:i}=e;t.onUpdate(n,i)})),t._initialized=!0),t},Rt={name:"CustomElementRender",props:{source:{type:Object,required:!0},currentView:{type:Object,required:!0},render:{type:Function,required:!0}},computed:{element(){return this.render(this.source,this.currentView)}},watch:{element(){this.$el.replaceWith(this.element),this.$el=this.element}},mounted(){this.$el.replaceWith(this.element),this.$el=this.element}},jt=(0,T.Z)(Rt,(function(){return(0,this._self._c)("span")}),[],!1,null,null,null).exports;var Mt=i(27856);const $t={name:"CustomSvgIconRender",props:{svg:{type:String,required:!0}},watch:{svg(){this.$el.innerHTML=(0,Mt.sanitize)(this.svg)}},mounted(){this.$el.innerHTML=(0,Mt.sanitize)(this.svg)}};var Wt=i(61959),Gt={};Gt.styleTagTransform=B(),Gt.setAttributes=I(),Gt.insert=S().bind(null,"head"),Gt.domAPI=_(),Gt.insertStyleElement=E(),C()(Wt.Z,Gt),Wt.Z&&Wt.Z.locals&&Wt.Z.locals;const Ht=(0,T.Z)($t,(function(){return(0,this._self._c)("span",{staticClass:"custom-svg-icon"})}),[],!1,null,"93e9b2f4",null).exports,Kt=X(),Qt=u.default.extend({name:"FileEntry",components:{CustomElementRender:jt,CustomSvgIconRender:Ht,FileIcon:Ft.Z,FolderIcon:Bt.default,Fragment:It.H,NcActionButton:Dt(),NcActions:zt(),NcCheckboxRadioSwitch:Ut(),NcLoadingIcon:ct(),StarIcon:Vt.default},props:{active:{type:Boolean,default:!1},isSizeAvailable:{type:Boolean,default:!1},source:{type:Object,required:!0},index:{type:Number,required:!0},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0}},setup(){const t=Ot(),e=ut(),n=function(){const t=(0,nt.Q_)("keyboard",{state:()=>({altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1}),actions:{onEvent(t){t||(t=window.event),u.default.set(this,"altKey",!!t.altKey),u.default.set(this,"ctrlKey",!!t.ctrlKey),u.default.set(this,"metaKey",!!t.metaKey),u.default.set(this,"shiftKey",!!t.shiftKey)}}})(...arguments);return t._initialized||(window.addEventListener("keydown",t.onEvent),window.addEventListener("keyup",t.onEvent),window.addEventListener("mousemove",t.onEvent),t._initialized=!0),t}();return{actionsMenuStore:t,filesStore:e,keyboardStore:n,selectionStore:ht(),userConfigStore:qt()}},data:()=>({backgroundFailed:!1,backgroundImage:"",boundariesElement:document.querySelector(".app-content > .files-list"),loading:""}),computed:{userConfig(){return this.userConfigStore.userConfig},currentView(){return this.$navigation.active},columns(){var t;return this.filesListWidth<512?[]:(null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},fileid(){var t,e,n;return null===(t=this.source)||void 0===t||null===(e=t.fileid)||void 0===e||null===(n=e.toString)||void 0===n?void 0:n.call(e)},displayName(){return this.source.attributes.displayName||this.source.basename},size(){const t=parseInt(this.source.size,10)||0;return"number"!=typeof t||t<0?this.t("files","Pending"):(0,H.sS)(t,!0)},sizeOpacity(){const t=parseInt(this.source.size,10)||0;return!t||t<0?1:.7+(1-.7)*Math.pow(this.source.size/10485760,2)},linkTo(){if("folder"===this.source.type){const t={...this.$route,query:{dir:(0,p.join)(this.dir,this.source.basename)}};return{is:"router-link",title:this.t("files","Open folder {name}",{name:this.displayName}),to:t}}return this.enabledDefaultActions.length>0?{title:this.enabledDefaultActions[0].displayName([this.source],this.currentView),role:"button"}:{href:this.source.source,title:this.t("files","Download file {name}",{name:this.displayName})}},selectedFiles(){return this.selectionStore.selected},isSelected(){var t,e,n;return this.selectedFiles.includes(null===(t=this.source)||void 0===t||null===(e=t.fileid)||void 0===e||null===(n=e.toString)||void 0===n?void 0:n.call(e))},cropPreviews(){return this.userConfig.crop_image_previews},previewUrl(){try{const t=new URL(window.location.origin+this.source.attributes.previewUrl);return t.searchParams.set("x","32"),t.searchParams.set("y","32"),t.searchParams.set("a",!0===this.cropPreviews?"0":"1"),t.href}catch(t){return null}},mimeIconUrl(){var t,e,n;const i=this.source.mime||"application/octet-stream",o=null===(t=window.OC)||void 0===t||null===(e=t.MimeType)||void 0===e||null===(n=e.getIconUrl)||void 0===n?void 0:n.call(e,i);return o?"url(".concat(o,")"):""},enabledActions(){return Kt.filter((t=>!t.enabled||t.enabled([this.source],this.currentView))).sort(((t,e)=>(t.order||0)-(e.order||0)))},enabledInlineActions(){return this.filesListWidth<768?[]:this.enabledActions.filter((t=>{var e;return null==t||null===(e=t.inline)||void 0===e?void 0:e.call(t,this.source,this.currentView)}))},enabledMenuActions(){if(this.filesListWidth<768)return this.enabledDefaultActions.length>0?this.enabledActions.slice(1):this.enabledActions;const t=[...this.enabledInlineActions,...this.enabledActions.filter((t=>!t.inline))];return this.enabledDefaultActions.length>0?t.slice(1):t},enabledDefaultActions(){return[...this.enabledActions.filter((t=>t.default))]},openedMenu:{get(){return this.actionsMenuStore.opened===this.uniqueId},set(t){this.actionsMenuStore.opened=t?this.uniqueId:null}},uniqueId(){return this.source.source.split("").reduce((function(t,e){return(t=(t<<5)-t+e.charCodeAt(0))&t}),0)},isFavorite(){return 1===this.source.attributes.favorite}},watch:{active(t,e){if(!1===t&&!0===e)return this.resetState(),void(this.$el.parentNode.style.display="none");this.$el.parentNode.style.display=""},previewUrl(){this.clearImg(),this.debounceIfNotCached()}},mounted(){var t,e;this.debounceGetPreview=(0,kt.debounce)((function(){this.fetchAndApplyPreview()}),150,!1),this.debounceIfNotCached(),null===(t=this.$el.parentNode)||void 0===t||null===(e=t.addEventListener)||void 0===e||e.call(t,"contextmenu",this.onRightClick)},beforeDestroy(){this.resetState()},methods:{async debounceIfNotCached(){var t;if(this.previewUrl)return await(t=this.previewUrl,caches.open("previews").then((function(e){return e.match(t).then((function(t){return!!t}))})))?(this.backgroundImage="url(".concat(this.previewUrl,")"),void(this.backgroundFailed=!1)):void this.debounceGetPreview()},fetchAndApplyPreview(){this.previewUrl&&(this.previewPromise&&this.clearImg(),this.previewPromise=new(Et())(((t,e,n)=>{const i=new Image;i.fetchpriority=this.active?"high":"auto",i.onload=()=>{this.backgroundImage="url(".concat(this.previewUrl,")"),this.backgroundFailed=!1,t(i)},i.onerror=()=>{this.backgroundFailed=!0,e(i)},i.src=this.previewUrl,n((()=>{i.onerror=null,i.onload=null,i.src=""}))})))},resetState(){this.loading="",this.clearImg(),this.openedMenu=!1},clearImg(){this.backgroundImage="",this.backgroundFailed=!1,this.previewPromise&&(this.previewPromise.cancel(),this.previewPromise=null)},async onActionClick(t){const e=t.displayName([this.source],this.currentView);try{this.loading=t.id,u.default.set(this.source,"_loading",!0);const n=await t.exec(this.source,this.currentView,this.dir);if(null===n)return;if(n)return void(0,h.s$)(this.t("files",'"{displayName}" action executed successfully',{displayName:e}));(0,h.x2)(this.t("files",'"{displayName}" action failed',{displayName:e}))}catch(n){Q.error("Error while executing action",{action:t,e:n}),(0,h.x2)(this.t("files",'"{displayName}" action failed',{displayName:e}))}finally{this.loading="",u.default.set(this.source,"_loading",!1)}},execDefaultAction(t){"folder"!==this.source.type&&this.enabledDefaultActions.length>0&&(t.preventDefault(),t.stopPropagation(),this.enabledDefaultActions[0].exec(this.source,this.currentView,this.dir))},openDetailsIfAvailable(t){const e=this.enabledDefaultActions.find((t=>t.id===et));e&&(t.preventDefault(),t.stopPropagation(),e.exec(this.source,this.currentView))},onSelectionChange(t){var e;const n=this.index,i=this.selectionStore.lastSelectedIndex;if(null!==(e=this.keyboardStore)&&void 0!==e&&e.shiftKey&&null!==i){const t=this.selectedFiles.includes(this.fileid),e=Math.min(n,i),o=Math.max(i,n),s=this.selectionStore.lastSelection,r=this.nodes.map((t=>{var e,n;return null===(e=t.fileid)||void 0===e||null===(n=e.toString)||void 0===n?void 0:n.call(e)})).slice(e,o+1),a=[...s,...r].filter((e=>!t||e!==this.fileid));return Q.debug("Shift key pressed, selecting all files in between",{start:e,end:o,filesToSelect:r,isAlreadySelected:t}),void this.selectionStore.set(a)}Q.debug("Updating selection",{selection:t}),this.selectionStore.set(t),this.selectionStore.setLastIndex(n)},onRightClick(t){if(this.openedMenu)return;const e=this.selectedFiles.length>1;this.actionsMenuStore.opened=this.isSelected&&e?"global":this.uniqueId,t.preventDefault(),t.stopPropagation()},t:r.Iu,formatFileSize:H.sS}});var Yt=i(13352),Jt={};Jt.styleTagTransform=B(),Jt.setAttributes=I(),Jt.insert=S().bind(null,"head"),Jt.domAPI=_(),Jt.insertStyleElement=E(),C()(Yt.Z,Jt),Yt.Z&&Yt.Z.locals&&Yt.Z.locals;var Xt=i(37020),te={};te.styleTagTransform=B(),te.setAttributes=I(),te.insert=S().bind(null,"head"),te.domAPI=_(),te.insertStyleElement=E(),C()(Xt.Z,te),Xt.Z&&Xt.Z.locals&&Xt.Z.locals;const ee=(0,T.Z)(Qt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("Fragment",[e("td",{staticClass:"files-list__row-checkbox"},[t.active?e("NcCheckboxRadioSwitch",{attrs:{"aria-label":t.t("files","Select the row for {displayName}",{displayName:t.displayName}),checked:t.selectedFiles,value:t.fileid,name:"selectedFiles"},on:{"update:checked":t.onSelectionChange}}):t._e()],1),t._v(" "),e("td",{staticClass:"files-list__row-name"},[e("a",t._b({ref:"name",on:{click:t.execDefaultAction}},"a",t.linkTo,!1),[e("span",{staticClass:"files-list__row-icon"},["folder"===t.source.type?e("FolderIcon"):t.previewUrl&&!t.backgroundFailed?e("span",{ref:"previewImg",staticClass:"files-list__row-icon-preview",style:{backgroundImage:t.backgroundImage}}):t.mimeIconUrl?e("span",{staticClass:"files-list__row-icon-preview files-list__row-icon-preview--mime",style:{backgroundImage:t.mimeIconUrl}}):e("FileIcon"),t._v(" "),t.isFavorite?e("span",{staticClass:"files-list__row-icon-favorite",attrs:{"aria-label":t.t("files","Favorite")}},[e("StarIcon",{attrs:{"aria-hidden":"true",size:20}})],1):t._e()],1),t._v(" "),e("span",{staticClass:"files-list__row-name-text"},[t._v(t._s(t.displayName))])])]),t._v(" "),e("td",{staticClass:"files-list__row-actions",class:"files-list__row-actions-".concat(t.uniqueId)},[t.active?e("NcActions",{ref:"actionsMenu",attrs:{"boundaries-element":t.boundariesElement,container:t.boundariesElement,disabled:t.source._loading,"force-title":!0,"force-menu":!0,inline:t.enabledInlineActions.length,open:t.openedMenu},on:{"update:open":function(e){t.openedMenu=e}}},t._l(t.enabledMenuActions,(function(n){return e("NcActionButton",{key:n.id,class:"files-list__row-action-"+n.id,on:{click:function(e){return t.onActionClick(n)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading===n.id?e("NcLoadingIcon",{attrs:{size:18}}):e("CustomSvgIconRender",{attrs:{svg:n.iconSvgInline([t.source],t.currentView)}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.displayName([t.source],t.currentView))+"\n\t\t\t")])})),1):t._e()],1),t._v(" "),t.isSizeAvailable?e("td",{staticClass:"files-list__row-size",style:{opacity:t.sizeOpacity},on:{click:t.openDetailsIfAvailable}},[e("span",[t._v(t._s(t.size))])]):t._e(),t._v(" "),t._l(t.columns,(function(n){var i;return e("td",{key:n.id,staticClass:"files-list__row-column-custom",class:"files-list__row-".concat(null===(i=t.currentView)||void 0===i?void 0:i.id,"-").concat(n.id),on:{click:t.openDetailsIfAvailable}},[t.active?e("CustomElementRender",{attrs:{"current-view":t.currentView,render:n.render,source:t.source}}):t._e()],1)}))],2)}),[],!1,null,"0600090e",null).exports,ne=u.default.extend({name:"FilesListFooter",components:{},props:{isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},summary:{type:String,default:""},filesListWidth:{type:Number,default:0}},setup(){const t=pt();return{filesStore:ut(),pathsStore:t}},computed:{currentView(){return this.$navigation.active},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},currentFolder(){var t;if(null===(t=this.currentView)||void 0===t||!t.id)return;if("/"===this.dir)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.dir);return this.filesStore.getNode(e)},columns(){var t;return this.filesListWidth<512?[]:(null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]},totalSize(){var t;return null!==(t=this.currentFolder)&&void 0!==t&&t.size?(0,H.sS)(this.currentFolder.size,!0):(0,H.sS)(this.nodes.reduce(((t,e)=>t+e.size||0),0),!0)}},methods:{classForColumn(t){return{"files-list__row-column-custom":!0,["files-list__row-".concat(this.currentView.id,"-").concat(t.id)]:!0}},t:r.Iu}});var ie=i(97105),oe={};oe.styleTagTransform=B(),oe.setAttributes=I(),oe.insert=S().bind(null,"head"),oe.domAPI=_(),oe.insertStyleElement=E(),C()(ie.Z,oe),ie.Z&&ie.Z.locals&&ie.Z.locals;const se=(0,T.Z)(ne,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",[e("th",{staticClass:"files-list__row-checkbox"},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("files","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"files-list__row-name"},[e("span",{staticClass:"files-list__row-icon"}),t._v(" "),e("span",[t._v(t._s(t.summary))])]),t._v(" "),e("td",{staticClass:"files-list__row-actions"}),t._v(" "),t.isSizeAvailable?e("td",{staticClass:"files-list__column files-list__row-size"},[e("span",[t._v(t._s(t.totalSize))])]):t._e(),t._v(" "),t._l(t.columns,(function(n){var i;return e("th",{key:n.id,class:t.classForColumn(n)},[e("span",[t._v(t._s(null===(i=n.summary)||void 0===i?void 0:i.call(n,t.nodes,t.currentView)))])])}))],2)}),[],!1,null,"e6a083be",null).exports,re=u.default.extend({data:()=>({filesListWidth:null}),created(){const t=document.querySelector("#app-content-vue");this.$resizeObserver=new ResizeObserver((e=>{e.length>0&&e[0].target===t&&(this.filesListWidth=e[0].contentRect.width)})),this.$resizeObserver.observe(t)},beforeDestroy(){this.$resizeObserver.disconnect()}}),ae=X(),le=u.default.extend({name:"FilesListHeaderActions",components:{CustomSvgIconRender:Ht,NcActions:zt(),NcActionButton:Dt(),NcLoadingIcon:ct()},mixins:[re],props:{currentView:{type:Object,required:!0},selectedNodes:{type:Array,default:()=>[]}},setup:()=>({actionsMenuStore:Ot(),filesStore:ut(),selectionStore:ht()}),data:()=>({loading:null}),computed:{dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},enabledActions(){return ae.filter((t=>t.execBatch)).filter((t=>!t.enabled||t.enabled(this.nodes,this.currentView))).sort(((t,e)=>(t.order||0)-(e.order||0)))},nodes(){return this.selectedNodes.map((t=>this.getNode(t))).filter((t=>t))},areSomeNodesLoading(){return this.nodes.some((t=>t._loading))},openedMenu:{get(){return"global"===this.actionsMenuStore.opened},set(t){this.actionsMenuStore.opened=t?"global":null}},inlineActions(){return this.filesListWidth<512?0:this.filesListWidth<768?1:this.filesListWidth<1024?2:3}},methods:{getNode(t){return this.filesStore.getNode(t)},async onActionClick(t){const e=t.displayName(this.nodes,this.currentView),n=this.selectedNodes;try{this.loading=t.id,this.nodes.forEach((t=>{u.default.set(t,"_loading",!0)}));const i=await t.execBatch(this.nodes,this.currentView,this.dir);if(!i.some((t=>null!==t)))return void this.selectionStore.reset();if(i.some((t=>!1===t))){const t=n.filter(((t,e)=>!1===i[e]));return this.selectionStore.set(t),void(0,h.x2)(this.t("files",'"{displayName}" failed on some elements ',{displayName:e}))}(0,h.s$)(this.t("files",'"{displayName}" batch action executed successfully',{displayName:e})),this.selectionStore.reset()}catch(n){Q.error("Error while executing action",{action:t,e:n}),(0,h.x2)(this.t("files",'"{displayName}" action failed',{displayName:e}))}finally{this.loading=null,this.nodes.forEach((t=>{u.default.set(t,"_loading",!1)}))}},t:r.Iu}});var ce=i(97877),de={};de.styleTagTransform=B(),de.setAttributes=I(),de.insert=S().bind(null,"head"),de.domAPI=_(),de.insertStyleElement=E(),C()(ce.Z,de),ce.Z&&ce.Z.locals&&ce.Z.locals;const ue=(0,T.Z)(le,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("th",{staticClass:"files-list__column files-list__row-actions-batch",attrs:{colspan:"2"}},[e("NcActions",{ref:"actionsMenu",attrs:{disabled:!!t.loading||t.areSomeNodesLoading,"force-title":!0,inline:t.inlineActions,"menu-title":t.inlineActions<=1?t.t("files","Actions"):null,open:t.openedMenu},on:{"update:open":function(e){t.openedMenu=e}}},t._l(t.enabledActions,(function(n){return e("NcActionButton",{key:n.id,class:"files-list__row-actions-batch-"+n.id,on:{click:function(e){return t.onActionClick(n)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading===n.id?e("NcLoadingIcon",{attrs:{size:18}}):e("CustomSvgIconRender",{attrs:{svg:n.iconSvgInline(t.nodes,t.currentView)}})]},proxy:!0}],null,!0)},[t._v("\n\t\t\t"+t._s(n.displayName(t.nodes,t.currentView))+"\n\t\t")])})),1)],1)}),[],!1,null,"03e57b1e",null).exports;var pe=i(20404),he=i(23873);const fe=u.default.extend({computed:{...(0,nt.rn)(At,["getConfig","setSortingBy","toggleSortingDirection"]),currentView(){return this.$navigation.active},sortingMode(){var t,e;return(null===(t=this.getConfig(this.currentView.id))||void 0===t?void 0:t.sorting_mode)||(null===(e=this.currentView)||void 0===e?void 0:e.defaultSortKey)||"basename"},isAscSorting(){var t;return"asc"===(null===(t=this.getConfig(this.currentView.id))||void 0===t?void 0:t.sorting_direction)}},methods:{toggleSortBy(t){this.sortingMode!==t?this.setSortingBy(t,this.currentView.id):this.toggleSortingDirection(this.currentView.id)}}}),Ae=u.default.extend({name:"FilesListHeaderButton",components:{MenuDown:pe.Z,MenuUp:he.Z,NcButton:at()},mixins:[fe],props:{name:{type:String,required:!0},mode:{type:String,required:!0}},methods:{sortAriaLabel(t){const e=this.isAscSorting?this.t("files","ascending"):this.t("files","descending");return this.t("files","Sort list by {column} ({direction})",{column:t,direction:e})},t:r.Iu}});var ve=i(29252),me={};me.styleTagTransform=B(),me.setAttributes=I(),me.insert=S().bind(null,"head"),me.domAPI=_(),me.insertStyleElement=E(),C()(ve.Z,me),ve.Z&&ve.Z.locals&&ve.Z.locals;const ge=(0,T.Z)(Ae,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcButton",{staticClass:"files-list__column-sort-button",class:{"files-list__column-sort-button--active":t.sortingMode===t.mode},attrs:{"aria-label":t.sortAriaLabel(t.name),type:"tertiary"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.toggleSortBy(t.mode)}}},[t.sortingMode!==t.mode||t.isAscSorting?e("MenuUp",{attrs:{slot:"icon"},slot:"icon"}):e("MenuDown",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t"+t._s(t.name)+"\n")],1)}),[],!1,null,null,null).exports,we=u.default.extend({name:"FilesListHeader",components:{FilesListHeaderButton:ge,NcCheckboxRadioSwitch:Ut(),FilesListHeaderActions:ue},mixins:[fe],props:{isSizeAvailable:{type:Boolean,default:!1},nodes:{type:Array,required:!0},filesListWidth:{type:Number,default:0}},setup:()=>({filesStore:ut(),selectionStore:ht()}),computed:{currentView(){return this.$navigation.active},columns(){var t;return this.filesListWidth<512?[]:(null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},selectAllBind(){const t=this.isNoneSelected||this.isSomeSelected?this.t("files","Select all"):this.t("files","Unselect all");return{"aria-label":t,checked:this.isAllSelected,indeterminate:this.isSomeSelected,title:t}},selectedNodes(){return this.selectionStore.selected},isAllSelected(){return this.selectedNodes.length===this.nodes.length},isNoneSelected(){return 0===this.selectedNodes.length},isSomeSelected(){return!this.isAllSelected&&!this.isNoneSelected}},methods:{classForColumn(t){return{"files-list__column":!0,"files-list__column--sortable":!!t.sort,"files-list__row-column-custom":!0,["files-list__row-".concat(this.currentView.id,"-").concat(t.id)]:!0}},onToggleAll(t){if(t){const t=this.nodes.map((t=>t.fileid.toString()));Q.debug("Added all nodes to selection",{selection:t}),this.selectionStore.setLastIndex(null),this.selectionStore.set(t)}else Q.debug("Cleared selection"),this.selectionStore.reset()},t:r.Iu}});var be=i(96153),Ce={};Ce.styleTagTransform=B(),Ce.setAttributes=I(),Ce.insert=S().bind(null,"head"),Ce.domAPI=_(),Ce.insertStyleElement=E(),C()(be.Z,Ce),be.Z&&be.Z.locals&&be.Z.locals;const ye=(0,T.Z)(we,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",[e("th",{staticClass:"files-list__column files-list__row-checkbox"},[e("NcCheckboxRadioSwitch",t._b({on:{"update:checked":t.onToggleAll}},"NcCheckboxRadioSwitch",t.selectAllBind,!1))],1),t._v(" "),t.isNoneSelected?[e("th",{staticClass:"files-list__column files-list__row-name files-list__column--sortable",on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.toggleSortBy("basename")}}},[e("span",{staticClass:"files-list__row-icon"}),t._v(" "),e("FilesListHeaderButton",{attrs:{name:t.t("files","Name"),mode:"basename"}})],1),t._v(" "),e("th",{staticClass:"files-list__row-actions"}),t._v(" "),t.isSizeAvailable?e("th",{staticClass:"files-list__column files-list__row-size",class:{"files-list__column--sortable":t.isSizeAvailable}},[e("FilesListHeaderButton",{attrs:{name:t.t("files","Size"),mode:"size"}})],1):t._e(),t._v(" "),t._l(t.columns,(function(n){return e("th",{key:n.id,class:t.classForColumn(n)},[n.sort?e("FilesListHeaderButton",{attrs:{name:n.title,mode:n.id}}):e("span",[t._v("\n\t\t\t\t"+t._s(n.title)+"\n\t\t\t")])],1)}))]:e("FilesListHeaderActions",{attrs:{"current-view":t.currentView,"selected-nodes":t.selectedNodes}})],2)}),[],!1,null,"76b6186a",null).exports,_e=u.default.extend({name:"FilesListVirtual",components:{RecycleScroller:St.EK,FileEntry:ee,FilesListHeader:ye,FilesListFooter:se},mixins:[re],props:{currentView:{type:Object,required:!0},nodes:{type:Array,required:!0}},data:()=>({FileEntry:ee}),computed:{files(){return this.nodes.filter((t=>"file"===t.type))},summaryFile(){const t=this.files.length;return(0,r.uN)("files","{count} file","{count} files",t,{count:t})},summaryFolder(){const t=this.nodes.length-this.files.length;return(0,r.uN)("files","{count} folder","{count} folders",t,{count:t})},summary(){return(0,r.Iu)("files","{summaryFile} and {summaryFolder}",this)},isSizeAvailable(){return!(this.filesListWidth<768)&&this.nodes.some((t=>void 0!==t.attributes.size))}},mounted(){const t=this.$el.querySelectorAll(".vue-recycle-scroller__slot");t[0].setAttribute("role","thead"),t[1].setAttribute("role","tfoot")},methods:{getFileId:t=>t.fileid,t:r.Iu}});var xe=i(76775),Se={};Se.styleTagTransform=B(),Se.setAttributes=I(),Se.insert=S().bind(null,"head"),Se.domAPI=_(),Se.insertStyleElement=E(),C()(xe.Z,Se),xe.Z&&xe.Z.locals&&xe.Z.locals;const ke=(0,T.Z)(_e,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("RecycleScroller",{ref:"recycleScroller",staticClass:"files-list",attrs:{"key-field":"source",items:t.nodes,"item-size":55,"table-mode":!0,"item-class":"files-list__row","item-tag":"tr","list-class":"files-list__body","list-tag":"tbody",role:"table"},scopedSlots:t._u([{key:"default",fn:function(n){let{item:i,active:o,index:s}=n;return[e("FileEntry",{attrs:{active:o,index:s,"is-size-available":t.isSizeAvailable,"files-list-width":t.filesListWidth,nodes:t.nodes,source:i}})]}},{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.currentView.caption||"")+"\n\t\t\t"+t._s(t.t("files","This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list."))+"\n\t\t")]),t._v(" "),e("FilesListHeader",{attrs:{"files-list-width":t.filesListWidth,"is-size-available":t.isSizeAvailable,nodes:t.nodes}})]},proxy:!0},{key:"after",fn:function(){return[e("FilesListFooter",{attrs:{"files-list-width":t.filesListWidth,"is-size-available":t.isSizeAvailable,nodes:t.nodes,summary:t.summary}})]},proxy:!0}])})}),[],!1,null,"640a8bb8",null).exports;var Ie=i(14222);function Ne(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}const Ee=class{constructor(){Ne(this,"_views",[]),Ne(this,"_currentView",null),Q.debug("Navigation service initialized")}register(t){try{Be(t),Fe(t,this._views)}catch(e){throw e instanceof Error&&Q.error(e.message,{view:t}),e}t.legacy&&Q.warn("Legacy view detected, please migrate to Vue"),t.iconClass&&(t.legacy=!0),this._views.push(t)}remove(t){const e=this._views.findIndex((e=>e.id===t));-1!==e&&this._views.splice(e,1)}get views(){return this._views}setActive(t){this._currentView=t}get active(){return this._currentView}},Fe=function(t,e){if(e.find((e=>e.id===t.id)))throw new Error("Navigation id ".concat(t.id," is already registered"));return!0},Be=function(t){if(!t.id||"string"!=typeof t.id)throw new Error("Navigation id is required and must be a string");if(!t.name||"string"!=typeof t.name)throw new Error("Navigation name is required and must be a string");if(!t.legacy){if(!t.getContents||"function"!=typeof t.getContents)throw new Error("Navigation getContents is required and must be a function");if(!t.icon||"string"!=typeof t.icon||!(0,Ie.Z)(t.icon))throw new Error("Navigation icon is required and must be a valid svg string")}if(!("order"in t)||"number"!=typeof t.order)throw new Error("Navigation order is required and must be a number");if(t.columns&&t.columns.forEach(Pe),t.emptyView&&"function"!=typeof t.emptyView)throw new Error("Navigation emptyView must be a function");if(t.parent&&"string"!=typeof t.parent)throw new Error("Navigation parent must be a string");if("sticky"in t&&"boolean"!=typeof t.sticky)throw new Error("Navigation sticky must be a boolean");if("expanded"in t&&"boolean"!=typeof t.expanded)throw new Error("Navigation expanded must be a boolean");if(t.defaultSortKey&&"string"!=typeof t.defaultSortKey)throw new Error("Navigation defaultSortKey must be a string");return!0},Pe=function(t){if(!t.id||"string"!=typeof t.id)throw new Error("A column id is required");if(!t.title||"string"!=typeof t.title)throw new Error("A column title is required");if(!t.render||"function"!=typeof t.render)throw new Error("A render function is required");if(t.sort&&"function"!=typeof t.sort)throw new Error("Column sortFunction must be a function");if(t.summary&&"function"!=typeof t.summary)throw new Error("Column summary must be a function");return!0},De=u.default.extend({name:"FilesList",components:{BreadCrumbs:xt,FilesListVirtual:ke,NcAppContent:st(),NcButton:at(),NcEmptyContent:A(),NcLoadingIcon:ct(),TrashCan:dt.Z},mixins:[fe],setup(){const t=pt();return{filesStore:ut(),pathsStore:t,selectionStore:ht(),viewConfigStore:At()}},data:()=>({loading:!0,promise:null}),computed:{currentView(){return this.$navigation.active||this.$navigation.views.find((t=>"files"===t.id))},dir(){var t,e;return((null===(t=this.$route)||void 0===t||null===(e=t.query)||void 0===e?void 0:e.dir)||"/").replace(/^(.+)\/$/,"$1")},currentFolder(){var t;if(null===(t=this.currentView)||void 0===t||!t.id)return;if("/"===this.dir)return this.filesStore.getRoot(this.currentView.id);const e=this.pathsStore.getPath(this.currentView.id,this.dir);return this.filesStore.getNode(e)},dirContents(){var t,e;if(!this.currentView)return[];const n=((null===(t=this.currentView)||void 0===t?void 0:t.columns)||[]).find((t=>t.id===this.sortingMode));if(null!=n&&n.sort&&"function"==typeof n.sort){var i;const t=[...((null===(i=this.currentFolder)||void 0===i?void 0:i._children)||[]).map(this.getNode).filter((t=>t))].sort(n.sort);return this.isAscSorting?t:t.reverse()}return(0,it.X)([...((null===(e=this.currentFolder)||void 0===e?void 0:e._children)||[]).map(this.getNode).filter((t=>t))],[..."basename"===this.sortingMode?[t=>"folder"!==t.type]:[],t=>t[this.sortingMode],t=>t.basename],this.isAscSorting?["asc","asc","asc"]:["desc","desc","desc"])},isEmptyDir(){return 0===this.dirContents.length},isRefreshing(){return void 0!==this.currentFolder&&!this.isEmptyDir&&this.loading},toPreviousDir(){const t=this.dir.split("/").slice(0,-1).join("/")||"/";return{...this.$route,query:{dir:t}}}},watch:{currentView(t,e){(null==t?void 0:t.id)!==(null==e?void 0:e.id)&&(Q.debug("View changed",{newView:t,oldView:e}),this.selectionStore.reset(),this.fetchContent())},dir(t,e){var n,i;Q.debug("Directory changed",{newDir:t,oldDir:e}),this.selectionStore.reset(),this.fetchContent(),null!==(n=this.$refs)&&void 0!==n&&null!==(i=n.filesListVirtual)&&void 0!==i&&i.$el&&(this.$refs.filesListVirtual.$el.scrollTop=0)}},methods:{async fetchContent(){var t,e;if(null!==(t=this.currentView)&&void 0!==t&&t.legacy)return;this.loading=!0;const n=this.dir,i=this.currentView;"function"==typeof(null===(e=this.promise)||void 0===e?void 0:e.cancel)&&(this.promise.cancel(),Q.debug("Cancelled previous ongoing fetch")),this.promise=i.getContents(n);try{const{folder:t,contents:e}=await this.promise;Q.debug("Fetched contents",{dir:n,folder:t,contents:e}),this.filesStore.updateNodes(e),t._children=e.map((t=>t.fileid)),"/"===n?this.filesStore.setRoot({service:i.id,root:t}):t.fileid?(this.filesStore.updateNodes([t]),this.pathsStore.addPath({service:i.id,fileid:t.fileid,path:n})):Q.error("Invalid root folder returned",{dir:n,folder:t,currentView:i}),e.filter((t=>"folder"===t.type)).forEach((t=>{this.pathsStore.addPath({service:i.id,fileid:t.fileid,path:(0,p.join)(n,t.basename)})}))}catch(t){Q.error("Error while fetching content",{error:t})}finally{this.loading=!1}},getNode(t){return this.filesStore.getNode(t)},t:r.Iu}});var Te=i(1508),ze={};ze.styleTagTransform=B(),ze.setAttributes=I(),ze.insert=S().bind(null,"head"),ze.domAPI=_(),ze.insertStyleElement=E(),C()(Te.Z,ze),Te.Z&&Te.Z.locals&&Te.Z.locals;const Le=(0,T.Z)(De,(function(){var t,e,n=this,i=n._self._c;return n._self._setupProxy,i("NcAppContent",{directives:[{name:"show",rawName:"v-show",value:!(null!==(t=n.currentView)&&void 0!==t&&t.legacy),expression:"!currentView?.legacy"}],class:{"app-content--hidden":null===(e=n.currentView)||void 0===e?void 0:e.legacy},attrs:{"data-cy-files-content":""}},[i("div",{staticClass:"files-list__header"},[i("BreadCrumbs",{attrs:{path:n.dir},on:{reload:n.fetchContent}}),n._v(" "),n.isRefreshing?i("NcLoadingIcon",{staticClass:"files-list__refresh-icon"}):n._e()],1),n._v(" "),n.loading&&!n.isRefreshing?i("NcLoadingIcon",{staticClass:"files-list__loading-icon",attrs:{size:38,title:n.t("files","Loading current folder")}}):!n.loading&&n.isEmptyDir?i("NcEmptyContent",{attrs:{title:n.t("files","No files in here"),description:n.t("files","No files or folders have been deleted yet"),"data-cy-files-content-empty":""},scopedSlots:n._u([{key:"action",fn:function(){return["/"!==n.dir?i("NcButton",{attrs:{"aria-label":"t('files', 'Go to the previous folder')",type:"primary",to:n.toPreviousDir}},[n._v("\n\t\t\t\t"+n._s(n.t("files","Go back"))+"\n\t\t\t")]):n._e()]},proxy:!0},{key:"icon",fn:function(){return[i("TrashCan")]},proxy:!0}])}):i("FilesListVirtual",{ref:"filesListVirtual",attrs:{"current-view":n.currentView,nodes:n.dirContents}})],1)}),[],!1,null,"66068cbb",null).exports;var Ue=i(57638),Ve=i(55209),Oe=i.n(Ve),Ze=i(14032),qe=i.n(Ze),Re=i(91211),je=i.n(Re);var Me=i(28615),$e=i(74184),We=i(48959),Ge=i.n(We);const He={name:"NavigationQuota",components:{ChartPie:$e.Z,NcAppNavigationItem:qe(),NcProgressBar:Ge()},data:()=>({loadingStorageStats:!1,storageStats:(0,s.j)("files","storageStats",null)}),computed:{storageStatsTitle(){var t,e,n;const i=(0,H.sS)(null===(t=this.storageStats)||void 0===t?void 0:t.used),o=(0,H.sS)(null===(e=this.storageStats)||void 0===e?void 0:e.quota);return(null===(n=this.storageStats)||void 0===n?void 0:n.quota)<0?this.t("files","{usedQuotaByte} used",{usedQuotaByte:i}):this.t("files","{used} of {quota} used",{used:i,quota:o})},storageStatsTooltip(){return this.storageStats.relative?this.t("files","{relative}% used",this.storageStats):""}},beforeMount(){setInterval(this.throttleUpdateStorageStats,6e4),(0,G.Ld)("files:node:created",this.throttleUpdateStorageStats),(0,G.Ld)("files:node:deleted",this.throttleUpdateStorageStats),(0,G.Ld)("files:node:moved",this.throttleUpdateStorageStats),(0,G.Ld)("files:node:updated",this.throttleUpdateStorageStats)},methods:{debounceUpdateStorageStats:(0,Me.D)(200,(function(t){this.updateStorageStats(t)})),throttleUpdateStorageStats:(0,Me.P)(1e3,(function(t){this.updateStorageStats(t)})),async updateStorageStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(!this.loadingStorageStats){this.loadingStorageStats=!0;try{var n;const t=await d.default.get((0,a.generateUrl)("/apps/files/api/v1/stats"));if(null==t||null===(n=t.data)||void 0===n||!n.data)throw new Error("Invalid storage stats");this.storageStats=t.data.data}catch(n){Q.error("Could not refresh storage stats",{error:n}),e&&(0,h.x2)(t("files","Could not refresh storage stats"))}finally{this.loadingStorageStats=!1}}},t:r.Iu}};var Ke=i(93582),Qe={};Qe.styleTagTransform=B(),Qe.setAttributes=I(),Qe.insert=S().bind(null,"head"),Qe.domAPI=_(),Qe.insertStyleElement=E(),C()(Ke.Z,Qe),Ke.Z&&Ke.Z.locals&&Ke.Z.locals;const Ye=(0,T.Z)(He,(function(){var t=this,e=t._self._c;return t.storageStats?e("NcAppNavigationItem",{staticClass:"app-navigation-entry__settings-quota",class:{"app-navigation-entry__settings-quota--not-unlimited":t.storageStats.quota>=0},attrs:{"aria-label":t.t("files","Storage informations"),loading:t.loadingStorageStats,name:t.storageStatsTitle,title:t.storageStatsTooltip,"data-cy-files-navigation-settings-quota":""},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.debounceUpdateStorageStats.apply(null,arguments)}}},[e("ChartPie",{attrs:{slot:"icon",size:20},slot:"icon"}),t._v(" "),t.storageStats.quota>=0?e("NcProgressBar",{attrs:{slot:"extra",error:t.storageStats.relative>80,value:Math.min(t.storageStats.relative,100)},slot:"extra"}):t._e()],1):t._e()}),[],!1,null,"918797b2",null).exports;var Je=i(68988),Xe=i.n(Je),tn=i(16809),en=i.n(tn),nn=i(70386),on=i(36029),sn=i.n(on);const rn={name:"Setting",props:{el:{type:Function,required:!0}},mounted(){this.$el.appendChild(this.el())}},an=(0,T.Z)(rn,(function(){return(0,this._self._c)("div")}),[],!1,null,null,null).exports,ln={name:"Settings",components:{Clipboard:nn.Z,NcAppSettingsDialog:Xe(),NcAppSettingsSection:en(),NcCheckboxRadioSwitch:Ut(),NcInputField:sn(),Setting:an},props:{open:{type:Boolean,default:!1}},setup:()=>({userConfigStore:qt()}),data(){var t,e,n,i;return{settings:(null===(t=window.OCA)||void 0===t||null===(e=t.Files)||void 0===e||null===(n=e.Settings)||void 0===n?void 0:n.settings)||[],webdavUrl:(0,a.generateRemoteUrl)("dav/files/"+encodeURIComponent(null===(i=(0,l.ts)())||void 0===i?void 0:i.uid)),webdavDocs:"https://docs.nextcloud.com/server/stable/go.php?to=user-webdav",appPasswordUrl:(0,a.generateUrl)("/settings/user/security#generate-app-token-section"),webdavUrlCopied:!1}},computed:{userConfig(){return this.userConfigStore.userConfig}},beforeMount(){this.settings.forEach((t=>t.open()))},beforeDestroy(){this.settings.forEach((t=>t.close()))},methods:{onClose(){this.$emit("close")},setConfig(t,e){this.userConfigStore.update(t,e)},async copyCloudId(){document.querySelector("input#webdav-url-input").select(),navigator.clipboard?(await navigator.clipboard.writeText(this.webdavUrl),this.webdavUrlCopied=!0,(0,h.s$)(t("files","WebDAV URL copied to clipboard")),setTimeout((()=>{this.webdavUrlCopied=!1}),5e3)):(0,h.x2)(t("files","Clipboard is not available"))},t:r.Iu}},cn=ln;var dn=i(35662),un={};un.styleTagTransform=B(),un.setAttributes=I(),un.insert=S().bind(null,"head"),un.domAPI=_(),un.insertStyleElement=E(),C()(dn.Z,un),dn.Z&&dn.Z.locals&&dn.Z.locals;const pn=(0,T.Z)(cn,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.open,"show-navigation":!0,title:t.t("files","Files settings")},on:{"update:open":t.onClose}},[e("NcAppSettingsSection",{attrs:{id:"settings",title:t.t("files","Files settings")}},[e("NcCheckboxRadioSwitch",{attrs:{checked:t.userConfig.show_hidden},on:{"update:checked":function(e){return t.setConfig("show_hidden",e)}}},[t._v("\n\t\t\t"+t._s(t.t("files","Show hidden files"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{checked:t.userConfig.crop_image_previews},on:{"update:checked":function(e){return t.setConfig("crop_image_previews",e)}}},[t._v("\n\t\t\t"+t._s(t.t("files","Crop image previews"))+"\n\t\t")])],1),t._v(" "),0!==t.settings.length?e("NcAppSettingsSection",{attrs:{id:"more-settings",title:t.t("files","Additional settings")}},[t._l(t.settings,(function(t){return[e("Setting",{key:t.name,attrs:{el:t.el}})]}))],2):t._e(),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"webdav",title:t.t("files","WebDAV")}},[e("NcInputField",{attrs:{id:"webdav-url-input","show-trailing-button":!0,success:t.webdavUrlCopied,"trailing-button-label":t.t("files","Copy to clipboard"),value:t.webdavUrl,readonly:"readonly",type:"url"},on:{focus:function(t){return t.target.select()},"trailing-button-click":t.copyCloudId},scopedSlots:t._u([{key:"trailing-button-icon",fn:function(){return[e("Clipboard",{attrs:{size:20}})]},proxy:!0}])}),t._v(" "),e("em",[e("a",{staticClass:"setting-link",attrs:{href:t.webdavDocs,target:"_blank",rel:"noreferrer noopener"}},[t._v("\n\t\t\t\t"+t._s(t.t("files","Use this address to access your Files via WebDAV"))+" ↗\n\t\t\t")])]),t._v(" "),e("br"),t._v(" "),e("em",[e("a",{staticClass:"setting-link",attrs:{href:t.appPasswordUrl}},[t._v("\n\t\t\t\t"+t._s(t.t("files","If you have enabled 2FA, you must create and use a new app password by clicking here."))+" ↗\n\t\t\t")])])],1)],1)}),[],!1,null,"76ca5d1f",null).exports,hn={name:"Navigation",components:{Cog:Ue.default,NavigationQuota:Ye,NcAppNavigation:Oe(),NcAppNavigationItem:qe(),NcIconSvgWrapper:je(),SettingsModal:pn},props:{Navigation:{type:Ee,required:!0}},setup:()=>({viewConfigStore:At()}),data:()=>({settingsOpened:!1}),computed:{currentViewId(){var t,e;return(null===(t=this.$route)||void 0===t||null===(e=t.params)||void 0===e?void 0:e.view)||"files"},currentView(){return this.views.find((t=>t.id===this.currentViewId))},views(){return this.Navigation.views},parentViews(){return this.views.filter((t=>!t.parent)).sort(((t,e)=>t.order-e.order))},childViews(){return this.views.filter((t=>!!t.parent)).reduce(((t,e)=>(t[e.parent]=[...t[e.parent]||[],e],t[e.parent].sort(((t,e)=>t.order-e.order)),t)),{})}},watch:{currentView(t,e){(null==t?void 0:t.id)!==(null==e?void 0:e.id)&&(this.Navigation.setActive(t),Q.debug("Navigation changed",{id:t.id,view:t}),this.showView(t,e))}},beforeMount(){this.currentView&&(Q.debug("Navigation mounted. Showing requested view",{view:this.currentView}),this.showView(this.currentView)),(0,G.Ld)("files:legacy-navigation:changed",this.onLegacyNavigationChanged),(0,G.Ld)("files:legacy-view:initialized",(()=>{Q.debug("Legacy view initialized",{...this.currentView}),this.showView(this.currentView)}))},methods:{showView(t,e){var n,i,o,s,r;if(null===(n=window)||void 0===n||null===(i=n.OCA)||void 0===i||null===(o=i.Files)||void 0===o||null===(s=o.Sidebar)||void 0===s||null===(r=s.close)||void 0===r||r.call(s),null!=t&&t.legacy){const e=document.querySelector("#app-content #app-content-"+this.currentView.id+".viewcontainer");document.querySelectorAll("#app-content .viewcontainer").forEach((t=>{t.classList.add("hidden")})),e.classList.remove("hidden");const{dir:n="/"}=OC.Util.History.parseUrlQuery(),i={itemId:t.id,dir:n};Q.debug("Triggering legacy navigation event",i),window.jQuery(e).trigger(new window.jQuery.Event("show",i)),window.jQuery(e).trigger(new window.jQuery.Event("urlChanged",i))}this.Navigation.setActive(t),function(t){const e=document.getElementById("page-heading-level-1");e&&(e.textContent=t)}(t.name),(0,G.j8)("files:navigation:changed",t)},onLegacyNavigationChanged(){let{id:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{id:"files"};const e=this.Navigation.views.find((e=>e.id===t));e&&e.legacy&&e.id!==this.currentView.id&&(this.$router.replace({...this.$route,params:{view:e.id}}),this.Navigation.setActive(e),this.showView(e))},onToggleExpand(t){const e=this.isExpanded(t);t.expanded=!e,this.viewConfigStore.update(t.id,"expanded",!e)},isExpanded(t){var e;return"boolean"==typeof(null===(e=this.viewConfigStore.getConfig(t.id))||void 0===e?void 0:e.expanded)?!0===this.viewConfigStore.getConfig(t.id).expanded:!0===t.expanded},generateToNavigation(t){if(t.params){const{dir:e,fileid:n}=t.params;return{name:"filelist",params:t.params,query:{dir:e,fileid:n}}}return{name:"filelist",params:{view:t.id}}},openSettings(){this.settingsOpened=!0},onSettingsClose(){this.settingsOpened=!1},t:r.Iu}},fn=hn;var An=i(87289),vn={};vn.styleTagTransform=B(),vn.setAttributes=I(),vn.insert=S().bind(null,"head"),vn.domAPI=_(),vn.insertStyleElement=E(),C()(An.Z,vn),An.Z&&An.Z.locals&&An.Z.locals;const mn=(0,T.Z)(fn,(function(){var t=this,e=t._self._c;return e("NcAppNavigation",{attrs:{"data-cy-files-navigation":""},scopedSlots:t._u([{key:"list",fn:function(){return t._l(t.parentViews,(function(n){return e("NcAppNavigationItem",{key:n.id,attrs:{"allow-collapse":!0,"data-cy-files-navigation-item":n.id,icon:n.iconClass,open:t.isExpanded(n),pinned:n.sticky,title:n.name,to:t.generateToNavigation(n)},on:{"update:open":function(e){return t.onToggleExpand(n)}}},[n.icon?e("NcIconSvgWrapper",{attrs:{slot:"icon",svg:n.icon},slot:"icon"}):t._e(),t._v(" "),t._l(t.childViews[n.id],(function(n){return e("NcAppNavigationItem",{key:n.id,attrs:{"data-cy-files-navigation-item":n.id,exact:!0,icon:n.iconClass,title:n.name,to:t.generateToNavigation(n)}},[n.icon?e("NcIconSvgWrapper",{attrs:{slot:"icon",svg:n.icon},slot:"icon"}):t._e()],1)}))],2)}))},proxy:!0},{key:"footer",fn:function(){return[e("ul",{staticClass:"app-navigation-entry__settings"},[e("NavigationQuota"),t._v(" "),e("NcAppNavigationItem",{attrs:{"aria-label":t.t("files","Open the files app settings"),title:t.t("files","Files settings"),"data-cy-files-navigation-settings-button":""},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openSettings.apply(null,arguments)}}},[e("Cog",{attrs:{slot:"icon",size:20},slot:"icon"})],1)],1)]},proxy:!0}])},[t._v(" "),t._v(" "),e("SettingsModal",{attrs:{open:t.settingsOpened,"data-cy-files-navigation-settings":""},on:{close:t.onSettingsClose}})],1)}),[],!1,null,"657a978e",null).exports,gn=function(t){let{id:e,name:n,order:i,icon:o,parent:s,classes:r="",expanded:a,params:l}=t;OCP.Files.Navigation.register({id:e,name:n,order:i,params:l,parent:s,expanded:!0===a,iconClass:o?"icon-".concat(o):"nav-icon-"+e,legacy:!0,sticky:r.includes("pinned")})};var wn=i(78345),bn=i(97047);u.default.use(wn.ZP);const Cn=new wn.ZP({mode:"history",base:(0,a.generateUrl)("/apps/files",""),linkActiveClass:"active",routes:[{path:"/",alias:"/files"},{path:"/:view/:fileid?",name:"filelist",props:!0}],stringifyQuery(t){const e=bn.Z.stringify(t).replace(/%2F/gim,"/");return e?"?"+e:""}});function yn(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var _n,xn,Sn=i(25108);window.OCA.Files=null!==(_n=window.OCA.Files)&&void 0!==_n?_n:{},window.OCP.Files=null!==(xn=window.OCP.Files)&&void 0!==xn?xn:{};const kn=new class{constructor(t){var e,n,i;e=this,i=void 0,(n=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(n="_router"))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,this._router=t}goTo(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this._router.push({path:t,replace:e})}goToRoute(t,e,n,i){return this._router.push({name:t,query:n,params:e,replace:i})}}(Cn);Object.assign(window.OCP.Files,{Router:kn}),u.default.use(nt.og);const In=(0,nt.WB)(),Nn=new Ee;Object.assign(window.OCP.Files,{Navigation:Nn}),u.default.prototype.$navigation=Nn;const En=new class{constructor(){var t,e,n;t=this,n=void 0,(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e="_settings"))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,this._settings=[],Sn.debug("OCA.Files.Settings initialized")}register(t){return this._settings.filter((e=>e.name===t.name)).length>0?(Sn.error("A setting with the same name is already registered"),!1):(this._settings.push(t),!0)}get settings(){return this._settings}};Object.assign(window.OCA.Files,{Settings:En}),Object.assign(window.OCA.Files.Settings,{Setting:class{constructor(t,e){let{el:n,open:i,close:o}=e;yn(this,"_close",void 0),yn(this,"_el",void 0),yn(this,"_name",void 0),yn(this,"_open",void 0),this._name=t,this._el=n,this._open=i,this._close=o,"function"!=typeof this._open&&(this._open=()=>{}),"function"!=typeof this._close&&(this._close=()=>{})}get name(){return this._name}get el(){return this._el}get open(){return this._open}get close(){return this._close}}}),new(u.default.extend(mn))({name:"FilesNavigationRoot",propsData:{Navigation:Nn},router:Cn,pinia:In}).$mount("#app-navigation-files"),new(u.default.extend(Le))({name:"FilesListRoot",router:Cn,pinia:In}).$mount("#app-content-vue"),function(){const t=Object.values((0,s.j)("files","navigation",{}));t.length>0&&(Q.debug("Legacy files views detected. Processing...",t),t.forEach((t=>{gn(t),t.sublist&&t.sublist.forEach((e=>gn({...e,parent:t.id})))})))}(),"serviceWorker"in navigator?window.addEventListener("load",(async()=>{try{const t=(0,a.generateUrl)("/apps/files/preview-service-worker.js",{},{noRewrite:!0}),e=await navigator.serviceWorker.register(t,{scope:"/"});Q.debug("SW registered: ",{registration:e})}catch(t){Q.error("SW registration failed: ",{error:t})}})):Q.debug("Service Worker is not enabled on this browser.")},39959:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}","",{version:3,sources:["webpack://./apps/files/src/components/BreadCrumbs.vue"],names:[],mappings:"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA",sourcesContent:["\n.breadcrumb {\n\t// Take as much space as possible\n\tflex: 1 1 100% !important;\n\twidth: 100%;\n\n\t::v-deep a {\n\t\tcursor: pointer !important;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},61959:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".custom-svg-icon[data-v-93e9b2f4]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-93e9b2f4] svg{height:22px;width:22px;fill:currentColor}","",{version:3,sources:["webpack://./apps/files/src/components/CustomSvgIconRender.vue"],names:[],mappings:"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA",sourcesContent:["\n.custom-svg-icon {\n\tdisplay: flex;\n\talign-items: center;\n\talign-self: center;\n\tjustify-content: center;\n\tjustify-self: center;\n\twidth: 44px;\n\theight: 44px;\n\topacity: 1;\n\n\t::v-deep svg {\n\t\t// mdi icons have a size of 24px\n\t\t// 22px results in roughly 16px inner size\n\t\theight: 22px;\n\t\twidth: 22px;\n\t\tfill: currentColor;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},13352:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,"tr[data-v-0600090e]:hover,tr[data-v-0600090e]:focus,tr[data-v-0600090e]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-0600090e]:not([style*=background]){background:var(--color-loading-dark)}","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry.vue"],names:[],mappings:"AAGC,+EAGC,6CAAA,CAKF,wEACI,oCAAA",sourcesContent:["\n/* Hover effect on tbody lines only */\ntr {\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n}\n\n/* Preview not loaded animation effect */\n.files-list__row-icon-preview:not([style*='background']) {\n background: var(--color-loading-dark);\n\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\n}\n"],sourceRoot:""}]);const a=r},97105:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,"tr[data-v-e6a083be]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-e6a083be]{user-select:none;color:var(--color-text-maxcontrast) !important}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListFooter.vue"],names:[],mappings:"AAEA,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA",sourcesContent:["\n// Scoped row\ntr {\n\tpadding-bottom: 300px;\n\tborder-top: 1px solid var(--color-border);\n\t// Prevent hover effect on the whole row\n\tbackground-color: transparent !important;\n\tborder-bottom: none !important;\n}\n\ntd {\n\tuser-select: none;\n\t// Make sure the cell colors don't apply to column headers\n\tcolor: var(--color-text-maxcontrast) !important;\n}\n\n"],sourceRoot:""}]);const a=r},96153:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list__column[data-v-76b6186a]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-76b6186a]{cursor:pointer}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeader.vue"],names:[],mappings:"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA",sourcesContent:["\n.files-list__column {\n\tuser-select: none;\n\t// Make sure the cell colors don't apply to column headers\n\tcolor: var(--color-text-maxcontrast) !important;\n\n\t&--sortable {\n\t\tcursor: pointer;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},97877:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list__row-actions-batch[data-v-03e57b1e]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeaderActions.vue"],names:[],mappings:"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA",sourcesContent:["\n.files-list__row-actions-batch {\n\tflex: 1 1 100% !important;\n\n\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t::v-deep .button-vue__wrapper {\n\t\twidth: 100%;\n\t\tspan.button-vue__text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=r},29252:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListHeaderButton.vue"],names:[],mappings:"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA",sourcesContent:["\n.files-list__column-sort-button {\n\t// Compensate for cells margin\n\tmargin: 0 calc(var(--cell-margin) * -1);\n\t// Reverse padding\n\tpadding: 0 4px 0 16px !important;\n\n\t// Icon after text\n\t.button-vue__wrapper {\n\t\tflex-direction: row-reverse;\n\t\t// Take max inner width for text overflow ellipsis\n\t\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t\twidth: 100%;\n\t}\n\n\t.button-vue__icon {\n\t\ttransition-timing-function: linear;\n\t\ttransition-duration: .1s;\n\t\ttransition-property: opacity;\n\t\topacity: 0;\n\t}\n\n\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\n\t.button-vue__text {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&--active,\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\t.button-vue__icon {\n\t\t\topacity: 1 !important;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=r},76775:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".files-list[data-v-640a8bb8]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-640a8bb8] tbody,.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-640a8bb8] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}.files-list[data-v-640a8bb8] td,.files-list[data-v-640a8bb8] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-640a8bb8] td span,.files-list[data-v-640a8bb8] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-640a8bb8] .files-list__row-checkbox{justify-content:center}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-640a8bb8] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-640a8bb8] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-640a8bb8] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-640a8bb8] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list[data-v-640a8bb8] .files-list__row-icon-favorite{position:absolute;top:4px;right:-8px;color:#fc0}.files-list[data-v-640a8bb8] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-640a8bb8] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%}.files-list[data-v-640a8bb8] .files-list__row-name a:focus .files-list__row-name-text,.files-list[data-v-640a8bb8] .files-list__row-name a:focus-visible .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-640a8bb8] .files-list__row-name .files-list__row-name-text{padding:5px 10px;margin-left:-10px}.files-list[data-v-640a8bb8] .files-list__row-actions{width:auto}.files-list[data-v-640a8bb8] .files-list__row-actions~td,.files-list[data-v-640a8bb8] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-640a8bb8] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-640a8bb8] .files-list__row-actions button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list[data-v-640a8bb8] .files-list__row-size{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list[data-v-640a8bb8] .files-list__row-column-custom{width:calc(var(--row-height)*2)}","",{version:3,sources:["webpack://./apps/files/src/components/FilesListVirtual.vue"],names:[],mappings:"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAGD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA,CAGD,gEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,0EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,sBAAA,CACA,8EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,iHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,2GACC,mBAAA,CAKH,mDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,wDACC,0BAAA,CAGD,gGACC,8BAAA,CACA,+BAAA,CAGD,2DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAGD,4DACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CAIF,mDAEC,eAAA,CAEA,aAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,oLAEC,mDAAA,CACA,kBAAA,CAIF,8EAEC,gBAAA,CACA,iBAAA,CAIF,sDACC,UAAA,CAGA,kHAEC,2BAAA,CAIA,+EAEC,kBAAA,CAED,6GAEC,mCAAA,CAKH,mDAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,mFACC,+BAAA,CACA,wGACC,kBAAA,CAKH,4DACC,+BAAA",sourcesContent:["\n.files-list {\n\t--row-height: 55px;\n\t--cell-margin: 14px;\n\n\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\n\t--checkbox-size: 24px;\n\t--clickable-area: 44px;\n\t--icon-preview-size: 32px;\n\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\n\t&::v-deep {\n\t\t// Table head, body and footer\n\t\ttbody, .vue-recycle-scroller__slot {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\t// Necessary for virtual scrolling absolute\n\t\t\tposition: relative;\n\t\t}\n\n\t\t// Table header\n\t\t.vue-recycle-scroller__slot[role='thead'] {\n\t\t\t// Pinned on top when scrolling\n\t\t\tposition: sticky;\n\t\t\tz-index: 10;\n\t\t\ttop: 0;\n\t\t\theight: var(--row-height);\n\t\t\tbackground-color: var(--color-main-background);\n\t\t}\n\n\t\ttr {\n\t\t\tposition: absolute;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\twidth: 100%;\n\t\t\tborder-bottom: 1px solid var(--color-border);\n\t\t}\n\n\t\ttd, th {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tflex: 0 0 auto;\n\t\t\tjustify-content: left;\n\t\t\twidth: var(--row-height);\n\t\t\theight: var(--row-height);\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tborder: none;\n\n\t\t\t// Columns should try to add any text\n\t\t\t// node wrapped in a span. That should help\n\t\t\t// with the ellipsis on overflow.\n\t\t\tspan {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-checkbox {\n\t\t\tjustify-content: center;\n\t\t\t.checkbox-radio-switch {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: center;\n\n\t\t\t\t--icon-size: var(--checkbox-size);\n\n\t\t\t\tlabel.checkbox-radio-switch__label {\n\t\t\t\t\twidth: var(--clickable-area);\n\t\t\t\t\theight: var(--clickable-area);\n\t\t\t\t\tmargin: 0;\n\t\t\t\t\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\n\t\t\t\t}\n\n\t\t\t\t.checkbox-radio-switch__icon {\n\t\t\t\t\tmargin: 0 !important;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-icon {\n\t\t\tposition: relative;\n\t\t\tdisplay: flex;\n\t\t\toverflow: visible;\n\t\t\talign-items: center;\n\t\t\t// No shrinking or growing allowed\n\t\t\tflex: 0 0 var(--icon-preview-size);\n\t\t\tjustify-content: center;\n\t\t\twidth: var(--icon-preview-size);\n\t\t\theight: 100%;\n\t\t\t// Show same padding as the checkbox right padding for visual balance\n\t\t\tmargin-right: var(--checkbox-padding);\n\t\t\tcolor: var(--color-primary-element);\n\n\t\t\t& > span {\n\t\t\t\tjustify-content: flex-start;\n\t\t\t}\n\n\t\t\t&> span:not(.files-list__row-icon-favorite) svg {\n\t\t\t\twidth: var(--icon-preview-size);\n\t\t\t\theight: var(--icon-preview-size);\n\t\t\t}\n\n\t\t\t&-preview {\n\t\t\t\toverflow: hidden;\n\t\t\t\twidth: var(--icon-preview-size);\n\t\t\t\theight: var(--icon-preview-size);\n\t\t\t\tborder-radius: var(--border-radius);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\t// Center and contain the preview\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-size: contain;\n\t\t\t}\n\n\t\t\t&-favorite {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 4px;\n\t\t\t\tright: -8px;\n\t\t\t\tcolor: #ffcc00;\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-name {\n\t\t\t// Prevent link from overflowing\n\t\t\toverflow: hidden;\n\t\t\t// Take as much space as possible\n\t\t\tflex: 1 1 auto;\n\n\t\t\ta {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\t// Fill cell height and width\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\n\t\t\t\t// Keyboard indicator a11y\n\t\t\t\t&:focus .files-list__row-name-text,\n\t\t\t\t&:focus-visible .files-list__row-name-text {\n\t\t\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\t\t\tborder-radius: 20px;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.files-list__row-name-text {\n\t\t\t\t// Make some space for the outline\n\t\t\t\tpadding: 5px 10px;\n\t\t\t\tmargin-left: -10px;\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-actions {\n\t\t\twidth: auto;\n\n\t\t\t// Add margin to all cells after the actions\n\t\t\t& ~ td,\n\t\t\t& ~ th {\n\t\t\t\tmargin: 0 var(--cell-margin);\n\t\t\t}\n\n\t\t\tbutton {\n\t\t\t\t.button-vue__text {\n\t\t\t\t\t// Remove bold from default button styling\n\t\t\t\t\tfont-weight: normal;\n\t\t\t\t}\n\t\t\t\t&:not(:hover, :focus, :active) .button-vue__wrapper {\n\t\t\t\t\t// Also apply color-text-maxcontrast to non-active button\n\t\t\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-size {\n\t\t\t// Right align text\n\t\t\tjustify-content: flex-end;\n\t\t\twidth: calc(var(--row-height) * 1.5);\n\t\t\t// opacity varies with the size\n\t\t\tcolor: var(--color-main-text);\n\n\t\t\t// Icon is before text since size is right aligned\n\t\t\t.files-list__column-sort-button {\n\t\t\t\tpadding: 0 16px 0 4px !important;\n\t\t\t\t.button-vue__wrapper {\n\t\t\t\t\tflex-direction: row;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.files-list__row-column-custom {\n\t\t\twidth: calc(var(--row-height) * 2);\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=r},93582:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".app-navigation-entry__settings-quota--not-unlimited[data-v-918797b2] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-918797b2]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}","",{version:3,sources:["webpack://./apps/files/src/components/NavigationQuota.vue"],names:[],mappings:"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA",sourcesContent:["\n// User storage stats display\n.app-navigation-entry__settings-quota {\n\t// Align title with progress and icon\n\t&--not-unlimited::v-deep .app-navigation-entry__title {\n\t\tmargin-top: -4px;\n\t}\n\n\tprogress {\n\t\tposition: absolute;\n\t\tbottom: 10px;\n\t\tmargin-left: 44px;\n\t\twidth: calc(100% - 44px - 22px);\n\t}\n}\n"],sourceRoot:""}]);const a=r},67679:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".template-picker__item[data-v-5b09ec60]{display:flex}.template-picker__label[data-v-5b09ec60]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-5b09ec60],.template-picker__label *[data-v-5b09ec60]{cursor:pointer;user-select:none}.template-picker__label[data-v-5b09ec60]::before{display:none !important}.template-picker__preview[data-v-5b09ec60]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-5b09ec60]{border-color:var(--color-primary-element)}.template-picker__preview--failed[data-v-5b09ec60]{display:flex}.template-picker__image[data-v-5b09ec60]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-5b09ec60]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-5b09ec60]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}","",{version:3,sources:["webpack://./apps/files/src/components/TemplatePreview.vue"],names:[],mappings:"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,yCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA",sourcesContent:["\n\n.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},1508:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".app-content[data-v-66068cbb]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-66068cbb]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-66068cbb]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-66068cbb]{flex:0 0}.files-list__refresh-icon[data-v-66068cbb]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-66068cbb]{margin:auto}","",{version:3,sources:["webpack://./apps/files/src/views/FilesList.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA",sourcesContent:["\n.app-content {\n\t// Virtual list needs to be full height and is scrollable\n\tdisplay: flex;\n\toverflow: hidden;\n\tflex-direction: column;\n\tmax-height: 100%;\n\n\t// TODO: remove after all legacy views are migrated\n\t// Hides the legacy app-content if shown view is not legacy\n\t&:not(&--hidden)::v-deep + #app-content {\n\t\tdisplay: none;\n\t}\n}\n\n$margin: 4px;\n$navigationToggleSize: 50px;\n\n.files-list {\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-content: center;\n\t\t// Do not grow or shrink (vertically)\n\t\tflex: 0 0;\n\t\t// Align with the navigation toggle icon\n\t\tmargin: $margin $margin $margin $navigationToggleSize;\n\t\t> * {\n\t\t\t// Do not grow or shrink (horizontally)\n\t\t\t// Only the breadcrumbs shrinks\n\t\t\tflex: 0 0;\n\t\t}\n\t}\n\t&__refresh-icon {\n\t\tflex: 0 0 44px;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\t&__loading-icon {\n\t\tmargin: auto;\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},87289:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".app-navigation[data-v-657a978e] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-657a978e]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-657a978e]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}","",{version:3,sources:["webpack://./apps/files/src/views/Navigation.vue"],names:[],mappings:"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA",sourcesContent:["\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\n.app-navigation::v-deep .app-navigation-entry-icon {\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.app-navigation > ul.app-navigation__list {\n\t// Use flex gap value for more elegant spacing\n\tpadding-bottom: var(--default-grid-baseline, 4px);\n}\n\n.app-navigation-entry__settings {\n\theight: auto !important;\n\toverflow: hidden !important;\n\tpadding-top: 0 !important;\n\t// Prevent shrinking or growing\n\tflex: 0 0 auto;\n}\n"],sourceRoot:""}]);const a=r},35662:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".setting-link[data-v-76ca5d1f]:hover{text-decoration:underline}","",{version:3,sources:["webpack://./apps/files/src/views/Settings.vue"],names:[],mappings:"AACA,qCACC,yBAAA",sourcesContent:["\n.setting-link:hover {\n\ttext-decoration: underline;\n}\n"],sourceRoot:""}]);const a=r},54654:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,".templates-picker__form[data-v-d46f1dc6]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-d46f1dc6]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-d46f1dc6]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-d46f1dc6]{display:flex;justify-content:end;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-d46f1dc6],.templates-picker__buttons input[type=submit][data-v-d46f1dc6]{height:44px}.templates-picker[data-v-d46f1dc6] .modal-container{position:relative}.templates-picker__loading[data-v-d46f1dc6]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}","",{version:3,sources:["webpack://./apps/files/src/views/TemplatePicker.vue"],names:[],mappings:"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,mBAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA",sourcesContent:["\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\n}\n\n"],sourceRoot:""}]);const a=r},37020:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),s=n(23645),r=n.n(s)()(o());r.push([t.id,"\n/* @keyframes preview-gradient-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n} */\n","",{version:3,sources:["webpack://./apps/files/src/components/FileEntry.vue"],names:[],mappings:";AA6mBA;;;;;;;;;;GAUA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<Fragment>\n\t\t<td class=\"files-list__row-checkbox\">\n\t\t\t<NcCheckboxRadioSwitch v-if=\"active\"\n\t\t\t\t:aria-label=\"t('files', 'Select the row for {displayName}', { displayName })\"\n\t\t\t\t:checked=\"selectedFiles\"\n\t\t\t\t:value=\"fileid\"\n\t\t\t\tname=\"selectedFiles\"\n\t\t\t\t@update:checked=\"onSelectionChange\" />\n\t\t</td>\n\n\t\t\x3c!-- Link to file --\x3e\n\t\t<td class=\"files-list__row-name\">\n\t\t\t<a ref=\"name\" v-bind=\"linkTo\" @click=\"execDefaultAction\">\n\t\t\t\t\x3c!-- Icon or preview --\x3e\n\t\t\t\t<span class=\"files-list__row-icon\">\n\t\t\t\t\t<FolderIcon v-if=\"source.type === 'folder'\" />\n\n\t\t\t\t\t\x3c!-- Decorative image, should not be aria documented --\x3e\n\t\t\t\t\t<span v-else-if=\"previewUrl && !backgroundFailed\"\n\t\t\t\t\t\tref=\"previewImg\"\n\t\t\t\t\t\tclass=\"files-list__row-icon-preview\"\n\t\t\t\t\t\t:style=\"{ backgroundImage }\" />\n\n\t\t\t\t\t<span v-else-if=\"mimeIconUrl\"\n\t\t\t\t\t\tclass=\"files-list__row-icon-preview files-list__row-icon-preview--mime\"\n\t\t\t\t\t\t:style=\"{ backgroundImage: mimeIconUrl }\" />\n\n\t\t\t\t\t<FileIcon v-else />\n\n\t\t\t\t\t\x3c!-- Favorite icon --\x3e\n\t\t\t\t\t<span v-if=\"isFavorite\"\n\t\t\t\t\t\tclass=\"files-list__row-icon-favorite\"\n\t\t\t\t\t\t:aria-label=\"t('files', 'Favorite')\">\n\t\t\t\t\t\t<StarIcon aria-hidden=\"true\" :size=\"20\" />\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\n\t\t\t\t\x3c!-- File name --\x3e\n\t\t\t\t<span class=\"files-list__row-name-text\">{{ displayName }}</span>\n\t\t\t</a>\n\t\t</td>\n\n\t\t\x3c!-- Actions --\x3e\n\t\t<td :class=\"`files-list__row-actions-${uniqueId}`\" class=\"files-list__row-actions\">\n\t\t\t\x3c!-- Inline actions --\x3e\n\t\t\t\x3c!-- TODO: implement CustomElementRender --\x3e\n\n\t\t\t\x3c!-- Menu actions --\x3e\n\t\t\t<NcActions v-if=\"active\"\n\t\t\t\tref=\"actionsMenu\"\n\t\t\t\t:boundaries-element=\"boundariesElement\"\n\t\t\t\t:container=\"boundariesElement\"\n\t\t\t\t:disabled=\"source._loading\"\n\t\t\t\t:force-title=\"true\"\n\t\t\t\t:force-menu=\"true\"\n\t\t\t\t:inline=\"enabledInlineActions.length\"\n\t\t\t\t:open.sync=\"openedMenu\">\n\t\t\t\t<NcActionButton v-for=\"action in enabledMenuActions\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:class=\"'files-list__row-action-' + action.id\"\n\t\t\t\t\t@click=\"onActionClick(action)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcLoadingIcon v-if=\"loading === action.id\" :size=\"18\" />\n\t\t\t\t\t\t<CustomSvgIconRender v-else :svg=\"action.iconSvgInline([source], currentView)\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ action.displayName([source], currentView) }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t</td>\n\n\t\t\x3c!-- Size --\x3e\n\t\t<td v-if=\"isSizeAvailable\"\n\t\t\t:style=\"{ opacity: sizeOpacity }\"\n\t\t\tclass=\"files-list__row-size\"\n\t\t\t@click=\"openDetailsIfAvailable\">\n\t\t\t<span>{{ size }}</span>\n\t\t</td>\n\n\t\t\x3c!-- View columns --\x3e\n\t\t<td v-for=\"column in columns\"\n\t\t\t:key=\"column.id\"\n\t\t\t:class=\"`files-list__row-${currentView?.id}-${column.id}`\"\n\t\t\tclass=\"files-list__row-column-custom\"\n\t\t\t@click=\"openDetailsIfAvailable\">\n\t\t\t<CustomElementRender v-if=\"active\"\n\t\t\t\t:current-view=\"currentView\"\n\t\t\t\t:render=\"column.render\"\n\t\t\t\t:source=\"source\" />\n\t\t</td>\n\t</Fragment>\n</template>\n\n<script lang='ts'>\nimport { debounce } from 'debounce'\nimport { formatFileSize } from '@nextcloud/files'\nimport { Fragment } from 'vue-frag'\nimport { join } from 'path'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { translate } from '@nextcloud/l10n'\nimport CancelablePromise from 'cancelable-promise'\nimport FileIcon from 'vue-material-design-icons/File.vue'\nimport FolderIcon from 'vue-material-design-icons/Folder.vue'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\nimport StarIcon from 'vue-material-design-icons/Star.vue'\nimport Vue from 'vue'\n\nimport { ACTION_DETAILS } from '../actions/sidebarAction.ts'\nimport { getFileActions } from '../services/FileAction.ts'\nimport { hashCode } from '../utils/hashUtils.ts'\nimport { isCachedPreview } from '../services/PreviewService.ts'\nimport { useActionsMenuStore } from '../store/actionsmenu.ts'\nimport { useFilesStore } from '../store/files.ts'\nimport { useKeyboardStore } from '../store/keyboard.ts'\nimport { useSelectionStore } from '../store/selection.ts'\nimport { useUserConfigStore } from '../store/userconfig.ts'\nimport CustomElementRender from './CustomElementRender.vue'\nimport CustomSvgIconRender from './CustomSvgIconRender.vue'\nimport logger from '../logger.js'\n\n// The registered actions list\nconst actions = getFileActions()\n\nexport default Vue.extend({\n\tname: 'FileEntry',\n\n\tcomponents: {\n\t\tCustomElementRender,\n\t\tCustomSvgIconRender,\n\t\tFileIcon,\n\t\tFolderIcon,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcLoadingIcon,\n\t\tStarIcon,\n\t},\n\n\tprops: {\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisSizeAvailable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tsource: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tnodes: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tfilesListWidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst actionsMenuStore = useActionsMenuStore()\n\t\tconst filesStore = useFilesStore()\n\t\tconst keyboardStore = useKeyboardStore()\n\t\tconst selectionStore = useSelectionStore()\n\t\tconst userConfigStore = useUserConfigStore()\n\t\treturn {\n\t\t\tactionsMenuStore,\n\t\t\tfilesStore,\n\t\t\tkeyboardStore,\n\t\t\tselectionStore,\n\t\t\tuserConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundFailed: false,\n\t\t\tbackgroundImage: '',\n\t\t\tboundariesElement: document.querySelector('.app-content > .files-list'),\n\t\t\tloading: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tuserConfig() {\n\t\t\treturn this.userConfigStore.userConfig\n\t\t},\n\n\t\tcurrentView() {\n\t\t\treturn this.$navigation.active\n\t\t},\n\t\tcolumns() {\n\t\t\t// Hide columns if the list is too small\n\t\t\tif (this.filesListWidth < 512) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.currentView?.columns || []\n\t\t},\n\n\t\tdir() {\n\t\t\t// Remove any trailing slash but leave root slash\n\t\t\treturn (this.$route?.query?.dir || '/').replace(/^(.+)\\/$/, '$1')\n\t\t},\n\t\tfileid() {\n\t\t\treturn this.source?.fileid?.toString?.()\n\t\t},\n\t\tdisplayName() {\n\t\t\treturn this.source.attributes.displayName\n\t\t\t\t|| this.source.basename\n\t\t},\n\n\t\tsize() {\n\t\t\tconst size = parseInt(this.source.size, 10) || 0\n\t\t\tif (typeof size !== 'number' || size < 0) {\n\t\t\t\treturn this.t('files', 'Pending')\n\t\t\t}\n\t\t\treturn formatFileSize(size, true)\n\t\t},\n\t\tsizeOpacity() {\n\t\t\tconst size = parseInt(this.source.size, 10) || 0\n\t\t\tif (!size || size < 0) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\t// Whatever theme is active, the contrast will pass WCAG AA\n\t\t\t// with color main text over main background and an opacity of 0.7\n\t\t\tconst minOpacity = 0.7\n\t\t\tconst maxOpacitySize = 10 * 1024 * 1024\n\t\t\treturn minOpacity + (1 - minOpacity) * Math.pow((this.source.size / maxOpacitySize), 2)\n\t\t},\n\n\t\tlinkTo() {\n\t\t\tif (this.source.type === 'folder') {\n\t\t\t\tconst to = { ...this.$route, query: { dir: join(this.dir, this.source.basename) } }\n\t\t\t\treturn {\n\t\t\t\t\tis: 'router-link',\n\t\t\t\t\ttitle: this.t('files', 'Open folder {name}', { name: this.displayName }),\n\t\t\t\t\tto,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\tconst action = this.enabledDefaultActions[0]\n\t\t\t\tconst displayName = action.displayName([this.source], this.currentView)\n\t\t\t\treturn {\n\t\t\t\t\ttitle: displayName,\n\t\t\t\t\trole: 'button',\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\thref: this.source.source,\n\t\t\t\t// TODO: Use first action title ?\n\t\t\t\ttitle: this.t('files', 'Download file {name}', { name: this.displayName }),\n\t\t\t}\n\t\t},\n\n\t\tselectedFiles() {\n\t\t\treturn this.selectionStore.selected\n\t\t},\n\t\tisSelected() {\n\t\t\treturn this.selectedFiles.includes(this.source?.fileid?.toString?.())\n\t\t},\n\n\t\tcropPreviews() {\n\t\t\treturn this.userConfig.crop_image_previews\n\t\t},\n\t\tpreviewUrl() {\n\t\t\ttry {\n\t\t\t\tconst url = new URL(window.location.origin + this.source.attributes.previewUrl)\n\t\t\t\t// Request tiny previews\n\t\t\t\turl.searchParams.set('x', '32')\n\t\t\t\turl.searchParams.set('y', '32')\n\t\t\t\t// Handle cropping\n\t\t\t\turl.searchParams.set('a', this.cropPreviews === true ? '0' : '1')\n\t\t\t\treturn url.href\n\t\t\t} catch (e) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t},\n\t\tmimeIconUrl() {\n\t\t\tconst mimeType = this.source.mime || 'application/octet-stream'\n\t\t\tconst mimeIconUrl = window.OC?.MimeType?.getIconUrl?.(mimeType)\n\t\t\tif (mimeIconUrl) {\n\t\t\t\treturn `url(${mimeIconUrl})`\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\n\t\tenabledActions() {\n\t\t\treturn actions\n\t\t\t\t.filter(action => !action.enabled || action.enabled([this.source], this.currentView))\n\t\t\t\t.sort((a, b) => (a.order || 0) - (b.order || 0))\n\t\t},\n\t\tenabledInlineActions() {\n\t\t\tif (this.filesListWidth < 768) {\n\t\t\t\treturn []\n\t\t\t}\n\t\t\treturn this.enabledActions.filter(action => action?.inline?.(this.source, this.currentView))\n\t\t},\n\t\tenabledMenuActions() {\n\t\t\tif (this.filesListWidth < 768) {\n\t\t\t\t// If we have a default action, do not render the first one\n\t\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\t\treturn this.enabledActions.slice(1)\n\t\t\t\t}\n\t\t\t\treturn this.enabledActions\n\t\t\t}\n\n\t\t\tconst actions = [\n\t\t\t\t...this.enabledInlineActions,\n\t\t\t\t...this.enabledActions.filter(action => !action.inline),\n\t\t\t]\n\n\t\t\t// If we have a default action, do not render the first one\n\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\treturn actions.slice(1)\n\t\t\t}\n\n\t\t\treturn actions\n\t\t},\n\t\tenabledDefaultActions() {\n\t\t\treturn [\n\t\t\t\t...this.enabledActions.filter(action => action.default),\n\t\t\t]\n\t\t},\n\t\topenedMenu: {\n\t\t\tget() {\n\t\t\t\treturn this.actionsMenuStore.opened === this.uniqueId\n\t\t\t},\n\t\t\tset(opened) {\n\t\t\t\tthis.actionsMenuStore.opened = opened ? this.uniqueId : null\n\t\t\t},\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn hashCode(this.source.source)\n\t\t},\n\n\t\tisFavorite() {\n\t\t\treturn this.source.attributes.favorite === 1\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(active, before) {\n\t\t\tif (active === false && before === true) {\n\t\t\t\tthis.resetState()\n\n\t\t\t\t// When the row is not active anymore\n\t\t\t\t// remove the display from the row to prevent\n\t\t\t\t// keyboard interaction with it.\n\t\t\t\tthis.$el.parentNode.style.display = 'none'\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Restore default tabindex\n\t\t\tthis.$el.parentNode.style.display = ''\n\t\t},\n\n\t\t/**\n\t\t * When the source changes, reset the preview\n\t\t * and fetch the new one.\n\t\t */\n\t\tpreviewUrl() {\n\t\t\tthis.clearImg()\n\t\t\tthis.debounceIfNotCached()\n\t\t},\n\t},\n\n\t/**\n\t * The row is mounted once and reused as we scroll.\n\t */\n\tmounted() {\n\t\t// ⚠ Init the debounce function on mount and\n\t\t// not when the module is imported to\n\t\t// avoid sharing between recycled components\n\t\tthis.debounceGetPreview = debounce(function() {\n\t\t\tthis.fetchAndApplyPreview()\n\t\t}, 150, false)\n\n\t\t// Fetch the preview on init\n\t\tthis.debounceIfNotCached()\n\n\t\t// Right click watcher on tr\n\t\tthis.$el.parentNode?.addEventListener?.('contextmenu', this.onRightClick)\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.resetState()\n\t},\n\n\tmethods: {\n\t\tasync debounceIfNotCached() {\n\t\t\tif (!this.previewUrl) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Check if we already have this preview cached\n\t\t\tconst isCached = await isCachedPreview(this.previewUrl)\n\t\t\tif (isCached) {\n\t\t\t\tthis.backgroundImage = `url(${this.previewUrl})`\n\t\t\t\tthis.backgroundFailed = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// We don't have this preview cached or it expired, requesting it\n\t\t\tthis.debounceGetPreview()\n\t\t},\n\n\t\tfetchAndApplyPreview() {\n\t\t\t// Ignore if no preview\n\t\t\tif (!this.previewUrl) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If any image is being processed, reset it\n\t\t\tif (this.previewPromise) {\n\t\t\t\tthis.clearImg()\n\t\t\t}\n\n\t\t\t// Store the promise to be able to cancel it\n\t\t\tthis.previewPromise = new CancelablePromise((resolve, reject, onCancel) => {\n\t\t\t\tconst img = new Image()\n\t\t\t\t// If active, load the preview with higher priority\n\t\t\t\timg.fetchpriority = this.active ? 'high' : 'auto'\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tthis.backgroundImage = `url(${this.previewUrl})`\n\t\t\t\t\tthis.backgroundFailed = false\n\t\t\t\t\tresolve(img)\n\t\t\t\t}\n\t\t\t\timg.onerror = () => {\n\t\t\t\t\tthis.backgroundFailed = true\n\t\t\t\t\treject(img)\n\t\t\t\t}\n\t\t\t\timg.src = this.previewUrl\n\n\t\t\t\t// Image loading has been canceled\n\t\t\t\tonCancel(() => {\n\t\t\t\t\timg.onerror = null\n\t\t\t\t\timg.onload = null\n\t\t\t\t\timg.src = ''\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\n\t\tresetState() {\n\t\t\t// Reset loading state\n\t\t\tthis.loading = ''\n\n\t\t\t// Reset the preview\n\t\t\tthis.clearImg()\n\n\t\t\t// Close menu\n\t\t\tthis.openedMenu = false\n\t\t},\n\n\t\tclearImg() {\n\t\t\tthis.backgroundImage = ''\n\t\t\tthis.backgroundFailed = false\n\n\t\t\tif (this.previewPromise) {\n\t\t\t\tthis.previewPromise.cancel()\n\t\t\t\tthis.previewPromise = null\n\t\t\t}\n\t\t},\n\n\t\tasync onActionClick(action) {\n\t\t\tconst displayName = action.displayName([this.source], this.currentView)\n\t\t\ttry {\n\t\t\t\t// Set the loading marker\n\t\t\t\tthis.loading = action.id\n\t\t\t\tVue.set(this.source, '_loading', true)\n\n\t\t\t\tconst success = await action.exec(this.source, this.currentView, this.dir)\n\n\t\t\t\t// If the action returns null, we stay silent\n\t\t\t\tif (success === null) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (success) {\n\t\t\t\t\tshowSuccess(this.t('files', '\"{displayName}\" action executed successfully', { displayName }))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tshowError(this.t('files', '\"{displayName}\" action failed', { displayName }))\n\t\t\t} catch (e) {\n\t\t\t\tlogger.error('Error while executing action', { action, e })\n\t\t\t\tshowError(this.t('files', '\"{displayName}\" action failed', { displayName }))\n\t\t\t} finally {\n\t\t\t\t// Reset the loading marker\n\t\t\t\tthis.loading = ''\n\t\t\t\tVue.set(this.source, '_loading', false)\n\t\t\t}\n\t\t},\n\t\texecDefaultAction(event) {\n\t\t\t// Do not execute the default action on the folder, navigate instead\n\t\t\tif (this.source.type === 'folder') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.enabledDefaultActions.length > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t\t// Execute the first default action if any\n\t\t\t\tthis.enabledDefaultActions[0].exec(this.source, this.currentView, this.dir)\n\t\t\t}\n\t\t},\n\n\t\topenDetailsIfAvailable(event) {\n\t\t\tconst detailsAction = this.enabledDefaultActions.find(action => action.id === ACTION_DETAILS)\n\t\t\tif (detailsAction) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tdetailsAction.exec(this.source, this.currentView)\n\t\t\t}\n\t\t},\n\n\t\tonSelectionChange(selection) {\n\t\t\tconst newSelectedIndex = this.index\n\t\t\tconst lastSelectedIndex = this.selectionStore.lastSelectedIndex\n\n\t\t\t// Get the last selected and select all files in between\n\t\t\tif (this.keyboardStore?.shiftKey && lastSelectedIndex !== null) {\n\t\t\t\tconst isAlreadySelected = this.selectedFiles.includes(this.fileid)\n\n\t\t\t\tconst start = Math.min(newSelectedIndex, lastSelectedIndex)\n\t\t\t\tconst end = Math.max(lastSelectedIndex, newSelectedIndex)\n\n\t\t\t\tconst lastSelection = this.selectionStore.lastSelection\n\t\t\t\tconst filesToSelect = this.nodes\n\t\t\t\t\t.map(file => file.fileid?.toString?.())\n\t\t\t\t\t.slice(start, end + 1)\n\n\t\t\t\t// If already selected, update the new selection _without_ the current file\n\t\t\t\tconst selection = [...lastSelection, ...filesToSelect]\n\t\t\t\t\t.filter(fileId => !isAlreadySelected || fileId !== this.fileid)\n\n\t\t\t\tlogger.debug('Shift key pressed, selecting all files in between', { start, end, filesToSelect, isAlreadySelected })\n\t\t\t\t// Keep previous lastSelectedIndex to be use for further shift selections\n\t\t\t\tthis.selectionStore.set(selection)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlogger.debug('Updating selection', { selection })\n\t\t\tthis.selectionStore.set(selection)\n\t\t\tthis.selectionStore.setLastIndex(newSelectedIndex)\n\t\t},\n\n\t\t// Open the actions menu on right click\n\t\tonRightClick(event) {\n\t\t\t// If already opened, fallback to default browser\n\t\t\tif (this.openedMenu) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If the clicked row is in the selection, open global menu\n\t\t\tconst isMoreThanOneSelected = this.selectedFiles.length > 1\n\t\t\tthis.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId\n\n\t\t\t// Prevent any browser defaults\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t},\n\n\t\tt: translate,\n\t\tformatFileSize,\n\t},\n})\n<\/script>\n\n<style scoped lang='scss'>\n/* Hover effect on tbody lines only */\ntr {\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n}\n\n/* Preview not loaded animation effect */\n.files-list__row-icon-preview:not([style*='background']) {\n background: var(--color-loading-dark);\n\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\n}\n</style>\n\n<style>\n/* @keyframes preview-gradient-fade {\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0.5;\n }\n 100% {\n opacity: 1;\n }\n} */\n</style>\n"],sourceRoot:""}]);const a=r}},i={};function o(t){var e=i[t];if(void 0!==e)return e.exports;var s=i[t]={id:t,loaded:!1,exports:{}};return n[t].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=n,e=[],o.O=(t,n,i,s)=>{if(!n){var r=1/0;for(d=0;d<e.length;d++){n=e[d][0],i=e[d][1],s=e[d][2];for(var a=!0,l=0;l<n.length;l++)(!1&s||r>=s)&&Object.keys(o.O).every((t=>o.O[t](n[l])))?n.splice(l--,1):(a=!1,s<r&&(r=s));if(a){e.splice(d--,1);var c=i();void 0!==c&&(t=c)}}return t}s=s||0;for(var d=e.length;d>0&&e[d-1][2]>s;d--)e[d]=e[d-1];e[d]=[n,i,s]},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),o.j=2181,(()=>{o.b=document.baseURI||self.location.href;var t={2181:0};o.O.j=e=>0===t[e];var e=(e,n)=>{var i,s,r=n[0],a=n[1],l=n[2],c=0;if(r.some((e=>0!==t[e]))){for(i in a)o.o(a,i)&&(o.m[i]=a[i]);if(l)var d=l(o)}for(e&&e(n);c<r.length;c++)s=r[c],o.o(t,s)&&t[s]&&t[s][0](),t[s]=0;return o.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),o.nc=void 0;var s=o.O(void 0,[7874],(()=>o(73500)));s=o.O(s)})(); +//# sourceMappingURL=files-main.js.map?v=40748790bce0f06897f7
\ No newline at end of file diff --git a/dist/files-main.js.map b/dist/files-main.js.map index c2b12958ef1..451990cb141 100644 --- a/dist/files-main.js.map +++ b/dist/files-main.js.map @@ -1 +1 @@ -{"version":3,"file":"files-main.js?v=f7e90b4201bd515159b9","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/utils/davUtils.js","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?8258","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?81db","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?c414","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/services/Templates.js","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?9ada","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?afd8","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?1f7b","webpack:///nextcloud/apps/files/src/templates.js","webpack:///nextcloud/apps/files/src/legacy/filelistSearch.js","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files/src/actions/deleteAction.ts","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e906","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e59f","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?4ee7","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?2c34","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?6bea","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?5641","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack:///nextcloud/apps/files/src/services/PreviewService.ts","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?0601","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?bfb5","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?14b9","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?80db","webpack:///nextcloud/apps/files/src/mixins/filesListWidth.ts","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?993d","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?9823","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?d900","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?5686","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?c7b4","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?034b","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/apps/files/src/services/Navigation.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack://nextcloud/./apps/files/src/views/FilesList.vue?b2cc","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack://nextcloud/./apps/files/src/views/Navigation.vue?8122","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?ff39","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/views/Settings.vue?84f7","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack://nextcloud/./apps/files/src/components/Setting.vue?8d57","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Settings.vue?7e31","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack:///nextcloud/apps/files/src/views/Navigation.vue","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Navigation.vue?e9dc","webpack://nextcloud/./apps/files/src/views/Navigation.vue?74b9","webpack:///nextcloud/apps/files/src/legacy/navigationMapper.js","webpack:///nextcloud/apps/files/src/router/router.js","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/services/ServiceWorker.js","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getRootPath = function() {\n\tif (getCurrentUser()) {\n\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`)\n\t} else {\n\t\treturn generateRemoteUrl('webdav').replace('/remote.php', '/public.php')\n\t}\n}\n\nexport const isPublic = function() {\n\treturn !getCurrentUser()\n}\n\nexport const getToken = function() {\n\treturn document.getElementById('sharingToken') && document.getElementById('sharingToken').value\n}\n\n/**\n * Return the current directory, fallback to root\n *\n * @return {string}\n */\nexport const getCurrentDirectory = function() {\n\tconst currentDirInfo = OCA?.Files?.App?.currentFileList?.dirInfo\n\t\t|| { path: '/', name: '' }\n\n\t// Make sure we don't have double slashes\n\treturn `${currentDirInfo.path}/${currentDirInfo.name}`.replace(/\\/\\//gi, '/')\n}\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"template-picker__item\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\ttype=\"radio\"\n\t\t\tclass=\"radio\"\n\t\t\tname=\"template-picker\"\n\t\t\t@change=\"onCheck\">\n\n\t\t<label :for=\"id\" class=\"template-picker__label\">\n\t\t\t<div class=\"template-picker__preview\"\n\t\t\t\t:class=\"failedPreview ? 'template-picker__preview--failed' : ''\">\n\t\t\t\t<img class=\"template-picker__image\"\n\t\t\t\t\t:src=\"realPreviewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdraggable=\"false\"\n\t\t\t\t\t@error=\"onFailure\">\n\t\t\t</div>\n\n\t\t\t<span class=\"template-picker__title\">\n\t\t\t\t{{ nameWithoutExt }}\n\t\t\t</span>\n\t\t</label>\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { encodeFilePath } from '../utils/fileUtils.js'\nimport { getToken, isPublic } from '../utils/davUtils.js'\n\n// preview width generation\nconst previewWidth = 256\n\nexport default {\n\tname: 'TemplatePreview',\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfileid: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tpreviewUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tratio: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfailedPreview: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.basename.indexOf('.') > -1 ? this.basename.split('.').slice(0, -1).join('.') : this.basename\n\t\t},\n\n\t\tid() {\n\t\t\treturn `template-picker-${this.fileid}`\n\t\t},\n\n\t\trealPreviewUrl() {\n\t\t\t// If original preview failed, fallback to mime icon\n\t\t\tif (this.failedPreview && this.mimeIcon) {\n\t\t\t\treturn this.mimeIcon\n\t\t\t}\n\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn this.previewUrl\n\t\t\t}\n\t\t\t// TODO: find a nicer standard way of doing this?\n\t\t\tif (isPublic()) {\n\t\t\t\treturn generateUrl(`/apps/files_sharing/publicpreview/${getToken()}?fileId=${this.fileid}&file=${encodeFilePath(this.filename)}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t\t}\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.fileid}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t},\n\n\t\tmimeIcon() {\n\t\t\treturn OC.MimeType.getIconUrl(this.mime)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonCheck() {\n\t\t\tthis.$emit('check', this.fileid)\n\t\t},\n\t\tonFailure() {\n\t\t\tthis.failedPreview = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=6c072a31&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=6c072a31&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c072a31\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcModal v-if=\"opened\"\n\t\t:clear-view-delay=\"-1\"\n\t\tclass=\"templates-picker\"\n\t\tsize=\"large\"\n\t\t@close=\"close\">\n\t\t<form class=\"templates-picker__form\"\n\t\t\t:style=\"style\"\n\t\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t\t<h2>{{ t('files', 'Pick a template for {name}', { name: nameWithoutExt }) }}</h2>\n\n\t\t\t<!-- Templates list -->\n\t\t\t<ul class=\"templates-picker__list\">\n\t\t\t\t<TemplatePreview v-bind=\"emptyTemplate\"\n\t\t\t\t\t:checked=\"checked === emptyTemplate.fileid\"\n\t\t\t\t\t@check=\"onCheck\" />\n\n\t\t\t\t<TemplatePreview v-for=\"template in provider.templates\"\n\t\t\t\t\t:key=\"template.fileid\"\n\t\t\t\t\tv-bind=\"template\"\n\t\t\t\t\t:checked=\"checked === template.fileid\"\n\t\t\t\t\t:ratio=\"provider.ratio\"\n\t\t\t\t\t@check=\"onCheck\" />\n\t\t\t</ul>\n\n\t\t\t<!-- Cancel and submit -->\n\t\t\t<div class=\"templates-picker__buttons\">\n\t\t\t\t<input type=\"submit\"\n\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t:value=\"t('files', 'Create')\"\n\t\t\t\t\t:aria-label=\"t('files', 'Create a new file with the selected template')\">\n\t\t\t</div>\n\t\t</form>\n\n\t\t<NcEmptyContent v-if=\"loading\" class=\"templates-picker__loading\" icon=\"icon-loading\">\n\t\t\t{{ t('files', 'Creating file') }}\n\t\t</NcEmptyContent>\n\t</NcModal>\n</template>\n\n<script>\nimport { normalize } from 'path'\nimport { showError } from '@nextcloud/dialogs'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\n\nimport { getCurrentDirectory } from '../utils/davUtils.js'\nimport { createFromTemplate, getTemplates } from '../services/Templates.js'\nimport TemplatePreview from '../components/TemplatePreview.vue'\n\nconst border = 2\nconst margin = 8\n\nexport default {\n\tname: 'TemplatePicker',\n\n\tcomponents: {\n\t\tNcEmptyContent,\n\t\tNcModal,\n\t\tTemplatePreview,\n\t},\n\n\tprops: {\n\t\tlogger: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Check empty template by default\n\t\t\tchecked: -1,\n\t\t\tloading: false,\n\t\t\tname: null,\n\t\t\topened: false,\n\t\t\tprovider: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.name.indexOf('.') > -1\n\t\t\t\t? this.name.split('.').slice(0, -1).join('.')\n\t\t\t\t: this.name\n\t\t},\n\n\t\temptyTemplate() {\n\t\t\treturn {\n\t\t\t\tbasename: t('files', 'Blank'),\n\t\t\t\tfileid: -1,\n\t\t\t\tfilename: this.t('files', 'Blank'),\n\t\t\t\thasPreview: false,\n\t\t\t\tmime: this.provider?.mimetypes[0] || this.provider?.mimetypes,\n\t\t\t}\n\t\t},\n\n\t\tselectedTemplate() {\n\t\t\treturn this.provider.templates.find(template => template.fileid === this.checked)\n\t\t},\n\n\t\t/**\n\t\t * Style css vars bin,d\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tstyle() {\n\t\t\t// Fallback to 16:9 landscape ratio\n\t\t\tconst ratio = this.provider.ratio ? this.provider.ratio : 1.77\n\t\t\t// Landscape templates should be wider than tall ones\n\t\t\t// We fit 3 templates per row at max for landscape and 4 for portrait\n\t\t\tconst width = ratio > 1 ? margin * 30 : margin * 20\n\t\t\treturn {\n\t\t\t\t'--margin': margin + 'px',\n\t\t\t\t'--width': width + 'px',\n\t\t\t\t'--border': border + 'px',\n\t\t\t\t'--fullwidth': width + 2 * margin + 2 * border + 'px',\n\t\t\t\t'--height': this.provider.ratio ? Math.round(width / this.provider.ratio) + 'px' : null,\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Open the picker\n\t\t *\n\t\t * @param {string} name the file name to create\n\t\t * @param {object} provider the template provider picked\n\t\t */\n\t\tasync open(name, provider) {\n\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.name = name\n\t\t\tthis.provider = provider\n\n\t\t\tconst templates = await getTemplates()\n\t\t\tconst fetchedProvider = templates.find((fetchedProvider) => fetchedProvider.app === provider.app && fetchedProvider.label === provider.label)\n\t\t\tif (fetchedProvider === null) {\n\t\t\t\tthrow new Error('Failed to match provider in results')\n\t\t\t}\n\t\t\tthis.provider = fetchedProvider\n\n\t\t\t// If there is no templates available, just create an empty file\n\t\t\tif (fetchedProvider.templates.length === 0) {\n\t\t\t\tthis.onSubmit()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Else, open the picker\n\t\t\tthis.opened = true\n\t\t},\n\n\t\t/**\n\t\t * Close the picker and reset variables\n\t\t */\n\t\tclose() {\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.loading = false\n\t\t\tthis.name = null\n\t\t\tthis.opened = false\n\t\t\tthis.provider = null\n\t\t},\n\n\t\t/**\n\t\t * Manages the radio template picker change\n\t\t *\n\t\t * @param {number} fileid the selected template file id\n\t\t */\n\t\tonCheck(fileid) {\n\t\t\tthis.checked = fileid\n\t\t},\n\n\t\tasync onSubmit() {\n\t\t\tthis.loading = true\n\t\t\tconst currentDirectory = getCurrentDirectory()\n\t\t\tconst fileList = OCA?.Files?.App?.currentFileList\n\n\t\t\t// If the file doesn't have an extension, add the default one\n\t\t\tif (this.nameWithoutExt === this.name) {\n\t\t\t\tthis.logger.debug('Fixed invalid filename', { name: this.name, extension: this.provider?.extension })\n\t\t\t\tthis.name = this.name + this.provider?.extension\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst fileInfo = await createFromTemplate(\n\t\t\t\t\tnormalize(`${currentDirectory}/${this.name}`),\n\t\t\t\t\tthis.selectedTemplate?.filename,\n\t\t\t\t\tthis.selectedTemplate?.templateType,\n\t\t\t\t)\n\t\t\t\tthis.logger.debug('Created new file', fileInfo)\n\n\t\t\t\t// Fetch FileInfo and model\n\t\t\t\tconst data = await fileList?.addAndFetchFileInfo(this.name).then((status, data) => data)\n\t\t\t\tconst model = new OCA.Files.FileInfoModel(data, {\n\t\t\t\t\tfilesClient: fileList?.filesClient,\n\t\t\t\t})\n\n\t\t\t\t// Run default action\n\t\t\t\tconst fileAction = OCA.Files.fileActions.getDefaultFileAction(fileInfo.mime, 'file', OC.PERMISSION_ALL)\n\t\t\t\tif (fileAction) {\n\t\t\t\t\tfileAction.action(fileInfo.basename, {\n\t\t\t\t\t\t$file: fileList?.findFileEl(this.name),\n\t\t\t\t\t\tdir: currentDirectory,\n\t\t\t\t\t\tfileList,\n\t\t\t\t\t\tfileActions: fileList?.fileActions,\n\t\t\t\t\t\tfileInfoModel: model,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.close()\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error('Error while creating the new file from template')\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(this.t('files', 'Unable to create new file from template'))\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nexport const getTemplates = async function() {\n\tconst response = await axios.get(generateOcsUrl('apps/files/api/v1/templates'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new file from a specified template\n *\n * @param {string} filePath The new file destination path\n * @param {string} templatePath The template source path\n * @param {string} templateType The template type e.g 'user'\n */\nexport const createFromTemplate = async function(filePath, templatePath, templateType) {\n\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/create'), {\n\t\tfilePath,\n\t\ttemplatePath,\n\t\ttemplateType,\n\t})\n\treturn response.data.ocs.data\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=d46f1dc6&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d46f1dc6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.opened)?_c('NcModal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"large\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('NcEmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils.js'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker.vue'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionLabel: t('files', 'Create new templates folder'),\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionLabel: provider.actionLabel,\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport logger from '../logger';\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { Permission, Node } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport TrashCan from '@mdi/svg/svg/trash-can.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction.ts';\nimport logger from '../logger.js';\nregisterFileAction(new FileAction({\n id: 'delete',\n displayName(nodes, view) {\n return view.id === 'trashbin'\n ? t('files_trashbin', 'Delete permanently')\n : t('files', 'Delete');\n },\n iconSvgInline: () => TrashCan,\n enabled(nodes) {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.DELETE) !== 0);\n },\n async exec(node) {\n try {\n await axios.delete(node.source);\n // Let's delete even if it's moved to the trashbin\n // since it has been removed from the current view\n // and changing the view will trigger a reload anyway.\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n logger.error('Error while deleting a file', { error, source: node.source, node });\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 100,\n}));\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction.ts';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nregisterFileAction(new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (files) => !!window?.OCA?.Files?.Sidebar\n && files.some(node => node.root?.startsWith('/files/')),\n async exec(node) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n window?.OCA?.Files?.Sidebar?.open?.(node.path);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n default: true,\n order: -50,\n}));\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useFilesStore = function () {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by id\n */\n getNode: (state) => (id) => state.files[id],\n /**\n * Get a list of files or folders by their IDs\n * Does not return undefined values\n */\n getNodes: (state) => (ids) => ids\n .map(id => state.files[id])\n .filter(Boolean),\n /**\n * Get a file or folder by id\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.warn('Trying to update/set a node without fileid', node);\n return acc;\n }\n acc[node.fileid] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.fileid) {\n Vue.delete(this.files, node.fileid);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n }\n });\n const fileStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n // subscribe('files:node:created', fileStore.onCreatedNode)\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n // subscribe('files:node:moved', fileStore.onMovedNode)\n // subscribe('files:node:updated', fileStore.onUpdatedNode)\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport Vue from 'vue';\nexport const usePathsStore = function () {\n const store = defineStore('paths', {\n state: () => ({\n paths: {}\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.fileid);\n },\n }\n });\n const pathsStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n // TODO: watch folders to update paths?\n // subscribe('files:node:created', pathsStore.onCreatedNode)\n // subscribe('files:node:deleted', pathsStore.onDeletedNode)\n // subscribe('files:node:moved', pathsStore.onMovedNode)\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport { FileId, SelectionStore } from '../types';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'selected', selection);\n },\n /**\n * Set the last selected index\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n }\n }\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function () {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n },\n actions: {\n /**\n * Update the view config local store\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n */\n async update(view, key, value) {\n axios.put(generateUrl(`/apps/files/api/v1/views/${view}/${key}`), {\n value,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { 'sorting_direction': 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n }\n }\n });\n const viewConfigStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\"}},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"aria-label\":_vm.ariaLabel(section),\"title\":_vm.ariaLabel(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<NcBreadcrumbs data-cy-files-content-breadcrumbs>\n\t\t<!-- Current path sections -->\n\t\t<NcBreadcrumb v-for=\"(section, index) in sections\"\n\t\t\t:key=\"section.dir\"\n\t\t\t:aria-label=\"ariaLabel(section)\"\n\t\t\t:title=\"ariaLabel(section)\"\n\t\t\tv-bind=\"section\"\n\t\t\t@click.native=\"onClick(section.to)\">\n\t\t\t<template v-if=\"index === 0\" #icon>\n\t\t\t\t<Home :size=\"20\" />\n\t\t\t</template>\n\t\t</NcBreadcrumb>\n\t</NcBreadcrumbs>\n</template>\n\n<script>\nimport { basename } from 'path'\nimport Home from 'vue-material-design-icons/Home.vue'\nimport NcBreadcrumb from '@nextcloud/vue/dist/Components/NcBreadcrumb.js'\nimport NcBreadcrumbs from '@nextcloud/vue/dist/Components/NcBreadcrumbs.js'\nimport Vue from 'vue'\n\nimport { useFilesStore } from '../store/files.ts'\nimport { usePathsStore } from '../store/paths.ts'\n\nexport default Vue.extend({\n\tname: 'BreadCrumbs',\n\n\tcomponents: {\n\t\tHome,\n\t\tNcBreadcrumbs,\n\t\tNcBreadcrumb,\n\t},\n\n\tprops: {\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\tdefault: '/',\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst filesStore = useFilesStore()\n\t\tconst pathsStore = usePathsStore()\n\t\treturn {\n\t\t\tfilesStore,\n\t\t\tpathsStore,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcurrentView() {\n\t\t\treturn this.$navigation.active\n\t\t},\n\n\t\tdirs() {\n\t\t\tconst cumulativePath = (acc) => (value) => (acc += `${value}/`)\n\t\t\t// Generate a cumulative path for each path segment: ['/', '/foo', '/foo/bar', ...] etc\n\t\t\tconst paths = this.path.split('/').filter(Boolean).map(cumulativePath('/'))\n\t\t\t// Strip away trailing slash\n\t\t\treturn ['/', ...paths.map(path => path.replace(/^(.+)\\/$/, '$1'))]\n\t\t},\n\n\t\tsections() {\n\t\t\treturn this.dirs.map(dir => {\n\t\t\t\tconst to = { ...this.$route, query: { dir } }\n\t\t\t\treturn {\n\t\t\t\t\tdir,\n\t\t\t\t\texact: true,\n\t\t\t\t\tname: this.getDirDisplayName(dir),\n\t\t\t\t\tto,\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetNodeFromId(id) {\n\t\t\treturn this.filesStore.getNode(id)\n\t\t},\n\t\tgetFileIdFromPath(path) {\n\t\t\treturn this.pathsStore.getPath(this.currentView?.id, path)\n\t\t},\n\t\tgetDirDisplayName(path) {\n\t\t\tif (path === '/') {\n\t\t\t\treturn t('files', 'Home')\n\t\t\t}\n\n\t\t\tconst fileId = this.getFileIdFromPath(path)\n\t\t\tconst node = this.getNodeFromId(fileId)\n\t\t\treturn node?.attributes?.displayName || basename(path)\n\t\t},\n\n\t\tonClick(to) {\n\t\t\tif (to?.query?.dir === this.$route.query.dir) {\n\t\t\t\tthis.$emit('reload')\n\t\t\t}\n\t\t},\n\n\t\tariaLabel(section) {\n\t\t\tif (section?.to?.query?.dir === this.$route.query.dir) {\n\t\t\t\treturn t('files', 'Reload current directory')\n\t\t\t}\n\t\t\treturn t('files', 'Go to the \"{dir}\" directory', section)\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.breadcrumb {\n\t// Take as much space as possible\n\tflex: 1 1 100% !important;\n\twidth: 100%;\n\n\t::v-deep a {\n\t\tcursor: pointer !important;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=68b3b20b&scoped=true&\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b3b20b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RecycleScroller',{ref:\"recycleScroller\",staticClass:\"files-list\",attrs:{\"key-field\":\"source\",\"items\":_vm.nodes,\"item-size\":55,\"table-mode\":true,\"item-class\":\"files-list__row\",\"item-tag\":\"tr\",\"list-class\":\"files-list__body\",\"list-tag\":\"tbody\",\"role\":\"table\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active, index }){return [_c('FileEntry',{attrs:{\"active\":active,\"index\":index,\"is-size-available\":_vm.isSizeAvailable,\"files-list-width\":_vm.filesListWidth,\"nodes\":_vm.nodes,\"source\":item}})]}},{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.currentView.caption || '')+\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListHeader',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"after\",fn:function(){return [_c('FilesListFooter',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nexport const hashCode = function (str) {\n return str.split('').reduce(function (a, b) {\n a = ((a << 5) - a) + b.charCodeAt(0);\n return a & a;\n }, 0);\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n});\nexport const useUserConfigStore = function () {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n }\n }\n });\n const userConfigStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<span />\n</template>\n\n<script>\n/**\n * This component is used to render custom\n * elements provided by an API. Vue doesn't allow\n * to directly render an HTMLElement, so we can do\n * this magic here.\n */\nexport default {\n\tname: 'CustomElementRender',\n\tprops: {\n\t\tsource: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcurrentView: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trender: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\telement() {\n\t\t\treturn this.render(this.source, this.currentView)\n\t\t},\n\t},\n\twatch: {\n\t\telement() {\n\t\t\tthis.$el.replaceWith(this.element)\n\t\t\tthis.$el = this.element\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.replaceWith(this.element)\n\t\tthis.$el = this.element\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=a261c93e&\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"custom-svg-icon\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<span class=\"custom-svg-icon\" />\n</template>\n\n<script>\n// eslint-disable-next-line import/named\nimport { sanitize } from 'dompurify'\n\nexport default {\n\tname: 'CustomSvgIconRender',\n\tprops: {\n\t\tsvg: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\twatch: {\n\t\tsvg() {\n\t\t\tthis.$el.innerHTML = sanitize(this.svg)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.innerHTML = sanitize(this.svg)\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.custom-svg-icon {\n\tdisplay: flex;\n\talign-items: center;\n\talign-self: center;\n\tjustify-content: center;\n\tjustify-self: center;\n\twidth: 44px;\n\theight: 44px;\n\topacity: 1;\n\n\t::v-deep svg {\n\t\t// mdi icons have a size of 24px\n\t\t// 22px results in roughly 16px inner size\n\t\theight: 22px;\n\t\twidth: 22px;\n\t\tfill: currentColor;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomSvgIconRender.vue?vue&type=template&id=93e9b2f4&scoped=true&\"\nimport script from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93e9b2f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('td',{staticClass:\"files-list__row-checkbox\"},[(_vm.active)?_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.t('files', 'Select the row for {displayName}', { displayName: _vm.displayName }),\"checked\":_vm.selectedFiles,\"value\":_vm.fileid,\"name\":\"selectedFiles\"},on:{\"update:checked\":_vm.onSelectionChange}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('a',_vm._b({ref:\"name\",on:{\"click\":_vm.execDefaultAction}},'a',_vm.linkTo,false),[_c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?_c('FolderIcon'):(_vm.previewUrl && !_vm.backgroundFailed)?_c('span',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",style:({ backgroundImage: _vm.backgroundImage })}):(_vm.mimeIconUrl)?_c('span',{staticClass:\"files-list__row-icon-preview files-list__row-icon-preview--mime\",style:({ backgroundImage: _vm.mimeIconUrl })}):_c('FileIcon'),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\",attrs:{\"aria-label\":_vm.t('files', 'Favorite')}},[_c('StarIcon',{attrs:{\"aria-hidden\":\"true\",\"size\":20}})],1):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-text\"},[_vm._v(_vm._s(_vm.displayName))])])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\",class:`files-list__row-actions-${_vm.uniqueId}`},[(_vm.active)?_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.boundariesElement,\"container\":_vm.boundariesElement,\"disabled\":_vm.source._loading,\"force-title\":true,\"force-menu\":true,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-action-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName([_vm.source], _vm.currentView))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:({ opacity: _vm.sizeOpacity }),on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`,on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.active)?_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}}):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = function () {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n }\n });\n const keyboardStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n// The preview service worker cache name (see webpack config)\nconst SWCacheName = 'previews';\n/**\n * Check if the preview is already cached by the service worker\n */\nexport const isCachedPreview = function (previewUrl) {\n return caches.open(SWCacheName)\n .then(function (cache) {\n return cache.match(previewUrl)\n .then(function (response) {\n return !!response;\n });\n });\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=0600090e&scoped=true&\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&\"\nimport style1 from \"./FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0600090e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListFooter.vue?vue&type=template&id=e6a083be&scoped=true&\"\nimport script from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e6a083be\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nexport default Vue.extend({\n data() {\n return {\n filesListWidth: null,\n };\n },\n created() {\n const fileListEl = document.querySelector('#app-content-vue');\n this.$resizeObserver = new ResizeObserver((entries) => {\n if (entries.length > 0 && entries[0].target === fileListEl) {\n this.filesListWidth = entries[0].contentRect.width;\n }\n });\n this.$resizeObserver.observe(fileListEl);\n },\n beforeDestroy() {\n this.$resizeObserver.disconnect();\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('th',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"colspan\":\"2\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-title\":true,\"inline\":_vm.inlineActions,\"menu-title\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderActions.vue?vue&type=template&id=03e57b1e&scoped=true&\"\nimport script from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"03e57b1e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:{'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode},attrs:{\"aria-label\":_vm.sortAriaLabel(_vm.name),\"type\":\"tertiary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy(_vm.mode)}}},[(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}):_c('MenuDown',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name)+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection === 'asc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderButton.vue?vue&type=template&id=e85a09d2&\"\nimport script from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\"},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),(!_vm.isNoneSelected)?_c('FilesListHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}}):[_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy('basename')}}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{'files-list__column--sortable': _vm.isSizeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[(!!column.sort)?_c('FilesListHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\\t\")])],1)})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=76b6186a&scoped=true&\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76b6186a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=640a8bb8&scoped=true&\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"640a8bb8\",\n null\n \n)\n\nexport default component.exports","import isSvg from 'is-svg';\nimport logger from '../logger.js';\nexport default class {\n _views = [];\n _currentView = null;\n constructor() {\n logger.debug('Navigation service initialized');\n }\n register(view) {\n try {\n isValidNavigation(view);\n isUniqueNavigation(view, this._views);\n }\n catch (e) {\n if (e instanceof Error) {\n logger.error(e.message, { view });\n }\n throw e;\n }\n if (view.legacy) {\n logger.warn('Legacy view detected, please migrate to Vue');\n }\n if (view.iconClass) {\n view.legacy = true;\n }\n this._views.push(view);\n }\n remove(id) {\n const index = this._views.findIndex(view => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n }\n }\n get views() {\n return this._views;\n }\n setActive(view) {\n this._currentView = view;\n }\n get active() {\n return this._currentView;\n }\n}\n/**\n * Make sure the given view is unique\n * and not already registered.\n */\nconst isUniqueNavigation = function (view, views) {\n if (views.find(search => search.id === view.id)) {\n throw new Error(`Navigation id ${view.id} is already registered`);\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Navigation interface requirements.\n */\nconst isValidNavigation = function (view) {\n if (!view.id || typeof view.id !== 'string') {\n throw new Error('Navigation id is required and must be a string');\n }\n if (!view.name || typeof view.name !== 'string') {\n throw new Error('Navigation name is required and must be a string');\n }\n /**\n * Legacy handle their content and icon differently\n * TODO: remove when support for legacy views is removed\n */\n if (!view.legacy) {\n if (!view.getContents || typeof view.getContents !== 'function') {\n throw new Error('Navigation getContents is required and must be a function');\n }\n if (!view.icon || typeof view.icon !== 'string' || !isSvg(view.icon)) {\n throw new Error('Navigation icon is required and must be a valid svg string');\n }\n }\n if (!('order' in view) || typeof view.order !== 'number') {\n throw new Error('Navigation order is required and must be a number');\n }\n // Optional properties\n if (view.columns) {\n view.columns.forEach(isValidColumn);\n }\n if (view.emptyView && typeof view.emptyView !== 'function') {\n throw new Error('Navigation emptyView must be a function');\n }\n if (view.parent && typeof view.parent !== 'string') {\n throw new Error('Navigation parent must be a string');\n }\n if ('sticky' in view && typeof view.sticky !== 'boolean') {\n throw new Error('Navigation sticky must be a boolean');\n }\n if ('expanded' in view && typeof view.expanded !== 'boolean') {\n throw new Error('Navigation expanded must be a boolean');\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== 'string') {\n throw new Error('Navigation defaultSortKey must be a string');\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Column interface requirements.\n */\nconst isValidColumn = function (column) {\n if (!column.id || typeof column.id !== 'string') {\n throw new Error('A column id is required');\n }\n if (!column.title || typeof column.title !== 'string') {\n throw new Error('A column title is required');\n }\n if (!column.render || typeof column.render !== 'function') {\n throw new Error('A render function is required');\n }\n // Optional properties\n if (column.sort && typeof column.sort !== 'function') {\n throw new Error('Column sortFunction must be a function');\n }\n if (column.summary && typeof column.summary !== 'function') {\n throw new Error('Column summary must be a function');\n }\n return true;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.currentView?.legacy),expression:\"!currentView?.legacy\"}],class:{'app-content--hidden': _vm.currentView?.legacy},attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"title\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"title\":_vm.t('files', 'No files in here'),\"description\":_vm.t('files', 'No files or folders have been deleted yet'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":\"t('files', 'Go to the previous folder')\",\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('TrashCan')]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-view\":_vm.currentView,\"nodes\":_vm.dirContents}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=66068cbb&scoped=true&\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66068cbb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"icon\":view.iconClass,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"title\":view.name,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact\":true,\"icon\":child.iconClass,\"title\":child.name,\"to\":_vm.generateToNavigation(child)}},[(child.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":child.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"title\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<NcAppNavigationItem v-if=\"storageStats\"\n\t\t:aria-label=\"t('files', 'Storage informations')\"\n\t\t:class=\"{ 'app-navigation-entry__settings-quota--not-unlimited': storageStats.quota >= 0}\"\n\t\t:loading=\"loadingStorageStats\"\n\t\t:name=\"storageStatsTitle\"\n\t\t:title=\"storageStatsTooltip\"\n\t\tclass=\"app-navigation-entry__settings-quota\"\n\t\tdata-cy-files-navigation-settings-quota\n\t\t@click.stop.prevent=\"debounceUpdateStorageStats\">\n\t\t<ChartPie slot=\"icon\" :size=\"20\" />\n\n\t\t<!-- Progress bar -->\n\t\t<NcProgressBar v-if=\"storageStats.quota >= 0\"\n\t\t\tslot=\"extra\"\n\t\t\t:error=\"storageStats.relative > 80\"\n\t\t\t:value=\"Math.min(storageStats.relative, 100)\" />\n\t</NcAppNavigationItem>\n</template>\n\n<script>\nimport { formatFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport { debounce, throttle } from 'throttle-debounce'\nimport { translate } from '@nextcloud/l10n'\nimport axios from '@nextcloud/axios'\nimport ChartPie from 'vue-material-design-icons/ChartPie.vue'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport logger from '../logger.js'\nimport { subscribe } from '@nextcloud/event-bus'\n\nexport default {\n\tname: 'NavigationQuota',\n\n\tcomponents: {\n\t\tChartPie,\n\t\tNcAppNavigationItem,\n\t\tNcProgressBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloadingStorageStats: false,\n\t\t\tstorageStats: loadState('files', 'storageStats', null),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tstorageStatsTitle() {\n\t\t\tconst usedQuotaByte = formatFileSize(this.storageStats?.used)\n\t\t\tconst quotaByte = formatFileSize(this.storageStats?.quota)\n\n\t\t\t// If no quota set\n\t\t\tif (this.storageStats?.quota < 0) {\n\t\t\t\treturn this.t('files', '{usedQuotaByte} used', { usedQuotaByte })\n\t\t\t}\n\n\t\t\treturn this.t('files', '{used} of {quota} used', {\n\t\t\t\tused: usedQuotaByte,\n\t\t\t\tquota: quotaByte,\n\t\t\t})\n\t\t},\n\t\tstorageStatsTooltip() {\n\t\t\tif (!this.storageStats.relative) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\treturn this.t('files', '{relative}% used', this.storageStats)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t/**\n\t\t * Update storage stats every minute\n\t\t * TODO: remove when all views are migrated to Vue\n\t\t */\n\t\tsetInterval(this.throttleUpdateStorageStats, 60 * 1000)\n\n\t\tsubscribe('files:node:created', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:deleted', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:moved', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:updated', this.throttleUpdateStorageStats)\n\t},\n\n\tmethods: {\n\t\t// From user input\n\t\tdebounceUpdateStorageStats: debounce(200, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\t\t// From interval or event bus\n\t\tthrottleUpdateStorageStats: throttle(1000, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\n\t\t/**\n\t\t * Update the storage stats\n\t\t * Throttled at max 1 refresh per minute\n\t\t *\n\t\t * @param {Event} [event = null] if user interaction\n\t\t */\n\t\tasync updateStorageStats(event = null) {\n\t\t\tif (this.loadingStorageStats) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loadingStorageStats = true\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(generateUrl('/apps/files/api/v1/stats'))\n\t\t\t\tif (!response?.data?.data) {\n\t\t\t\t\tthrow new Error('Invalid storage stats')\n\t\t\t\t}\n\t\t\t\tthis.storageStats = response.data.data\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Could not refresh storage stats', { error })\n\t\t\t\t// Only show to the user if it was manually triggered\n\t\t\t\tif (event) {\n\t\t\t\t\tshowError(t('files', 'Could not refresh storage stats'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingStorageStats = false\n\t\t\t}\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// User storage stats display\n.app-navigation-entry__settings-quota {\n\t// Align title with progress and icon\n\t&--not-unlimited::v-deep .app-navigation-entry__title {\n\t\tmargin-top: -4px;\n\t}\n\n\tprogress {\n\t\tposition: absolute;\n\t\tbottom: 10px;\n\t\tmargin-left: 44px;\n\t\twidth: calc(100% - 44px - 22px);\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=918797b2&scoped=true&\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"918797b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"title\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"title\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"title\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"title\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Gary Kim <gary@garykim.dev>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'Setting',\n\tprops: {\n\t\tel: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.appendChild(this.el())\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=61d69eae&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<NcAppSettingsDialog :open=\"open\"\n\t\t:show-navigation=\"true\"\n\t\t:title=\"t('files', 'Files settings')\"\n\t\t@update:open=\"onClose\">\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection id=\"settings\" :title=\"t('files', 'Files settings')\">\n\t\t\t<NcCheckboxRadioSwitch :checked=\"userConfig.show_hidden\"\n\t\t\t\t@update:checked=\"setConfig('show_hidden', $event)\">\n\t\t\t\t{{ t('files', 'Show hidden files') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch :checked=\"userConfig.crop_image_previews\"\n\t\t\t\t@update:checked=\"setConfig('crop_image_previews', $event)\">\n\t\t\t\t{{ t('files', 'Crop image previews') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection v-if=\"settings.length !== 0\"\n\t\t\tid=\"more-settings\"\n\t\t\t:title=\"t('files', 'Additional settings')\">\n\t\t\t<template v-for=\"setting in settings\">\n\t\t\t\t<Setting :key=\"setting.name\" :el=\"setting.el\" />\n\t\t\t</template>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Webdav URL-->\n\t\t<NcAppSettingsSection id=\"webdav\" :title=\"t('files', 'WebDAV')\">\n\t\t\t<NcInputField id=\"webdav-url-input\"\n\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t:success=\"webdavUrlCopied\"\n\t\t\t\t:trailing-button-label=\"t('files', 'Copy to clipboard')\"\n\t\t\t\t:value=\"webdavUrl\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\ttype=\"url\"\n\t\t\t\t@focus=\"$event.target.select()\"\n\t\t\t\t@trailing-button-click=\"copyCloudId\">\n\t\t\t\t<template #trailing-button-icon>\n\t\t\t\t\t<Clipboard :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcInputField>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\"\n\t\t\t\t\t:href=\"webdavDocs\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t{{ t('files', 'Use this address to access your Files via WebDAV') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\" :href=\"appPasswordUrl\">\n\t\t\t\t\t{{ t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'\nimport NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport Clipboard from 'vue-material-design-icons/Clipboard.vue'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport Setting from '../components/Setting.vue'\n\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { translate } from '@nextcloud/l10n'\nimport { useUserConfigStore } from '../store/userconfig.ts'\n\nexport default {\n\tname: 'Settings',\n\tcomponents: {\n\t\tClipboard,\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcInputField,\n\t\tSetting,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst userConfigStore = useUserConfigStore()\n\t\treturn {\n\t\t\tuserConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Settings API\n\t\t\tsettings: window.OCA?.Files?.Settings?.settings || [],\n\n\t\t\t// Webdav infos\n\t\t\twebdavUrl: generateRemoteUrl('dav/files/' + encodeURIComponent(getCurrentUser()?.uid)),\n\t\t\twebdavDocs: 'https://docs.nextcloud.com/server/stable/go.php?to=user-webdav',\n\t\t\tappPasswordUrl: generateUrl('/settings/user/security#generate-app-token-section'),\n\t\t\twebdavUrlCopied: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tuserConfig() {\n\t\t\treturn this.userConfigStore.userConfig\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.open())\n\t},\n\n\tbeforeDestroy() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.close())\n\t},\n\n\tmethods: {\n\t\tonClose() {\n\t\t\tthis.$emit('close')\n\t\t},\n\n\t\tsetConfig(key, value) {\n\t\t\tthis.userConfigStore.update(key, value)\n\t\t},\n\n\t\tasync copyCloudId() {\n\t\t\tdocument.querySelector('input#webdav-url-input').select()\n\n\t\t\tif (!navigator.clipboard) {\n\t\t\t\t// Clipboard API not available\n\t\t\t\tshowError(t('files', 'Clipboard is not available'))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tawait navigator.clipboard.writeText(this.webdavUrl)\n\t\t\tthis.webdavUrlCopied = true\n\t\t\tshowSuccess(t('files', 'WebDAV URL copied to clipboard'))\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.webdavUrlCopied = false\n\t\t\t}, 5000)\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.setting-link:hover {\n\ttext-decoration: underline;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=76ca5d1f&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76ca5d1f\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<NcAppNavigation data-cy-files-navigation>\n\t\t<template #list>\n\t\t\t<NcAppNavigationItem v-for=\"view in parentViews\"\n\t\t\t\t:key=\"view.id\"\n\t\t\t\t:allow-collapse=\"true\"\n\t\t\t\t:data-cy-files-navigation-item=\"view.id\"\n\t\t\t\t:icon=\"view.iconClass\"\n\t\t\t\t:open=\"isExpanded(view)\"\n\t\t\t\t:pinned=\"view.sticky\"\n\t\t\t\t:title=\"view.name\"\n\t\t\t\t:to=\"generateToNavigation(view)\"\n\t\t\t\t@update:open=\"onToggleExpand(view)\">\n\t\t\t\t<!-- Sanitized icon as svg if provided -->\n\t\t\t\t<NcIconSvgWrapper v-if=\"view.icon\" slot=\"icon\" :svg=\"view.icon\" />\n\n\t\t\t\t<!-- Child views if any -->\n\t\t\t\t<NcAppNavigationItem v-for=\"child in childViews[view.id]\"\n\t\t\t\t\t:key=\"child.id\"\n\t\t\t\t\t:data-cy-files-navigation-item=\"child.id\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\t:icon=\"child.iconClass\"\n\t\t\t\t\t:title=\"child.name\"\n\t\t\t\t\t:to=\"generateToNavigation(child)\">\n\t\t\t\t\t<!-- Sanitized icon as svg if provided -->\n\t\t\t\t\t<NcIconSvgWrapper v-if=\"child.icon\" slot=\"icon\" :svg=\"child.icon\" />\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t</NcAppNavigationItem>\n\t\t</template>\n\n\t\t<!-- Non-scrollable navigation bottom elements -->\n\t\t<template #footer>\n\t\t\t<ul class=\"app-navigation-entry__settings\">\n\t\t\t\t<!-- User storage usage statistics -->\n\t\t\t\t<NavigationQuota />\n\n\t\t\t\t<!-- Files settings modal toggle-->\n\t\t\t\t<NcAppNavigationItem :aria-label=\"t('files', 'Open the files app settings')\"\n\t\t\t\t\t:title=\"t('files', 'Files settings')\"\n\t\t\t\t\tdata-cy-files-navigation-settings-button\n\t\t\t\t\t@click.prevent.stop=\"openSettings\">\n\t\t\t\t\t<Cog slot=\"icon\" :size=\"20\" />\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t</ul>\n\t\t</template>\n\n\t\t<!-- Settings modal-->\n\t\t<SettingsModal :open=\"settingsOpened\"\n\t\t\tdata-cy-files-navigation-settings\n\t\t\t@close=\"onSettingsClose\" />\n\t</NcAppNavigation>\n</template>\n\n<script>\nimport { emit, subscribe } from '@nextcloud/event-bus'\nimport { translate } from '@nextcloud/l10n'\nimport Cog from 'vue-material-design-icons/Cog.vue'\nimport NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\n\nimport { setPageHeading } from '../../../../core/src/OCP/accessibility.js'\nimport { useViewConfigStore } from '../store/viewConfig.ts'\nimport logger from '../logger.js'\nimport Navigation from '../services/Navigation.ts'\nimport NavigationQuota from '../components/NavigationQuota.vue'\nimport SettingsModal from './Settings.vue'\n\nexport default {\n\tname: 'Navigation',\n\n\tcomponents: {\n\t\tCog,\n\t\tNavigationQuota,\n\t\tNcAppNavigation,\n\t\tNcAppNavigationItem,\n\t\tNcIconSvgWrapper,\n\t\tSettingsModal,\n\t},\n\n\tprops: {\n\t\t// eslint-disable-next-line vue/prop-name-casing\n\t\tNavigation: {\n\t\t\ttype: Navigation,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst viewConfigStore = useViewConfigStore()\n\t\treturn {\n\t\t\tviewConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpened: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcurrentViewId() {\n\t\t\treturn this.$route?.params?.view || 'files'\n\t\t},\n\n\t\t/** @return {Navigation} */\n\t\tcurrentView() {\n\t\t\treturn this.views.find(view => view.id === this.currentViewId)\n\t\t},\n\n\t\t/** @return {Navigation[]} */\n\t\tviews() {\n\t\t\treturn this.Navigation.views\n\t\t},\n\n\t\t/** @return {Navigation[]} */\n\t\tparentViews() {\n\t\t\treturn this.views\n\t\t\t\t// filter child views\n\t\t\t\t.filter(view => !view.parent)\n\t\t\t\t// sort views by order\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.order - b.order\n\t\t\t\t})\n\t\t},\n\n\t\t/** @return {Navigation[]} */\n\t\tchildViews() {\n\t\t\treturn this.views\n\t\t\t\t// filter parent views\n\t\t\t\t.filter(view => !!view.parent)\n\t\t\t\t// create a map of parents and their children\n\t\t\t\t.reduce((list, view) => {\n\t\t\t\t\tlist[view.parent] = [...(list[view.parent] || []), view]\n\t\t\t\t\t// Sort children by order\n\t\t\t\t\tlist[view.parent].sort((a, b) => {\n\t\t\t\t\t\treturn a.order - b.order\n\t\t\t\t\t})\n\t\t\t\t\treturn list\n\t\t\t\t}, {})\n\t\t},\n\t},\n\n\twatch: {\n\t\tcurrentView(view, oldView) {\n\t\t\t// If undefined, it means we're initializing the view\n\t\t\t// This is handled by the legacy-view:initialized event\n\t\t\t// TODO: remove when legacy views are dropped\n\t\t\tif (view?.id === oldView?.id) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.Navigation.setActive(view)\n\t\t\tlogger.debug('Navigation changed', { id: view.id, view })\n\n\t\t\tthis.showView(view, oldView)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tif (this.currentView) {\n\t\t\tlogger.debug('Navigation mounted. Showing requested view', { view: this.currentView })\n\t\t\tthis.showView(this.currentView)\n\t\t}\n\n\t\tsubscribe('files:legacy-navigation:changed', this.onLegacyNavigationChanged)\n\n\t\t// TODO: remove this once the legacy navigation is gone\n\t\tsubscribe('files:legacy-view:initialized', () => {\n\t\t\tlogger.debug('Legacy view initialized', { ...this.currentView })\n\t\t\tthis.showView(this.currentView)\n\t\t})\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {Navigation} view the new active view\n\t\t * @param {Navigation} oldView the old active view\n\t\t */\n\t\tshowView(view, oldView) {\n\t\t\t// Closing any opened sidebar\n\t\t\twindow?.OCA?.Files?.Sidebar?.close?.()\n\n\t\t\tif (view?.legacy) {\n\t\t\t\tconst newAppContent = document.querySelector('#app-content #app-content-' + this.currentView.id + '.viewcontainer')\n\t\t\t\tdocument.querySelectorAll('#app-content .viewcontainer').forEach(el => {\n\t\t\t\t\tel.classList.add('hidden')\n\t\t\t\t})\n\t\t\t\tnewAppContent.classList.remove('hidden')\n\n\t\t\t\t// Triggering legacy navigation events\n\t\t\t\tconst { dir = '/' } = OC.Util.History.parseUrlQuery()\n\t\t\t\tconst params = { itemId: view.id, dir }\n\n\t\t\t\tlogger.debug('Triggering legacy navigation event', params)\n\t\t\t\twindow.jQuery(newAppContent).trigger(new window.jQuery.Event('show', params))\n\t\t\t\twindow.jQuery(newAppContent).trigger(new window.jQuery.Event('urlChanged', params))\n\t\t\t}\n\n\t\t\tthis.Navigation.setActive(view)\n\t\t\tsetPageHeading(view.name)\n\t\t\temit('files:navigation:changed', view)\n\t\t},\n\n\t\t/**\n\t\t * Coming from the legacy files app.\n\t\t * TODO: remove when all views are migrated.\n\t\t *\n\t\t * @param {Navigation} view the new active view\n\t\t */\n\t\tonLegacyNavigationChanged({ id } = { id: 'files' }) {\n\t\t\tconst view = this.Navigation.views.find(view => view.id === id)\n\t\t\tif (view && view.legacy && view.id !== this.currentView.id) {\n\t\t\t\t// Force update the current route as the request comes\n\t\t\t\t// from the legacy files app router\n\t\t\t\tthis.$router.replace({ ...this.$route, params: { view: view.id } })\n\t\t\t\tthis.Navigation.setActive(view)\n\t\t\t\tthis.showView(view)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Expand/collapse a a view with children and permanently\n\t\t * save this setting in the server.\n\t\t *\n\t\t * @param {Navigation} view the view to toggle\n\t\t */\n\t\tonToggleExpand(view) {\n\t\t\t// Invert state\n\t\t\tconst isExpanded = this.isExpanded(view)\n\t\t\t// Update the view expanded state, might not be necessary\n\t\t\tview.expanded = !isExpanded\n\t\t\tthis.viewConfigStore.update(view.id, 'expanded', !isExpanded)\n\t\t},\n\n\t\t/**\n\t\t * Check if a view is expanded by user config\n\t\t * or fallback to the default value.\n\t\t *\n\t\t * @param {Navigation} view the view to check\n\t\t */\n\t\tisExpanded(view) {\n\t\t\treturn typeof this.viewConfigStore.getConfig(view.id)?.expanded === 'boolean'\n\t\t\t\t? this.viewConfigStore.getConfig(view.id).expanded === true\n\t\t\t\t: view.expanded === true\n\t\t},\n\n\t\t/**\n\t\t * Generate the route to a view\n\t\t *\n\t\t * @param {Navigation} view the view to toggle\n\t\t */\n\t\tgenerateToNavigation(view) {\n\t\t\tif (view.params) {\n\t\t\t\tconst { dir, fileid } = view.params\n\t\t\t\treturn { name: 'filelist', params: view.params, query: { dir, fileid } }\n\t\t\t}\n\t\t\treturn { name: 'filelist', params: { view: view.id } }\n\t\t},\n\n\t\t/**\n\t\t * Open the settings modal\n\t\t */\n\t\topenSettings() {\n\t\t\tthis.settingsOpened = true\n\t\t},\n\n\t\t/**\n\t\t * Close the settings modal\n\t\t */\n\t\tonSettingsClose() {\n\t\t\tthis.settingsOpened = false\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\n.app-navigation::v-deep .app-navigation-entry-icon {\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.app-navigation > ul.app-navigation__list {\n\t// Use flex gap value for more elegant spacing\n\tpadding-bottom: var(--default-grid-baseline, 4px);\n}\n\n.app-navigation-entry__settings {\n\theight: auto !important;\n\toverflow: hidden !important;\n\tpadding-top: 0 !important;\n\t// Prevent shrinking or growing\n\tflex: 0 0 auto;\n}\n</style>\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=657a978e&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"657a978e\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../logger.js'\n\n/**\n * Fetch and register the legacy files views\n */\nexport default function() {\n\tconst legacyViews = Object.values(loadState('files', 'navigation', {}))\n\n\tif (legacyViews.length > 0) {\n\t\tlogger.debug('Legacy files views detected. Processing...', legacyViews)\n\t\tlegacyViews.forEach(view => {\n\t\t\tregisterLegacyView(view)\n\t\t\tif (view.sublist) {\n\t\t\t\tview.sublist.forEach(subview => registerLegacyView({ ...subview, parent: view.id }))\n\t\t\t}\n\t\t})\n\t}\n}\n\nconst registerLegacyView = function({ id, name, order, icon, parent, classes = '', expanded, params }) {\n\tOCP.Files.Navigation.register({\n\t\tid,\n\t\tname,\n\t\torder,\n\t\tparams,\n\t\tparent,\n\t\texpanded: expanded === true,\n\t\ticonClass: icon ? `icon-${icon}` : 'nav-icon-' + id,\n\t\tlegacy: true,\n\t\tsticky: classes.includes('pinned'),\n\t})\n}\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport queryString from 'query-string'\n\nVue.use(Router)\n\nconst router = new Router({\n\tmode: 'history',\n\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/files', ''),\n\tlinkActiveClass: 'active',\n\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\t// Pretending we're using the default view\n\t\t\talias: '/files',\n\t\t},\n\t\t{\n\t\t\tpath: '/:view/:fileid?',\n\t\t\tname: 'filelist',\n\t\t\tprops: true,\n\t\t},\n\t],\n\n\t// Custom stringifyQuery to prevent encoding of slashes in the url\n\tstringifyQuery(query) {\n\t\tconst result = queryString.stringify(query).replace(/%2F/gmi, '/')\n\t\treturn result ? ('?' + result) : ''\n\t},\n})\n\nexport default router\n","import './templates.js';\nimport './legacy/filelistSearch.js';\nimport './actions/deleteAction';\nimport './actions/sidebarAction';\nimport Vue from 'vue';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport FilesListView from './views/FilesList.vue';\nimport NavigationService from './services/Navigation';\nimport NavigationView from './views/Navigation.vue';\nimport processLegacyFilesViews from './legacy/navigationMapper.js';\nimport registerPreviewServiceWorker from './services/ServiceWorker.js';\nimport router from './router/router.js';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nconst Router = new RouterService(router);\nObject.assign(window.OCP.Files, { Router });\n// Init Pinia store\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\n// Init Navigation Service\nconst Navigation = new NavigationService();\nObject.assign(window.OCP.Files, { Navigation });\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\n// Init Navigation View\nconst View = Vue.extend(NavigationView);\nconst FilesNavigationRoot = new View({\n name: 'FilesNavigationRoot',\n propsData: {\n Navigation,\n },\n router,\n pinia,\n});\nFilesNavigationRoot.$mount('#app-navigation-files');\n// Init content list view\nconst ListView = Vue.extend(FilesListView);\nconst FilesList = new ListView({\n name: 'FilesListRoot',\n router,\n pinia,\n});\nFilesList.$mount('#app-content-vue');\n// Init legacy and new files views\nprocessLegacyFilesViews();\n// Register preview service worker\nregisterPreviewServiceWorker();\n","export default class RouterService {\n _router;\n constructor(router) {\n this._router = router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this._router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this._router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\nexport default () => {\n\tif ('serviceWorker' in navigator) {\n\t\t// Use the window load event to keep the page load performant\n\t\twindow.addEventListener('load', async () => {\n\t\t\ttry {\n\t\t\t\tconst url = generateUrl('/apps/files/preview-service-worker.js', {}, { noRewrite: true })\n\t\t\t\tconst registration = await navigator.serviceWorker.register(url, { scope: '/' })\n\t\t\t\tlogger.debug('SW registered: ', { registration })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('SW registration failed: ', { error })\n\t\t\t}\n\t\t})\n\t} else {\n\t\tlogger.debug('Service Worker is not enabled on this browser.')\n\t}\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".custom-svg-icon[data-v-93e9b2f4]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-93e9b2f4] svg{height:22px;width:22px;fill:currentColor}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/CustomSvgIconRender.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.custom-svg-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\talign-self: center;\\n\\tjustify-content: center;\\n\\tjustify-self: center;\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\topacity: 1;\\n\\n\\t::v-deep svg {\\n\\t\\t// mdi icons have a size of 24px\\n\\t\\t// 22px results in roughly 16px inner size\\n\\t\\theight: 22px;\\n\\t\\twidth: 22px;\\n\\t\\tfill: currentColor;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"tr[data-v-0600090e]:hover,tr[data-v-0600090e]:focus,tr[data-v-0600090e]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-0600090e]:not([style*=background]){background:var(--color-loading-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\"AAGC,+EAGC,6CAAA,CAKF,wEACI,oCAAA\",\"sourcesContent\":[\"\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"tr[data-v-e6a083be]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-e6a083be]{user-select:none;color:var(--color-text-maxcontrast) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tpadding-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n}\\n\\ntd {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list__column[data-v-76b6186a]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-76b6186a]{cursor:pointer}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list__row-actions-batch[data-v-03e57b1e]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t::v-deep .button-vue__wrapper {\\n\\t\\twidth: 100%;\\n\\t\\tspan.button-vue__text {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\t// Reverse padding\\n\\tpadding: 0 4px 0 16px !important;\\n\\n\\t// Icon after text\\n\\t.button-vue__wrapper {\\n\\t\\tflex-direction: row-reverse;\\n\\t\\t// Take max inner width for text overflow ellipsis\\n\\t\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.button-vue__icon {\\n\\t\\ttransition-timing-function: linear;\\n\\t\\ttransition-duration: .1s;\\n\\t\\ttransition-property: opacity;\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t.button-vue__text {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&--active,\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\t.button-vue__icon {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list[data-v-640a8bb8]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-640a8bb8] tbody,.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-640a8bb8] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}.files-list[data-v-640a8bb8] td,.files-list[data-v-640a8bb8] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-640a8bb8] td span,.files-list[data-v-640a8bb8] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-640a8bb8] .files-list__row-checkbox{justify-content:center}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-640a8bb8] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-640a8bb8] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-640a8bb8] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-640a8bb8] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list[data-v-640a8bb8] .files-list__row-icon-favorite{position:absolute;top:4px;right:-8px;color:#fc0}.files-list[data-v-640a8bb8] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-640a8bb8] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%}.files-list[data-v-640a8bb8] .files-list__row-name a:focus .files-list__row-name-text,.files-list[data-v-640a8bb8] .files-list__row-name a:focus-visible .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-640a8bb8] .files-list__row-name .files-list__row-name-text{padding:5px 10px;margin-left:-10px}.files-list[data-v-640a8bb8] .files-list__row-actions{width:auto}.files-list[data-v-640a8bb8] .files-list__row-actions~td,.files-list[data-v-640a8bb8] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-640a8bb8] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-640a8bb8] .files-list__row-actions button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list[data-v-640a8bb8] .files-list__row-size{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list[data-v-640a8bb8] .files-list__row-column-custom{width:calc(var(--row-height)*2)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAGD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA,CAGD,gEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,0EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,sBAAA,CACA,8EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,iHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,2GACC,mBAAA,CAKH,mDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,wDACC,0BAAA,CAGD,gGACC,8BAAA,CACA,+BAAA,CAGD,2DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAGD,4DACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CAIF,mDAEC,eAAA,CAEA,aAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,oLAEC,mDAAA,CACA,kBAAA,CAIF,8EAEC,gBAAA,CACA,iBAAA,CAIF,sDACC,UAAA,CAGA,kHAEC,2BAAA,CAIA,+EAEC,kBAAA,CAED,6GAEC,mCAAA,CAKH,mDAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,mFACC,+BAAA,CACA,wGACC,kBAAA,CAKH,4DACC,+BAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&::v-deep {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody, .vue-recycle-scroller__slot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.vue-recycle-scroller__slot[role='thead'] {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: left;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-right: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&> span:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 4px;\\n\\t\\t\\t\\tright: -8px;\\n\\t\\t\\t\\tcolor: #ffcc00;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\ta {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-size {\\n\\t\\t\\t// Right align text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t\\twidth: calc(var(--row-height) * 1.5);\\n\\t\\t\\t// opacity varies with the size\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\t\\t// Icon is before text since size is right aligned\\n\\t\\t\\t.files-list__column-sort-button {\\n\\t\\t\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t\\t\\t.button-vue__wrapper {\\n\\t\\t\\t\\t\\tflex-direction: row;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-navigation-entry__settings-quota--not-unlimited[data-v-918797b2] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-918797b2]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__title {\\n\\t\\tmargin-top: -4px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 10px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".template-picker__item[data-v-6c072a31]{display:flex}.template-picker__label[data-v-6c072a31]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-6c072a31],.template-picker__label *[data-v-6c072a31]{cursor:pointer;user-select:none}.template-picker__label[data-v-6c072a31]::before{display:none !important}.template-picker__preview[data-v-6c072a31]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-6c072a31]{border-color:var(--color-primary)}.template-picker__preview--failed[data-v-6c072a31]{display:flex}.template-picker__image[data-v-6c072a31]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-6c072a31]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-6c072a31]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,iCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n\\n.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-content[data-v-66068cbb]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-66068cbb]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-66068cbb]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-66068cbb]{flex:0 0}.files-list__refresh-icon[data-v-66068cbb]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-66068cbb]{margin:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\n\\t// TODO: remove after all legacy views are migrated\\n\\t// Hides the legacy app-content if shown view is not legacy\\n\\t&:not(&--hidden)::v-deep + #app-content {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-content: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\t}\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-navigation[data-v-657a978e] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-657a978e]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-657a978e]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".setting-link[data-v-76ca5d1f]:hover{text-decoration:underline}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".templates-picker__form[data-v-d46f1dc6]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-d46f1dc6]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-d46f1dc6]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-d46f1dc6]{display:flex;justify-content:end;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-d46f1dc6],.templates-picker__buttons input[type=submit][data-v-d46f1dc6]{height:44px}.templates-picker[data-v-d46f1dc6] .modal-container{position:relative}.templates-picker__loading[data-v-d46f1dc6]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,mBAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"sourcesContent\":[\"\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: end;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n/* @keyframes preview-gradient-fade {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n 100% {\\n opacity: 1;\\n }\\n} */\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\";AA6mBA;;;;;;;;;;GAUA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @author John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (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 Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<Fragment>\\n\\t\\t<td class=\\\"files-list__row-checkbox\\\">\\n\\t\\t\\t<NcCheckboxRadioSwitch v-if=\\\"active\\\"\\n\\t\\t\\t\\t:aria-label=\\\"t('files', 'Select the row for {displayName}', { displayName })\\\"\\n\\t\\t\\t\\t:checked=\\\"selectedFiles\\\"\\n\\t\\t\\t\\t:value=\\\"fileid\\\"\\n\\t\\t\\t\\tname=\\\"selectedFiles\\\"\\n\\t\\t\\t\\t@update:checked=\\\"onSelectionChange\\\" />\\n\\t\\t</td>\\n\\n\\t\\t<!-- Link to file -->\\n\\t\\t<td class=\\\"files-list__row-name\\\">\\n\\t\\t\\t<a ref=\\\"name\\\" v-bind=\\\"linkTo\\\" @click=\\\"execDefaultAction\\\">\\n\\t\\t\\t\\t<!-- Icon or preview -->\\n\\t\\t\\t\\t<span class=\\\"files-list__row-icon\\\">\\n\\t\\t\\t\\t\\t<FolderIcon v-if=\\\"source.type === 'folder'\\\" />\\n\\n\\t\\t\\t\\t\\t<!-- Decorative image, should not be aria documented -->\\n\\t\\t\\t\\t\\t<span v-else-if=\\\"previewUrl && !backgroundFailed\\\"\\n\\t\\t\\t\\t\\t\\tref=\\\"previewImg\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"files-list__row-icon-preview\\\"\\n\\t\\t\\t\\t\\t\\t:style=\\\"{ backgroundImage }\\\" />\\n\\n\\t\\t\\t\\t\\t<span v-else-if=\\\"mimeIconUrl\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"files-list__row-icon-preview files-list__row-icon-preview--mime\\\"\\n\\t\\t\\t\\t\\t\\t:style=\\\"{ backgroundImage: mimeIconUrl }\\\" />\\n\\n\\t\\t\\t\\t\\t<FileIcon v-else />\\n\\n\\t\\t\\t\\t\\t<!-- Favorite icon -->\\n\\t\\t\\t\\t\\t<span v-if=\\\"isFavorite\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"files-list__row-icon-favorite\\\"\\n\\t\\t\\t\\t\\t\\t:aria-label=\\\"t('files', 'Favorite')\\\">\\n\\t\\t\\t\\t\\t\\t<StarIcon aria-hidden=\\\"true\\\" :size=\\\"20\\\" />\\n\\t\\t\\t\\t\\t</span>\\n\\t\\t\\t\\t</span>\\n\\n\\t\\t\\t\\t<!-- File name -->\\n\\t\\t\\t\\t<span class=\\\"files-list__row-name-text\\\">{{ displayName }}</span>\\n\\t\\t\\t</a>\\n\\t\\t</td>\\n\\n\\t\\t<!-- Actions -->\\n\\t\\t<td :class=\\\"`files-list__row-actions-${uniqueId}`\\\" class=\\\"files-list__row-actions\\\">\\n\\t\\t\\t<!-- Inline actions -->\\n\\t\\t\\t<!-- TODO: implement CustomElementRender -->\\n\\n\\t\\t\\t<!-- Menu actions -->\\n\\t\\t\\t<NcActions v-if=\\\"active\\\"\\n\\t\\t\\t\\tref=\\\"actionsMenu\\\"\\n\\t\\t\\t\\t:boundaries-element=\\\"boundariesElement\\\"\\n\\t\\t\\t\\t:container=\\\"boundariesElement\\\"\\n\\t\\t\\t\\t:disabled=\\\"source._loading\\\"\\n\\t\\t\\t\\t:force-title=\\\"true\\\"\\n\\t\\t\\t\\t:force-menu=\\\"true\\\"\\n\\t\\t\\t\\t:inline=\\\"enabledInlineActions.length\\\"\\n\\t\\t\\t\\t:open.sync=\\\"openedMenu\\\">\\n\\t\\t\\t\\t<NcActionButton v-for=\\\"action in enabledMenuActions\\\"\\n\\t\\t\\t\\t\\t:key=\\\"action.id\\\"\\n\\t\\t\\t\\t\\t:class=\\\"'files-list__row-action-' + action.id\\\"\\n\\t\\t\\t\\t\\t@click=\\\"onActionClick(action)\\\">\\n\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t<NcLoadingIcon v-if=\\\"loading === action.id\\\" :size=\\\"18\\\" />\\n\\t\\t\\t\\t\\t\\t<CustomSvgIconRender v-else :svg=\\\"action.iconSvgInline([source], currentView)\\\" />\\n\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t{{ action.displayName([source], currentView) }}\\n\\t\\t\\t\\t</NcActionButton>\\n\\t\\t\\t</NcActions>\\n\\t\\t</td>\\n\\n\\t\\t<!-- Size -->\\n\\t\\t<td v-if=\\\"isSizeAvailable\\\"\\n\\t\\t\\t:style=\\\"{ opacity: sizeOpacity }\\\"\\n\\t\\t\\tclass=\\\"files-list__row-size\\\"\\n\\t\\t\\t@click=\\\"openDetailsIfAvailable\\\">\\n\\t\\t\\t<span>{{ size }}</span>\\n\\t\\t</td>\\n\\n\\t\\t<!-- View columns -->\\n\\t\\t<td v-for=\\\"column in columns\\\"\\n\\t\\t\\t:key=\\\"column.id\\\"\\n\\t\\t\\t:class=\\\"`files-list__row-${currentView?.id}-${column.id}`\\\"\\n\\t\\t\\tclass=\\\"files-list__row-column-custom\\\"\\n\\t\\t\\t@click=\\\"openDetailsIfAvailable\\\">\\n\\t\\t\\t<CustomElementRender v-if=\\\"active\\\"\\n\\t\\t\\t\\t:current-view=\\\"currentView\\\"\\n\\t\\t\\t\\t:render=\\\"column.render\\\"\\n\\t\\t\\t\\t:source=\\\"source\\\" />\\n\\t\\t</td>\\n\\t</Fragment>\\n</template>\\n\\n<script lang='ts'>\\nimport { debounce } from 'debounce'\\nimport { formatFileSize } from '@nextcloud/files'\\nimport { Fragment } from 'vue-frag'\\nimport { join } from 'path'\\nimport { showError, showSuccess } from '@nextcloud/dialogs'\\nimport { translate } from '@nextcloud/l10n'\\nimport CancelablePromise from 'cancelable-promise'\\nimport FileIcon from 'vue-material-design-icons/File.vue'\\nimport FolderIcon from 'vue-material-design-icons/Folder.vue'\\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\\nimport StarIcon from 'vue-material-design-icons/Star.vue'\\nimport Vue from 'vue'\\n\\nimport { ACTION_DETAILS } from '../actions/sidebarAction.ts'\\nimport { getFileActions } from '../services/FileAction.ts'\\nimport { hashCode } from '../utils/hashUtils.ts'\\nimport { isCachedPreview } from '../services/PreviewService.ts'\\nimport { useActionsMenuStore } from '../store/actionsmenu.ts'\\nimport { useFilesStore } from '../store/files.ts'\\nimport { useKeyboardStore } from '../store/keyboard.ts'\\nimport { useSelectionStore } from '../store/selection.ts'\\nimport { useUserConfigStore } from '../store/userconfig.ts'\\nimport CustomElementRender from './CustomElementRender.vue'\\nimport CustomSvgIconRender from './CustomSvgIconRender.vue'\\nimport logger from '../logger.js'\\n\\n// The registered actions list\\nconst actions = getFileActions()\\n\\nexport default Vue.extend({\\n\\tname: 'FileEntry',\\n\\n\\tcomponents: {\\n\\t\\tCustomElementRender,\\n\\t\\tCustomSvgIconRender,\\n\\t\\tFileIcon,\\n\\t\\tFolderIcon,\\n\\t\\tFragment,\\n\\t\\tNcActionButton,\\n\\t\\tNcActions,\\n\\t\\tNcCheckboxRadioSwitch,\\n\\t\\tNcLoadingIcon,\\n\\t\\tStarIcon,\\n\\t},\\n\\n\\tprops: {\\n\\t\\tactive: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t\\tisSizeAvailable: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t\\tsource: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tindex: {\\n\\t\\t\\ttype: Number,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tnodes: {\\n\\t\\t\\ttype: Array,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tfilesListWidth: {\\n\\t\\t\\ttype: Number,\\n\\t\\t\\tdefault: 0,\\n\\t\\t},\\n\\t},\\n\\n\\tsetup() {\\n\\t\\tconst actionsMenuStore = useActionsMenuStore()\\n\\t\\tconst filesStore = useFilesStore()\\n\\t\\tconst keyboardStore = useKeyboardStore()\\n\\t\\tconst selectionStore = useSelectionStore()\\n\\t\\tconst userConfigStore = useUserConfigStore()\\n\\t\\treturn {\\n\\t\\t\\tactionsMenuStore,\\n\\t\\t\\tfilesStore,\\n\\t\\t\\tkeyboardStore,\\n\\t\\t\\tselectionStore,\\n\\t\\t\\tuserConfigStore,\\n\\t\\t}\\n\\t},\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tbackgroundFailed: false,\\n\\t\\t\\tbackgroundImage: '',\\n\\t\\t\\tboundariesElement: document.querySelector('.app-content > .files-list'),\\n\\t\\t\\tloading: '',\\n\\t\\t}\\n\\t},\\n\\n\\tcomputed: {\\n\\t\\tuserConfig() {\\n\\t\\t\\treturn this.userConfigStore.userConfig\\n\\t\\t},\\n\\n\\t\\tcurrentView() {\\n\\t\\t\\treturn this.$navigation.active\\n\\t\\t},\\n\\t\\tcolumns() {\\n\\t\\t\\t// Hide columns if the list is too small\\n\\t\\t\\tif (this.filesListWidth < 512) {\\n\\t\\t\\t\\treturn []\\n\\t\\t\\t}\\n\\t\\t\\treturn this.currentView?.columns || []\\n\\t\\t},\\n\\n\\t\\tdir() {\\n\\t\\t\\t// Remove any trailing slash but leave root slash\\n\\t\\t\\treturn (this.$route?.query?.dir || '/').replace(/^(.+)\\\\/$/, '$1')\\n\\t\\t},\\n\\t\\tfileid() {\\n\\t\\t\\treturn this.source?.fileid?.toString?.()\\n\\t\\t},\\n\\t\\tdisplayName() {\\n\\t\\t\\treturn this.source.attributes.displayName\\n\\t\\t\\t\\t|| this.source.basename\\n\\t\\t},\\n\\n\\t\\tsize() {\\n\\t\\t\\tconst size = parseInt(this.source.size, 10) || 0\\n\\t\\t\\tif (typeof size !== 'number' || size < 0) {\\n\\t\\t\\t\\treturn this.t('files', 'Pending')\\n\\t\\t\\t}\\n\\t\\t\\treturn formatFileSize(size, true)\\n\\t\\t},\\n\\t\\tsizeOpacity() {\\n\\t\\t\\tconst size = parseInt(this.source.size, 10) || 0\\n\\t\\t\\tif (!size || size < 0) {\\n\\t\\t\\t\\treturn 1\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Whatever theme is active, the contrast will pass WCAG AA\\n\\t\\t\\t// with color main text over main background and an opacity of 0.7\\n\\t\\t\\tconst minOpacity = 0.7\\n\\t\\t\\tconst maxOpacitySize = 10 * 1024 * 1024\\n\\t\\t\\treturn minOpacity + (1 - minOpacity) * Math.pow((this.source.size / maxOpacitySize), 2)\\n\\t\\t},\\n\\n\\t\\tlinkTo() {\\n\\t\\t\\tif (this.source.type === 'folder') {\\n\\t\\t\\t\\tconst to = { ...this.$route, query: { dir: join(this.dir, this.source.basename) } }\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tis: 'router-link',\\n\\t\\t\\t\\t\\ttitle: this.t('files', 'Open folder {name}', { name: this.displayName }),\\n\\t\\t\\t\\t\\tto,\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\tconst action = this.enabledDefaultActions[0]\\n\\t\\t\\t\\tconst displayName = action.displayName([this.source], this.currentView)\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\ttitle: displayName,\\n\\t\\t\\t\\t\\trole: 'button',\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn {\\n\\t\\t\\t\\thref: this.source.source,\\n\\t\\t\\t\\t// TODO: Use first action title ?\\n\\t\\t\\t\\ttitle: this.t('files', 'Download file {name}', { name: this.displayName }),\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tselectedFiles() {\\n\\t\\t\\treturn this.selectionStore.selected\\n\\t\\t},\\n\\t\\tisSelected() {\\n\\t\\t\\treturn this.selectedFiles.includes(this.source?.fileid?.toString?.())\\n\\t\\t},\\n\\n\\t\\tcropPreviews() {\\n\\t\\t\\treturn this.userConfig.crop_image_previews\\n\\t\\t},\\n\\t\\tpreviewUrl() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst url = new URL(window.location.origin + this.source.attributes.previewUrl)\\n\\t\\t\\t\\t// Request tiny previews\\n\\t\\t\\t\\turl.searchParams.set('x', '32')\\n\\t\\t\\t\\turl.searchParams.set('y', '32')\\n\\t\\t\\t\\t// Handle cropping\\n\\t\\t\\t\\turl.searchParams.set('a', this.cropPreviews === true ? '0' : '1')\\n\\t\\t\\t\\treturn url.href\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn null\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tmimeIconUrl() {\\n\\t\\t\\tconst mimeType = this.source.mime || 'application/octet-stream'\\n\\t\\t\\tconst mimeIconUrl = window.OC?.MimeType?.getIconUrl?.(mimeType)\\n\\t\\t\\tif (mimeIconUrl) {\\n\\t\\t\\t\\treturn `url(${mimeIconUrl})`\\n\\t\\t\\t}\\n\\t\\t\\treturn ''\\n\\t\\t},\\n\\n\\t\\tenabledActions() {\\n\\t\\t\\treturn actions\\n\\t\\t\\t\\t.filter(action => !action.enabled || action.enabled([this.source], this.currentView))\\n\\t\\t\\t\\t.sort((a, b) => (a.order || 0) - (b.order || 0))\\n\\t\\t},\\n\\t\\tenabledInlineActions() {\\n\\t\\t\\tif (this.filesListWidth < 768) {\\n\\t\\t\\t\\treturn []\\n\\t\\t\\t}\\n\\t\\t\\treturn this.enabledActions.filter(action => action?.inline?.(this.source, this.currentView))\\n\\t\\t},\\n\\t\\tenabledMenuActions() {\\n\\t\\t\\tif (this.filesListWidth < 768) {\\n\\t\\t\\t\\t// If we have a default action, do not render the first one\\n\\t\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\t\\treturn this.enabledActions.slice(1)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this.enabledActions\\n\\t\\t\\t}\\n\\n\\t\\t\\tconst actions = [\\n\\t\\t\\t\\t...this.enabledInlineActions,\\n\\t\\t\\t\\t...this.enabledActions.filter(action => !action.inline),\\n\\t\\t\\t]\\n\\n\\t\\t\\t// If we have a default action, do not render the first one\\n\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\treturn actions.slice(1)\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn actions\\n\\t\\t},\\n\\t\\tenabledDefaultActions() {\\n\\t\\t\\treturn [\\n\\t\\t\\t\\t...this.enabledActions.filter(action => action.default),\\n\\t\\t\\t]\\n\\t\\t},\\n\\t\\topenedMenu: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.actionsMenuStore.opened === this.uniqueId\\n\\t\\t\\t},\\n\\t\\t\\tset(opened) {\\n\\t\\t\\t\\tthis.actionsMenuStore.opened = opened ? this.uniqueId : null\\n\\t\\t\\t},\\n\\t\\t},\\n\\n\\t\\tuniqueId() {\\n\\t\\t\\treturn hashCode(this.source.source)\\n\\t\\t},\\n\\n\\t\\tisFavorite() {\\n\\t\\t\\treturn this.source.attributes.favorite === 1\\n\\t\\t},\\n\\t},\\n\\n\\twatch: {\\n\\t\\tactive(active, before) {\\n\\t\\t\\tif (active === false && before === true) {\\n\\t\\t\\t\\tthis.resetState()\\n\\n\\t\\t\\t\\t// When the row is not active anymore\\n\\t\\t\\t\\t// remove the display from the row to prevent\\n\\t\\t\\t\\t// keyboard interaction with it.\\n\\t\\t\\t\\tthis.$el.parentNode.style.display = 'none'\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Restore default tabindex\\n\\t\\t\\tthis.$el.parentNode.style.display = ''\\n\\t\\t},\\n\\n\\t\\t/**\\n\\t\\t * When the source changes, reset the preview\\n\\t\\t * and fetch the new one.\\n\\t\\t */\\n\\t\\tpreviewUrl() {\\n\\t\\t\\tthis.clearImg()\\n\\t\\t\\tthis.debounceIfNotCached()\\n\\t\\t},\\n\\t},\\n\\n\\t/**\\n\\t * The row is mounted once and reused as we scroll.\\n\\t */\\n\\tmounted() {\\n\\t\\t// ⚠ Init the debounce function on mount and\\n\\t\\t// not when the module is imported to\\n\\t\\t// avoid sharing between recycled components\\n\\t\\tthis.debounceGetPreview = debounce(function() {\\n\\t\\t\\tthis.fetchAndApplyPreview()\\n\\t\\t}, 150, false)\\n\\n\\t\\t// Fetch the preview on init\\n\\t\\tthis.debounceIfNotCached()\\n\\n\\t\\t// Right click watcher on tr\\n\\t\\tthis.$el.parentNode?.addEventListener?.('contextmenu', this.onRightClick)\\n\\t},\\n\\n\\tbeforeDestroy() {\\n\\t\\tthis.resetState()\\n\\t},\\n\\n\\tmethods: {\\n\\t\\tasync debounceIfNotCached() {\\n\\t\\t\\tif (!this.previewUrl) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Check if we already have this preview cached\\n\\t\\t\\tconst isCached = await isCachedPreview(this.previewUrl)\\n\\t\\t\\tif (isCached) {\\n\\t\\t\\t\\tthis.backgroundImage = `url(${this.previewUrl})`\\n\\t\\t\\t\\tthis.backgroundFailed = false\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// We don't have this preview cached or it expired, requesting it\\n\\t\\t\\tthis.debounceGetPreview()\\n\\t\\t},\\n\\n\\t\\tfetchAndApplyPreview() {\\n\\t\\t\\t// Ignore if no preview\\n\\t\\t\\tif (!this.previewUrl) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If any image is being processed, reset it\\n\\t\\t\\tif (this.previewPromise) {\\n\\t\\t\\t\\tthis.clearImg()\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Store the promise to be able to cancel it\\n\\t\\t\\tthis.previewPromise = new CancelablePromise((resolve, reject, onCancel) => {\\n\\t\\t\\t\\tconst img = new Image()\\n\\t\\t\\t\\t// If active, load the preview with higher priority\\n\\t\\t\\t\\timg.fetchpriority = this.active ? 'high' : 'auto'\\n\\t\\t\\t\\timg.onload = () => {\\n\\t\\t\\t\\t\\tthis.backgroundImage = `url(${this.previewUrl})`\\n\\t\\t\\t\\t\\tthis.backgroundFailed = false\\n\\t\\t\\t\\t\\tresolve(img)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg.onerror = () => {\\n\\t\\t\\t\\t\\tthis.backgroundFailed = true\\n\\t\\t\\t\\t\\treject(img)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg.src = this.previewUrl\\n\\n\\t\\t\\t\\t// Image loading has been canceled\\n\\t\\t\\t\\tonCancel(() => {\\n\\t\\t\\t\\t\\timg.onerror = null\\n\\t\\t\\t\\t\\timg.onload = null\\n\\t\\t\\t\\t\\timg.src = ''\\n\\t\\t\\t\\t})\\n\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tresetState() {\\n\\t\\t\\t// Reset loading state\\n\\t\\t\\tthis.loading = ''\\n\\n\\t\\t\\t// Reset the preview\\n\\t\\t\\tthis.clearImg()\\n\\n\\t\\t\\t// Close menu\\n\\t\\t\\tthis.openedMenu = false\\n\\t\\t},\\n\\n\\t\\tclearImg() {\\n\\t\\t\\tthis.backgroundImage = ''\\n\\t\\t\\tthis.backgroundFailed = false\\n\\n\\t\\t\\tif (this.previewPromise) {\\n\\t\\t\\t\\tthis.previewPromise.cancel()\\n\\t\\t\\t\\tthis.previewPromise = null\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tasync onActionClick(action) {\\n\\t\\t\\tconst displayName = action.displayName([this.source], this.currentView)\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// Set the loading marker\\n\\t\\t\\t\\tthis.loading = action.id\\n\\t\\t\\t\\tVue.set(this.source, '_loading', true)\\n\\n\\t\\t\\t\\tconst success = await action.exec(this.source, this.currentView, this.dir)\\n\\n\\t\\t\\t\\t// If the action returns null, we stay silent\\n\\t\\t\\t\\tif (success === null) {\\n\\t\\t\\t\\t\\treturn\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (success) {\\n\\t\\t\\t\\t\\tshowSuccess(this.t('files', '\\\"{displayName}\\\" action executed successfully', { displayName }))\\n\\t\\t\\t\\t\\treturn\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tshowError(this.t('files', '\\\"{displayName}\\\" action failed', { displayName }))\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tlogger.error('Error while executing action', { action, e })\\n\\t\\t\\t\\tshowError(this.t('files', '\\\"{displayName}\\\" action failed', { displayName }))\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\t// Reset the loading marker\\n\\t\\t\\t\\tthis.loading = ''\\n\\t\\t\\t\\tVue.set(this.source, '_loading', false)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\texecDefaultAction(event) {\\n\\t\\t\\t// Do not execute the default action on the folder, navigate instead\\n\\t\\t\\tif (this.source.type === 'folder') {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\tevent.preventDefault()\\n\\t\\t\\t\\tevent.stopPropagation()\\n\\t\\t\\t\\t// Execute the first default action if any\\n\\t\\t\\t\\tthis.enabledDefaultActions[0].exec(this.source, this.currentView, this.dir)\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\topenDetailsIfAvailable(event) {\\n\\t\\t\\tconst detailsAction = this.enabledDefaultActions.find(action => action.id === ACTION_DETAILS)\\n\\t\\t\\tif (detailsAction) {\\n\\t\\t\\t\\tevent.preventDefault()\\n\\t\\t\\t\\tevent.stopPropagation()\\n\\t\\t\\t\\tdetailsAction.exec(this.source, this.currentView)\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tonSelectionChange(selection) {\\n\\t\\t\\tconst newSelectedIndex = this.index\\n\\t\\t\\tconst lastSelectedIndex = this.selectionStore.lastSelectedIndex\\n\\n\\t\\t\\t// Get the last selected and select all files in between\\n\\t\\t\\tif (this.keyboardStore?.shiftKey && lastSelectedIndex !== null) {\\n\\t\\t\\t\\tconst isAlreadySelected = this.selectedFiles.includes(this.fileid)\\n\\n\\t\\t\\t\\tconst start = Math.min(newSelectedIndex, lastSelectedIndex)\\n\\t\\t\\t\\tconst end = Math.max(lastSelectedIndex, newSelectedIndex)\\n\\n\\t\\t\\t\\tconst lastSelection = this.selectionStore.lastSelection\\n\\t\\t\\t\\tconst filesToSelect = this.nodes\\n\\t\\t\\t\\t\\t.map(file => file.fileid?.toString?.())\\n\\t\\t\\t\\t\\t.slice(start, end + 1)\\n\\n\\t\\t\\t\\t// If already selected, update the new selection _without_ the current file\\n\\t\\t\\t\\tconst selection = [...lastSelection, ...filesToSelect]\\n\\t\\t\\t\\t\\t.filter(fileId => !isAlreadySelected || fileId !== this.fileid)\\n\\n\\t\\t\\t\\tlogger.debug('Shift key pressed, selecting all files in between', { start, end, filesToSelect, isAlreadySelected })\\n\\t\\t\\t\\t// Keep previous lastSelectedIndex to be use for further shift selections\\n\\t\\t\\t\\tthis.selectionStore.set(selection)\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tlogger.debug('Updating selection', { selection })\\n\\t\\t\\tthis.selectionStore.set(selection)\\n\\t\\t\\tthis.selectionStore.setLastIndex(newSelectedIndex)\\n\\t\\t},\\n\\n\\t\\t// Open the actions menu on right click\\n\\t\\tonRightClick(event) {\\n\\t\\t\\t// If already opened, fallback to default browser\\n\\t\\t\\tif (this.openedMenu) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If the clicked row is in the selection, open global menu\\n\\t\\t\\tconst isMoreThanOneSelected = this.selectedFiles.length > 1\\n\\t\\t\\tthis.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId\\n\\n\\t\\t\\t// Prevent any browser defaults\\n\\t\\t\\tevent.preventDefault()\\n\\t\\t\\tevent.stopPropagation()\\n\\t\\t},\\n\\n\\t\\tt: translate,\\n\\t\\tformatFileSize,\\n\\t},\\n})\\n</script>\\n\\n<style scoped lang='scss'>\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n}\\n</style>\\n\\n<style>\\n/* @keyframes preview-gradient-fade {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n 100% {\\n opacity: 1;\\n }\\n} */\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2181;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2181: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(71030)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getCurrentDirectory","_OCA","_OCA$Files","_OCA$Files$App","_OCA$Files$App$curren","currentDirInfo","OCA","Files","App","currentFileList","dirInfo","path","name","concat","replace","previewWidth","inheritAttrs","props","basename","type","String","required","checked","Boolean","default","fileid","Number","filename","previewUrl","hasPreview","mime","ratio","data","failedPreview","computed","nameWithoutExt","indexOf","split","slice","join","id","realPreviewUrl","mimeIcon","getCurrentUser","generateUrl","document","getElementById","value","pathSections","startsWith","relativePath","forEach","section","encodeURIComponent","encodeFilePath","OC","MimeType","getIconUrl","methods","onCheck","$emit","onFailure","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","domProps","on","_v","class","_s","components","NcEmptyContent","NcModal","TemplatePreview","logger","Object","loading","opened","provider","emptyTemplate","_this$provider","_this$provider2","t","mimetypes","selectedTemplate","templates","find","template","style","width","margin","border","Math","round","fetchedProvider","async","axios","generateOcsUrl","ocs","getTemplates","app","label","Error","length","onSubmit","close","currentDirectory","fileList","_this$provider3","_this$provider4","debug","extension","_this$selectedTemplat","_this$selectedTemplat2","fileInfo","filePath","templatePath","templateType","createFromTemplate","normalize","addAndFetchFileInfo","then","status","model","FileInfoModel","filesClient","fileAction","fileActions","getDefaultFileAction","PERMISSION_ALL","action","$file","findFileEl","dir","fileInfoModel","error","console","showError","$event","preventDefault","stopPropagation","apply","arguments","_b","_l","key","_e","getLoggerBuilder","setApp","detectUser","build","Vue","n","TemplatePickerRoot","createElement","body","appendChild","loadState","templatesPath","TemplatePicker","TemplatePickerView","propsData","$mount","window","addEventListener","initTemplatesPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionLabel","actionHandler","initTemplatesFolder","removeMenuEntry","Plugins","register","index","newTemplatePlugin","open","response","copySystemTemplates","changeDirectory","template_path","FilesPlugin","subscribe","_ref","query","setFilter","FileAction","constructor","validateAction","_action","iconSvgInline","enabled","exec","execBatch","order","inline","renderInline","registerFileAction","_nc_fileactions","search","push","getFileActions","nodes","view","TrashCan","map","node","permissions","every","permission","Permission","source","emit","Promise","all","ACTION_DETAILS","InformationSvg","files","_window","_window$OCA","_window$OCA$Files","Sidebar","some","_node$root","root","_window2","_window2$OCA","_window2$OCA$Files","_window2$OCA$Files$Si","_window2$OCA$Files$Si2","call","useFilesStore","fileStore","defineStore","state","roots","getters","getNode","getNodes","ids","filter","getRoot","service","actions","updateNodes","reduce","acc","deleteNodes","setRoot","onDeletedNode","store","_initialized","usePathsStore","pathsStore","paths","getPath","addPath","payload","useSelectionStore","selected","lastSelection","lastSelectedIndex","set","selection","undefined","setLastIndex","reset","viewConfig","useViewConfigStore","getConfig","onUpdate","setSortingBy","update","toggleSortingDirection","newDirection","sorting_direction","viewConfigStore","Home","NcBreadcrumbs","NcBreadcrumb","setup","filesStore","currentView","$navigation","active","dirs","sections","to","$route","exact","getDirDisplayName","getNodeFromId","getFileIdFromPath","_this$currentView","_node$attributes","fileId","attributes","onClick","_to$query","ariaLabel","_section$to","_section$to$query","_setupProxy","nativeOn","scopedSlots","_u","fn","proxy","useActionsMenuStore","userConfig","show_hidden","crop_image_previews","useUserConfigStore","userConfigStore","render","Function","element","watch","$el","replaceWith","mounted","svg","innerHTML","sanitize","CustomElementRender","CustomSvgIconRender","FileIcon","FolderIcon","Fragment","NcActionButton","NcActions","NcCheckboxRadioSwitch","NcLoadingIcon","StarIcon","isSizeAvailable","Array","filesListWidth","actionsMenuStore","keyboardStore","altKey","ctrlKey","metaKey","shiftKey","onEvent","event","useKeyboardStore","selectionStore","backgroundFailed","backgroundImage","boundariesElement","querySelector","columns","_this$$route","_this$$route$query","_this$source","_this$source$fileid","_this$source$fileid$t","toString","size","parseInt","formatFileSize","sizeOpacity","pow","linkTo","is","title","enabledDefaultActions","role","href","selectedFiles","isSelected","_this$source2","_this$source2$fileid","_this$source2$fileid$","includes","cropPreviews","url","URL","location","origin","searchParams","e","mimeIconUrl","_window$OC","_window$OC$MimeType","_window$OC$MimeType$g","mimeType","enabledActions","sort","a","b","enabledInlineActions","_action$inline","enabledMenuActions","openedMenu","get","uniqueId","charCodeAt","isFavorite","favorite","before","resetState","parentNode","display","clearImg","debounceIfNotCached","_this$$el$parentNode","_this$$el$parentNode$","debounceGetPreview","debounce","fetchAndApplyPreview","onRightClick","beforeDestroy","caches","cache","match","previewPromise","CancelablePromise","resolve","reject","onCancel","img","Image","fetchpriority","onload","onerror","src","cancel","success","showSuccess","execDefaultAction","openDetailsIfAvailable","detailsAction","onSelectionChange","_this$keyboardStore","newSelectedIndex","isAlreadySelected","start","min","end","max","filesToSelect","file","_file$fileid","_file$fileid$toString","isMoreThanOneSelected","translate","ref","_loading","onActionClick","opacity","column","_vm$currentView","summary","currentFolder","_this$currentView2","totalSize","_this$currentFolder","total","classForColumn","_column$summary","created","fileListEl","$resizeObserver","ResizeObserver","entries","target","contentRect","observe","disconnect","mixins","filesListWidthMixin","selectedNodes","areSomeNodesLoading","inlineActions","selectionIds","results","result","failedIds","mapState","sortingMode","_this$getConfig","sorting_mode","defaultSortKey","isAscSorting","_this$getConfig2","toggleSortBy","MenuDown","MenuUp","NcButton","filesSortingMixin","mode","sortAriaLabel","direction","slot","FilesListHeaderButton","FilesListHeaderActions","selectAllBind","isNoneSelected","isSomeSelected","isAllSelected","indeterminate","onToggleAll","RecycleScroller","FileEntry","FilesListHeader","FilesListFooter","summaryFile","count","translatePlural","summaryFolder","slots","querySelectorAll","setAttribute","getFileId","item","caption","_defineProperty","isValidNavigation","isUniqueNavigation","_views","message","legacy","remove","findIndex","splice","views","setActive","_currentView","getContents","icon","isSvg","isValidColumn","emptyView","parent","sticky","expanded","BreadCrumbs","FilesListVirtual","NcAppContent","promise","dirContents","_this$currentFolder2","customColumn","_children","reverse","orderBy","v","isEmptyDir","isRefreshing","toPreviousDir","newView","oldView","fetchContent","newDir","oldDir","_this$$refs","_this$$refs$filesList","$refs","filesListVirtual","scrollTop","_this$currentView3","_this$promise","folder","contents","_vm$currentView2","directives","rawName","expression","ChartPie","NcAppNavigationItem","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","_this$storageStats","_this$storageStats2","_this$storageStats3","usedQuotaByte","used","quotaByte","quota","storageStatsTooltip","relative","beforeMount","setInterval","throttleUpdateStorageStats","debounceUpdateStorageStats","updateStorageStats","throttle","_response$data","el","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcInputField","Setting","_window$OCA$Files$Set","_getCurrentUser","settings","Settings","webdavUrl","generateRemoteUrl","uid","webdavDocs","appPasswordUrl","webdavUrlCopied","setting","onClose","setConfig","select","navigator","clipboard","writeText","setTimeout","copyCloudId","Cog","NavigationQuota","NcAppNavigation","NcIconSvgWrapper","SettingsModal","Navigation","settingsOpened","currentViewId","_this$$route$params","params","parentViews","childViews","list","showView","onLegacyNavigationChanged","_window$OCA$Files$Sid","_window$OCA$Files$Sid2","newAppContent","classList","add","Util","History","parseUrlQuery","itemId","jQuery","trigger","Event","heading","headingEl","textContent","setPageHeading","$router","onToggleExpand","isExpanded","_this$viewConfigStore","generateToNavigation","openSettings","onSettingsClose","child","registerLegacyView","classes","OCP","Router","base","linkActiveClass","routes","alias","stringifyQuery","queryString","_window$OCP$Files","router","_router","goTo","goToRoute","assign","PiniaVuePlugin","pinia","createPinia","NavigationService","_settings","_name","_el","_open","_close","NavigationView","FilesListView","legacyViews","values","sublist","subview","processLegacyFilesViews","noRewrite","registration","serviceWorker","scope","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","r","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","children","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"files-main.js?v=40748790bce0f06897f7","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/utils/davUtils.js","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?9ec4","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?81db","webpack://nextcloud/./apps/files/src/components/TemplatePreview.vue?c414","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/services/Templates.js","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?9ada","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?afd8","webpack://nextcloud/./apps/files/src/views/TemplatePicker.vue?1f7b","webpack:///nextcloud/apps/files/src/templates.js","webpack:///nextcloud/apps/files/src/legacy/filelistSearch.js","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files/src/actions/deleteAction.ts","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e906","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?e59f","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?4ee7","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?2c34","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?6bea","webpack://nextcloud/./apps/files/src/components/CustomSvgIconRender.vue?5641","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack:///nextcloud/apps/files/src/services/PreviewService.ts","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?0601","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?bfb5","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?14b9","webpack://nextcloud/./apps/files/src/components/FilesListFooter.vue?80db","webpack:///nextcloud/apps/files/src/mixins/filesListWidth.ts","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?993d","webpack://nextcloud/./apps/files/src/components/FilesListHeaderActions.vue?9823","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?d900","webpack://nextcloud/./apps/files/src/components/FilesListHeaderButton.vue?5686","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?c7b4","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts&","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?034b","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/apps/files/src/services/Navigation.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts&","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack://nextcloud/./apps/files/src/views/FilesList.vue?b2cc","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack://nextcloud/./apps/files/src/views/Navigation.vue?8122","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?ff39","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/views/Settings.vue?84f7","webpack:///nextcloud/apps/files/src/components/Setting.vue","webpack:///nextcloud/apps/files/src/components/Setting.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/components/Setting.vue?98ea","webpack://nextcloud/./apps/files/src/components/Setting.vue?8d57","webpack:///nextcloud/apps/files/src/views/Settings.vue","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Settings.vue?7e31","webpack://nextcloud/./apps/files/src/views/Settings.vue?b81b","webpack:///nextcloud/apps/files/src/views/Navigation.vue","webpack:///nextcloud/core/src/OCP/accessibility.js","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/Navigation.vue?e9dc","webpack://nextcloud/./apps/files/src/views/Navigation.vue?74b9","webpack:///nextcloud/apps/files/src/legacy/navigationMapper.js","webpack:///nextcloud/apps/files/src/router/router.js","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.js","webpack:///nextcloud/apps/files/src/services/ServiceWorker.js","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/views/TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport const getRootPath = function() {\n\tif (getCurrentUser()) {\n\t\treturn generateRemoteUrl(`dav/files/${getCurrentUser().uid}`)\n\t} else {\n\t\treturn generateRemoteUrl('webdav').replace('/remote.php', '/public.php')\n\t}\n}\n\nexport const isPublic = function() {\n\treturn !getCurrentUser()\n}\n\nexport const getToken = function() {\n\treturn document.getElementById('sharingToken') && document.getElementById('sharingToken').value\n}\n\n/**\n * Return the current directory, fallback to root\n *\n * @return {string}\n */\nexport const getCurrentDirectory = function() {\n\tconst currentDirInfo = OCA?.Files?.App?.currentFileList?.dirInfo\n\t\t|| { path: '/', name: '' }\n\n\t// Make sure we don't have double slashes\n\treturn `${currentDirInfo.path}/${currentDirInfo.name}`.replace(/\\/\\//gi, '/')\n}\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"template-picker__item\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\ttype=\"radio\"\n\t\t\tclass=\"radio\"\n\t\t\tname=\"template-picker\"\n\t\t\t@change=\"onCheck\">\n\n\t\t<label :for=\"id\" class=\"template-picker__label\">\n\t\t\t<div class=\"template-picker__preview\"\n\t\t\t\t:class=\"failedPreview ? 'template-picker__preview--failed' : ''\">\n\t\t\t\t<img class=\"template-picker__image\"\n\t\t\t\t\t:src=\"realPreviewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdraggable=\"false\"\n\t\t\t\t\t@error=\"onFailure\">\n\t\t\t</div>\n\n\t\t\t<span class=\"template-picker__title\">\n\t\t\t\t{{ nameWithoutExt }}\n\t\t\t</span>\n\t\t</label>\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { encodeFilePath } from '../utils/fileUtils.js'\nimport { getToken, isPublic } from '../utils/davUtils.js'\n\n// preview width generation\nconst previewWidth = 256\n\nexport default {\n\tname: 'TemplatePreview',\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tfileid: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tpreviewUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tratio: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfailedPreview: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.basename.indexOf('.') > -1 ? this.basename.split('.').slice(0, -1).join('.') : this.basename\n\t\t},\n\n\t\tid() {\n\t\t\treturn `template-picker-${this.fileid}`\n\t\t},\n\n\t\trealPreviewUrl() {\n\t\t\t// If original preview failed, fallback to mime icon\n\t\t\tif (this.failedPreview && this.mimeIcon) {\n\t\t\t\treturn this.mimeIcon\n\t\t\t}\n\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn this.previewUrl\n\t\t\t}\n\t\t\t// TODO: find a nicer standard way of doing this?\n\t\t\tif (isPublic()) {\n\t\t\t\treturn generateUrl(`/apps/files_sharing/publicpreview/${getToken()}?fileId=${this.fileid}&file=${encodeFilePath(this.filename)}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t\t}\n\t\t\treturn generateUrl(`/core/preview?fileId=${this.fileid}&x=${previewWidth}&y=${previewWidth}&a=1`)\n\t\t},\n\n\t\tmimeIcon() {\n\t\t\treturn OC.MimeType.getIconUrl(this.mime)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonCheck() {\n\t\t\tthis.$emit('check', this.fileid)\n\t\t},\n\t\tonFailure() {\n\t\t\tthis.failedPreview = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.template-picker {\n\t&__item {\n\t\tdisplay: flex;\n\t}\n\n\t&__label {\n\t\tdisplay: flex;\n\t\t// Align in the middle of the grid\n\t\talign-items: center;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&::before {\n\t\t\tdisplay: none !important;\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: block;\n\t\toverflow: hidden;\n\t\t// Stretch so all entries are the same width\n\t\tflex: 1 1;\n\t\twidth: var(--width);\n\t\tmin-height: var(--height);\n\t\tmax-height: var(--height);\n\t\tpadding: 0;\n\t\tborder: var(--border) solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\tinput:checked + label > & {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\n\t\t&--failed {\n\t\t\t// Make sure to properly center fallback icon\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n\n\t&__image {\n\t\tmax-width: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tobject-fit: cover;\n\t}\n\n\t// Failed preview, fallback to mime icon\n\t&__preview--failed &__image {\n\t\twidth: calc(var(--margin) * 8);\n\t\t// Center mime icon\n\t\tmargin: auto;\n\t\tbackground-color: transparent !important;\n\n\t\tobject-fit: initial;\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\t// also count preview border\n\t\tmax-width: calc(var(--width) + 2*2px);\n\t\tpadding: var(--margin);\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePreview.vue?vue&type=template&id=5b09ec60&scoped=true&\"\nimport script from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePreview.vue?vue&type=style&index=0&id=5b09ec60&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b09ec60\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"template-picker__item\"},[_c('input',{staticClass:\"radio\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"template-picker\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onCheck}}),_vm._v(\" \"),_c('label',{staticClass:\"template-picker__label\",attrs:{\"for\":_vm.id}},[_c('div',{staticClass:\"template-picker__preview\",class:_vm.failedPreview ? 'template-picker__preview--failed' : ''},[_c('img',{staticClass:\"template-picker__image\",attrs:{\"src\":_vm.realPreviewUrl,\"alt\":\"\",\"draggable\":\"false\"},on:{\"error\":_vm.onFailure}})]),_vm._v(\" \"),_c('span',{staticClass:\"template-picker__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.nameWithoutExt)+\"\\n\\t\\t\")])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcModal v-if=\"opened\"\n\t\t:clear-view-delay=\"-1\"\n\t\tclass=\"templates-picker\"\n\t\tsize=\"large\"\n\t\t@close=\"close\">\n\t\t<form class=\"templates-picker__form\"\n\t\t\t:style=\"style\"\n\t\t\t@submit.prevent.stop=\"onSubmit\">\n\t\t\t<h2>{{ t('files', 'Pick a template for {name}', { name: nameWithoutExt }) }}</h2>\n\n\t\t\t<!-- Templates list -->\n\t\t\t<ul class=\"templates-picker__list\">\n\t\t\t\t<TemplatePreview v-bind=\"emptyTemplate\"\n\t\t\t\t\t:checked=\"checked === emptyTemplate.fileid\"\n\t\t\t\t\t@check=\"onCheck\" />\n\n\t\t\t\t<TemplatePreview v-for=\"template in provider.templates\"\n\t\t\t\t\t:key=\"template.fileid\"\n\t\t\t\t\tv-bind=\"template\"\n\t\t\t\t\t:checked=\"checked === template.fileid\"\n\t\t\t\t\t:ratio=\"provider.ratio\"\n\t\t\t\t\t@check=\"onCheck\" />\n\t\t\t</ul>\n\n\t\t\t<!-- Cancel and submit -->\n\t\t\t<div class=\"templates-picker__buttons\">\n\t\t\t\t<input type=\"submit\"\n\t\t\t\t\tclass=\"primary\"\n\t\t\t\t\t:value=\"t('files', 'Create')\"\n\t\t\t\t\t:aria-label=\"t('files', 'Create a new file with the selected template')\">\n\t\t\t</div>\n\t\t</form>\n\n\t\t<NcEmptyContent v-if=\"loading\" class=\"templates-picker__loading\" icon=\"icon-loading\">\n\t\t\t{{ t('files', 'Creating file') }}\n\t\t</NcEmptyContent>\n\t</NcModal>\n</template>\n\n<script>\nimport { normalize } from 'path'\nimport { showError } from '@nextcloud/dialogs'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent.js'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\n\nimport { getCurrentDirectory } from '../utils/davUtils.js'\nimport { createFromTemplate, getTemplates } from '../services/Templates.js'\nimport TemplatePreview from '../components/TemplatePreview.vue'\n\nconst border = 2\nconst margin = 8\n\nexport default {\n\tname: 'TemplatePicker',\n\n\tcomponents: {\n\t\tNcEmptyContent,\n\t\tNcModal,\n\t\tTemplatePreview,\n\t},\n\n\tprops: {\n\t\tlogger: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Check empty template by default\n\t\t\tchecked: -1,\n\t\t\tloading: false,\n\t\t\tname: null,\n\t\t\topened: false,\n\t\t\tprovider: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Strip away extension from name\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tnameWithoutExt() {\n\t\t\treturn this.name.indexOf('.') > -1\n\t\t\t\t? this.name.split('.').slice(0, -1).join('.')\n\t\t\t\t: this.name\n\t\t},\n\n\t\temptyTemplate() {\n\t\t\treturn {\n\t\t\t\tbasename: t('files', 'Blank'),\n\t\t\t\tfileid: -1,\n\t\t\t\tfilename: this.t('files', 'Blank'),\n\t\t\t\thasPreview: false,\n\t\t\t\tmime: this.provider?.mimetypes[0] || this.provider?.mimetypes,\n\t\t\t}\n\t\t},\n\n\t\tselectedTemplate() {\n\t\t\treturn this.provider.templates.find(template => template.fileid === this.checked)\n\t\t},\n\n\t\t/**\n\t\t * Style css vars bin,d\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\tstyle() {\n\t\t\t// Fallback to 16:9 landscape ratio\n\t\t\tconst ratio = this.provider.ratio ? this.provider.ratio : 1.77\n\t\t\t// Landscape templates should be wider than tall ones\n\t\t\t// We fit 3 templates per row at max for landscape and 4 for portrait\n\t\t\tconst width = ratio > 1 ? margin * 30 : margin * 20\n\t\t\treturn {\n\t\t\t\t'--margin': margin + 'px',\n\t\t\t\t'--width': width + 'px',\n\t\t\t\t'--border': border + 'px',\n\t\t\t\t'--fullwidth': width + 2 * margin + 2 * border + 'px',\n\t\t\t\t'--height': this.provider.ratio ? Math.round(width / this.provider.ratio) + 'px' : null,\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Open the picker\n\t\t *\n\t\t * @param {string} name the file name to create\n\t\t * @param {object} provider the template provider picked\n\t\t */\n\t\tasync open(name, provider) {\n\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.name = name\n\t\t\tthis.provider = provider\n\n\t\t\tconst templates = await getTemplates()\n\t\t\tconst fetchedProvider = templates.find((fetchedProvider) => fetchedProvider.app === provider.app && fetchedProvider.label === provider.label)\n\t\t\tif (fetchedProvider === null) {\n\t\t\t\tthrow new Error('Failed to match provider in results')\n\t\t\t}\n\t\t\tthis.provider = fetchedProvider\n\n\t\t\t// If there is no templates available, just create an empty file\n\t\t\tif (fetchedProvider.templates.length === 0) {\n\t\t\t\tthis.onSubmit()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Else, open the picker\n\t\t\tthis.opened = true\n\t\t},\n\n\t\t/**\n\t\t * Close the picker and reset variables\n\t\t */\n\t\tclose() {\n\t\t\tthis.checked = this.emptyTemplate.fileid\n\t\t\tthis.loading = false\n\t\t\tthis.name = null\n\t\t\tthis.opened = false\n\t\t\tthis.provider = null\n\t\t},\n\n\t\t/**\n\t\t * Manages the radio template picker change\n\t\t *\n\t\t * @param {number} fileid the selected template file id\n\t\t */\n\t\tonCheck(fileid) {\n\t\t\tthis.checked = fileid\n\t\t},\n\n\t\tasync onSubmit() {\n\t\t\tthis.loading = true\n\t\t\tconst currentDirectory = getCurrentDirectory()\n\t\t\tconst fileList = OCA?.Files?.App?.currentFileList\n\n\t\t\t// If the file doesn't have an extension, add the default one\n\t\t\tif (this.nameWithoutExt === this.name) {\n\t\t\t\tthis.logger.debug('Fixed invalid filename', { name: this.name, extension: this.provider?.extension })\n\t\t\t\tthis.name = this.name + this.provider?.extension\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst fileInfo = await createFromTemplate(\n\t\t\t\t\tnormalize(`${currentDirectory}/${this.name}`),\n\t\t\t\t\tthis.selectedTemplate?.filename,\n\t\t\t\t\tthis.selectedTemplate?.templateType,\n\t\t\t\t)\n\t\t\t\tthis.logger.debug('Created new file', fileInfo)\n\n\t\t\t\t// Fetch FileInfo and model\n\t\t\t\tconst data = await fileList?.addAndFetchFileInfo(this.name).then((status, data) => data)\n\t\t\t\tconst model = new OCA.Files.FileInfoModel(data, {\n\t\t\t\t\tfilesClient: fileList?.filesClient,\n\t\t\t\t})\n\n\t\t\t\t// Run default action\n\t\t\t\tconst fileAction = OCA.Files.fileActions.getDefaultFileAction(fileInfo.mime, 'file', OC.PERMISSION_ALL)\n\t\t\t\tif (fileAction) {\n\t\t\t\t\tfileAction.action(fileInfo.basename, {\n\t\t\t\t\t\t$file: fileList?.findFileEl(this.name),\n\t\t\t\t\t\tdir: currentDirectory,\n\t\t\t\t\t\tfileList,\n\t\t\t\t\t\tfileActions: fileList?.fileActions,\n\t\t\t\t\t\tfileInfoModel: model,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.close()\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error('Error while creating the new file from template')\n\t\t\t\tconsole.error(error)\n\t\t\t\tshowError(this.t('files', 'Unable to create new file from template'))\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.templates-picker {\n\t&__form {\n\t\tpadding: calc(var(--margin) * 2);\n\t\t// Will be handled by the buttons\n\t\tpadding-bottom: 0;\n\n\t\th2 {\n\t\t\ttext-align: center;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: var(--margin) 0 calc(var(--margin) * 2);\n\t\t}\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-gap: calc(var(--margin) * 2);\n\t\tgrid-auto-columns: 1fr;\n\t\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\n\t\tmax-width: calc(var(--fullwidth) * 6);\n\t\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\n\t\t// Make sure all rows are the same height\n\t\tgrid-auto-rows: 1fr;\n\t\t// Center the columns set\n\t\tjustify-content: center;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\t\tpadding: calc(var(--margin) * 2) var(--margin);\n\t\tposition: sticky;\n\t\tbottom: 0;\n\t\tbackground-image: linear-gradient(0, var(--gradient-main-background));\n\n\t\tbutton, input[type='submit'] {\n\t\t\theight: 44px;\n\t\t}\n\t}\n\n\t// Make sure we're relative for the loading emptycontent on top\n\t::v-deep .modal-container {\n\t\tposition: relative;\n\t}\n\n\t&__loading {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tmargin: 0;\n\t\tbackground-color: var(--color-main-background-translucent);\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\n\nexport const getTemplates = async function() {\n\tconst response = await axios.get(generateOcsUrl('apps/files/api/v1/templates'))\n\treturn response.data.ocs.data\n}\n\n/**\n * Create a new file from a specified template\n *\n * @param {string} filePath The new file destination path\n * @param {string} templatePath The template source path\n * @param {string} templateType The template type e.g 'user'\n */\nexport const createFromTemplate = async function(filePath, templatePath, templateType) {\n\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/create'), {\n\t\tfilePath,\n\t\ttemplatePath,\n\t\ttemplateType,\n\t})\n\treturn response.data.ocs.data\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TemplatePicker.vue?vue&type=template&id=d46f1dc6&scoped=true&\"\nimport script from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nexport * from \"./TemplatePicker.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TemplatePicker.vue?vue&type=style&index=0&id=d46f1dc6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d46f1dc6\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.opened)?_c('NcModal',{staticClass:\"templates-picker\",attrs:{\"clear-view-delay\":-1,\"size\":\"large\"},on:{\"close\":_vm.close}},[_c('form',{staticClass:\"templates-picker__form\",style:(_vm.style),on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onSubmit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('files', 'Pick a template for {name}', { name: _vm.nameWithoutExt })))]),_vm._v(\" \"),_c('ul',{staticClass:\"templates-picker__list\"},[_c('TemplatePreview',_vm._b({attrs:{\"checked\":_vm.checked === _vm.emptyTemplate.fileid},on:{\"check\":_vm.onCheck}},'TemplatePreview',_vm.emptyTemplate,false)),_vm._v(\" \"),_vm._l((_vm.provider.templates),function(template){return _c('TemplatePreview',_vm._b({key:template.fileid,attrs:{\"checked\":_vm.checked === template.fileid,\"ratio\":_vm.provider.ratio},on:{\"check\":_vm.onCheck}},'TemplatePreview',template,false))})],2),_vm._v(\" \"),_c('div',{staticClass:\"templates-picker__buttons\"},[_c('input',{staticClass:\"primary\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('files', 'Create a new file with the selected template')},domProps:{\"value\":_vm.t('files', 'Create')}})])]),_vm._v(\" \"),(_vm.loading)?_c('NcEmptyContent',{staticClass:\"templates-picker__loading\",attrs:{\"icon\":\"icon-loading\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files', 'Creating file'))+\"\\n\\t\")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentDirectory } from './utils/davUtils.js'\nimport axios from '@nextcloud/axios'\nimport Vue from 'vue'\n\nimport TemplatePickerView from './views/TemplatePicker.vue'\nimport { showError } from '@nextcloud/dialogs'\n\n// Set up logger\nconst logger = getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\n// Create document root\nconst TemplatePickerRoot = document.createElement('div')\nTemplatePickerRoot.id = 'template-picker'\ndocument.body.appendChild(TemplatePickerRoot)\n\n// Retrieve and init templates\nlet templates = loadState('files', 'templates', [])\nlet templatesPath = loadState('files', 'templates_path', false)\nlogger.debug('Templates providers', templates)\nlogger.debug('Templates folder', { templatesPath })\n\n// Init vue app\nconst View = Vue.extend(TemplatePickerView)\nconst TemplatePicker = new View({\n\tname: 'TemplatePicker',\n\tpropsData: {\n\t\tlogger,\n\t},\n})\nTemplatePicker.$mount('#template-picker')\n\n// Init template engine after load to make sure it's the last injected entry\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (!templatesPath) {\n\t\tlogger.debug('Templates folder not initialized')\n\t\tconst initTemplatesPlugin = {\n\t\t\tattach(menu) {\n\t\t\t\t// register the new menu entry\n\t\t\t\tmenu.addMenuEntry({\n\t\t\t\t\tid: 'template-init',\n\t\t\t\t\tdisplayName: t('files', 'Set up templates folder'),\n\t\t\t\t\ttemplateName: t('files', 'Templates'),\n\t\t\t\t\ticonClass: 'icon-template-add',\n\t\t\t\t\tfileType: 'file',\n\t\t\t\t\tactionLabel: t('files', 'Create new templates folder'),\n\t\t\t\t\tactionHandler(name) {\n\t\t\t\t\t\tinitTemplatesFolder(name)\n\t\t\t\t\t\tmenu.removeMenuEntry('template-init')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\t\t}\n\t\tOC.Plugins.register('OCA.Files.NewFileMenu', initTemplatesPlugin)\n\t}\n})\n\n// Init template files menu\ntemplates.forEach((provider, index) => {\n\tconst newTemplatePlugin = {\n\t\tattach(menu) {\n\t\t\tconst fileList = menu.fileList\n\n\t\t\t// only attach to main file list, public view is not supported yet\n\t\t\tif (fileList.id !== 'files' && fileList.id !== 'files.public') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// register the new menu entry\n\t\t\tmenu.addMenuEntry({\n\t\t\t\tid: `template-new-${provider.app}-${index}`,\n\t\t\t\tdisplayName: provider.label,\n\t\t\t\ttemplateName: provider.label + provider.extension,\n\t\t\t\ticonClass: provider.iconClass || 'icon-file',\n\t\t\t\tfileType: 'file',\n\t\t\t\tactionLabel: provider.actionLabel,\n\t\t\t\tactionHandler(name) {\n\t\t\t\t\tTemplatePicker.open(name, provider)\n\t\t\t\t},\n\t\t\t})\n\t\t},\n\t}\n\tOC.Plugins.register('OCA.Files.NewFileMenu', newTemplatePlugin)\n})\n\n/**\n * Init the template directory\n *\n * @param {string} name the templates folder name\n */\nconst initTemplatesFolder = async function(name) {\n\tconst templatePath = (getCurrentDirectory() + `/${name}`).replace('//', '/')\n\ttry {\n\t\tlogger.debug('Initializing the templates directory', { templatePath })\n\t\tconst response = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n\t\t\ttemplatePath,\n\t\t\tcopySystemTemplates: true,\n\t\t})\n\n\t\t// Go to template directory\n\t\tOCA.Files.App.currentFileList.changeDirectory(templatePath, true, true)\n\n\t\ttemplates = response.data.ocs.data.templates\n\t\ttemplatesPath = response.data.ocs.data.template_path\n\t} catch (error) {\n\t\tlogger.error('Unable to initialize the templates directory')\n\t\tshowError(t('files', 'Unable to initialize the templates directory'))\n\t}\n}\n","/*\n * @copyright Copyright (c) 2021 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\n(function() {\n\n\tconst FilesPlugin = {\n\t\tattach(fileList) {\n\t\t\tsubscribe('nextcloud:unified-search.search', ({ query }) => {\n\t\t\t\tfileList.setFilter(query)\n\t\t\t})\n\t\t\tsubscribe('nextcloud:unified-search.reset', () => {\n\t\t\t\tthis.query = null\n\t\t\t\tfileList.setFilter('')\n\t\t\t})\n\n\t\t},\n\t}\n\n\twindow.OC.Plugins.register('OCA.Files.FileList', FilesPlugin)\n\n})()\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport logger from '../logger';\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { Permission, Node } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport TrashCan from '@mdi/svg/svg/trash-can.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction.ts';\nimport logger from '../logger.js';\nregisterFileAction(new FileAction({\n id: 'delete',\n displayName(nodes, view) {\n return view.id === 'trashbin'\n ? t('files_trashbin', 'Delete permanently')\n : t('files', 'Delete');\n },\n iconSvgInline: () => TrashCan,\n enabled(nodes) {\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.DELETE) !== 0);\n },\n async exec(node) {\n try {\n await axios.delete(node.source);\n // Let's delete even if it's moved to the trashbin\n // since it has been removed from the current view\n // and changing the view will trigger a reload anyway.\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n logger.error('Error while deleting a file', { error, source: node.source, node });\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 100,\n}));\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport { registerFileAction, FileAction } from '../services/FileAction.ts';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nregisterFileAction(new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (files) => !!window?.OCA?.Files?.Sidebar\n && files.some(node => node.root?.startsWith('/files/')),\n async exec(node) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n window?.OCA?.Files?.Sidebar?.open?.(node.path);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n default: true,\n order: -50,\n}));\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger';\nimport Vue from 'vue';\nexport const useFilesStore = function () {\n const store = defineStore('files', {\n state: () => ({\n files: {},\n roots: {},\n }),\n getters: {\n /**\n * Get a file or folder by id\n */\n getNode: (state) => (id) => state.files[id],\n /**\n * Get a list of files or folders by their IDs\n * Does not return undefined values\n */\n getNodes: (state) => (ids) => ids\n .map(id => state.files[id])\n .filter(Boolean),\n /**\n * Get a file or folder by id\n */\n getRoot: (state) => (service) => state.roots[service],\n },\n actions: {\n updateNodes(nodes) {\n // Update the store all at once\n const files = nodes.reduce((acc, node) => {\n if (!node.fileid) {\n logger.warn('Trying to update/set a node without fileid', node);\n return acc;\n }\n acc[node.fileid] = node;\n return acc;\n }, {});\n Vue.set(this, 'files', { ...this.files, ...files });\n },\n deleteNodes(nodes) {\n nodes.forEach(node => {\n if (node.fileid) {\n Vue.delete(this.files, node.fileid);\n }\n });\n },\n setRoot({ service, root }) {\n Vue.set(this.roots, service, root);\n },\n onDeletedNode(node) {\n this.deleteNodes([node]);\n },\n }\n });\n const fileStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!fileStore._initialized) {\n // subscribe('files:node:created', fileStore.onCreatedNode)\n subscribe('files:node:deleted', fileStore.onDeletedNode);\n // subscribe('files:node:moved', fileStore.onMovedNode)\n // subscribe('files:node:updated', fileStore.onUpdatedNode)\n fileStore._initialized = true;\n }\n return fileStore;\n};\n","import { defineStore } from 'pinia';\nimport { subscribe } from '@nextcloud/event-bus';\nimport Vue from 'vue';\nexport const usePathsStore = function () {\n const store = defineStore('paths', {\n state: () => ({\n paths: {}\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.fileid);\n },\n }\n });\n const pathsStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n // TODO: watch folders to update paths?\n // subscribe('files:node:created', pathsStore.onCreatedNode)\n // subscribe('files:node:deleted', pathsStore.onDeletedNode)\n // subscribe('files:node:moved', pathsStore.onMovedNode)\n pathsStore._initialized = true;\n }\n return pathsStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport { FileId, SelectionStore } from '../types';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n */\n set(selection = []) {\n Vue.set(this, 'selected', selection);\n },\n /**\n * Set the last selected index\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n }\n }\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { loadState } from '@nextcloud/initial-state';\nimport axios from '@nextcloud/axios';\nimport Vue from 'vue';\nconst viewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = function () {\n const store = defineStore('viewconfig', {\n state: () => ({\n viewConfig,\n }),\n getters: {\n getConfig: (state) => (view) => state.viewConfig[view] || {},\n },\n actions: {\n /**\n * Update the view config local store\n */\n onUpdate(view, key, value) {\n if (!this.viewConfig[view]) {\n Vue.set(this.viewConfig, view, {});\n }\n Vue.set(this.viewConfig[view], key, value);\n },\n /**\n * Update the view config local store AND on server side\n */\n async update(view, key, value) {\n axios.put(generateUrl(`/apps/files/api/v1/views/${view}/${key}`), {\n value,\n });\n emit('files:viewconfig:updated', { view, key, value });\n },\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n */\n setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n this.update(view, 'sorting_mode', key);\n this.update(view, 'sorting_direction', 'asc');\n },\n /**\n * Toggle the sorting direction\n */\n toggleSortingDirection(view = 'files') {\n const config = this.getConfig(view) || { 'sorting_direction': 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n this.update(view, 'sorting_direction', newDirection);\n }\n }\n });\n const viewConfigStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!viewConfigStore._initialized) {\n subscribe('files:viewconfig:updated', function ({ view, key, value }) {\n viewConfigStore.onUpdate(view, key, value);\n });\n viewConfigStore._initialized = true;\n }\n return viewConfigStore;\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{attrs:{\"data-cy-files-content-breadcrumbs\":\"\"}},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"aria-label\":_vm.ariaLabel(section),\"title\":_vm.ariaLabel(section)},nativeOn:{\"click\":function($event){return _vm.onClick(section.to)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('Home',{attrs:{\"size\":20}})]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<NcBreadcrumbs data-cy-files-content-breadcrumbs>\n\t\t<!-- Current path sections -->\n\t\t<NcBreadcrumb v-for=\"(section, index) in sections\"\n\t\t\t:key=\"section.dir\"\n\t\t\t:aria-label=\"ariaLabel(section)\"\n\t\t\t:title=\"ariaLabel(section)\"\n\t\t\tv-bind=\"section\"\n\t\t\t@click.native=\"onClick(section.to)\">\n\t\t\t<template v-if=\"index === 0\" #icon>\n\t\t\t\t<Home :size=\"20\" />\n\t\t\t</template>\n\t\t</NcBreadcrumb>\n\t</NcBreadcrumbs>\n</template>\n\n<script>\nimport { basename } from 'path'\nimport Home from 'vue-material-design-icons/Home.vue'\nimport NcBreadcrumb from '@nextcloud/vue/dist/Components/NcBreadcrumb.js'\nimport NcBreadcrumbs from '@nextcloud/vue/dist/Components/NcBreadcrumbs.js'\nimport Vue from 'vue'\n\nimport { useFilesStore } from '../store/files.ts'\nimport { usePathsStore } from '../store/paths.ts'\n\nexport default Vue.extend({\n\tname: 'BreadCrumbs',\n\n\tcomponents: {\n\t\tHome,\n\t\tNcBreadcrumbs,\n\t\tNcBreadcrumb,\n\t},\n\n\tprops: {\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\tdefault: '/',\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst filesStore = useFilesStore()\n\t\tconst pathsStore = usePathsStore()\n\t\treturn {\n\t\t\tfilesStore,\n\t\t\tpathsStore,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcurrentView() {\n\t\t\treturn this.$navigation.active\n\t\t},\n\n\t\tdirs() {\n\t\t\tconst cumulativePath = (acc) => (value) => (acc += `${value}/`)\n\t\t\t// Generate a cumulative path for each path segment: ['/', '/foo', '/foo/bar', ...] etc\n\t\t\tconst paths = this.path.split('/').filter(Boolean).map(cumulativePath('/'))\n\t\t\t// Strip away trailing slash\n\t\t\treturn ['/', ...paths.map(path => path.replace(/^(.+)\\/$/, '$1'))]\n\t\t},\n\n\t\tsections() {\n\t\t\treturn this.dirs.map(dir => {\n\t\t\t\tconst to = { ...this.$route, query: { dir } }\n\t\t\t\treturn {\n\t\t\t\t\tdir,\n\t\t\t\t\texact: true,\n\t\t\t\t\tname: this.getDirDisplayName(dir),\n\t\t\t\t\tto,\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetNodeFromId(id) {\n\t\t\treturn this.filesStore.getNode(id)\n\t\t},\n\t\tgetFileIdFromPath(path) {\n\t\t\treturn this.pathsStore.getPath(this.currentView?.id, path)\n\t\t},\n\t\tgetDirDisplayName(path) {\n\t\t\tif (path === '/') {\n\t\t\t\treturn t('files', 'Home')\n\t\t\t}\n\n\t\t\tconst fileId = this.getFileIdFromPath(path)\n\t\t\tconst node = this.getNodeFromId(fileId)\n\t\t\treturn node?.attributes?.displayName || basename(path)\n\t\t},\n\n\t\tonClick(to) {\n\t\t\tif (to?.query?.dir === this.$route.query.dir) {\n\t\t\t\tthis.$emit('reload')\n\t\t\t}\n\t\t},\n\n\t\tariaLabel(section) {\n\t\t\tif (section?.to?.query?.dir === this.$route.query.dir) {\n\t\t\t\treturn t('files', 'Reload current directory')\n\t\t\t}\n\t\t\treturn t('files', 'Go to the \"{dir}\" directory', section)\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.breadcrumb {\n\t// Take as much space as possible\n\tflex: 1 1 100% !important;\n\twidth: 100%;\n\n\t::v-deep a {\n\t\tcursor: pointer !important;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BreadCrumbs.vue?vue&type=template&id=68b3b20b&scoped=true&\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=68b3b20b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68b3b20b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RecycleScroller',{ref:\"recycleScroller\",staticClass:\"files-list\",attrs:{\"key-field\":\"source\",\"items\":_vm.nodes,\"item-size\":55,\"table-mode\":true,\"item-class\":\"files-list__row\",\"item-tag\":\"tr\",\"list-class\":\"files-list__body\",\"list-tag\":\"tbody\",\"role\":\"table\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ item, active, index }){return [_c('FileEntry',{attrs:{\"active\":active,\"index\":index,\"is-size-available\":_vm.isSizeAvailable,\"files-list-width\":_vm.filesListWidth,\"nodes\":_vm.nodes,\"source\":item}})]}},{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.currentView.caption || '')+\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list.'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListHeader',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"after\",fn:function(){return [_c('FilesListFooter',{attrs:{\"files-list-width\":_vm.filesListWidth,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nexport const hashCode = function (str) {\n return str.split('').reduce(function (a, b) {\n a = ((a << 5) - a) + b.charCodeAt(0);\n return a & a;\n }, 0);\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nconst userConfig = loadState('files', 'config', {\n show_hidden: false,\n crop_image_previews: true,\n});\nexport const useUserConfigStore = function () {\n const store = defineStore('userconfig', {\n state: () => ({\n userConfig,\n }),\n actions: {\n /**\n * Update the user config local store\n */\n onUpdate(key, value) {\n Vue.set(this.userConfig, key, value);\n },\n /**\n * Update the user config local store AND on server side\n */\n async update(key, value) {\n await axios.put(generateUrl('/apps/files/api/v1/config/' + key), {\n value,\n });\n emit('files:config:updated', { key, value });\n }\n }\n });\n const userConfigStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!userConfigStore._initialized) {\n subscribe('files:config:updated', function ({ key, value }) {\n userConfigStore.onUpdate(key, value);\n });\n userConfigStore._initialized = true;\n }\n return userConfigStore;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<span />\n</template>\n\n<script>\n/**\n * This component is used to render custom\n * elements provided by an API. Vue doesn't allow\n * to directly render an HTMLElement, so we can do\n * this magic here.\n */\nexport default {\n\tname: 'CustomElementRender',\n\tprops: {\n\t\tsource: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcurrentView: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trender: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\telement() {\n\t\t\treturn this.render(this.source, this.currentView)\n\t\t},\n\t},\n\twatch: {\n\t\telement() {\n\t\t\tthis.$el.replaceWith(this.element)\n\t\t\tthis.$el = this.element\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.replaceWith(this.element)\n\t\tthis.$el = this.element\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=a261c93e&\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"custom-svg-icon\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<span class=\"custom-svg-icon\" />\n</template>\n\n<script>\n// eslint-disable-next-line import/named\nimport { sanitize } from 'dompurify'\n\nexport default {\n\tname: 'CustomSvgIconRender',\n\tprops: {\n\t\tsvg: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\twatch: {\n\t\tsvg() {\n\t\t\tthis.$el.innerHTML = sanitize(this.svg)\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.innerHTML = sanitize(this.svg)\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.custom-svg-icon {\n\tdisplay: flex;\n\talign-items: center;\n\talign-self: center;\n\tjustify-content: center;\n\tjustify-self: center;\n\twidth: 44px;\n\theight: 44px;\n\topacity: 1;\n\n\t::v-deep svg {\n\t\t// mdi icons have a size of 24px\n\t\t// 22px results in roughly 16px inner size\n\t\theight: 22px;\n\t\twidth: 22px;\n\t\tfill: currentColor;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomSvgIconRender.vue?vue&type=template&id=93e9b2f4&scoped=true&\"\nimport script from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomSvgIconRender.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomSvgIconRender.vue?vue&type=style&index=0&id=93e9b2f4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93e9b2f4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('td',{staticClass:\"files-list__row-checkbox\"},[(_vm.active)?_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.t('files', 'Select the row for {displayName}', { displayName: _vm.displayName }),\"checked\":_vm.selectedFiles,\"value\":_vm.fileid,\"name\":\"selectedFiles\"},on:{\"update:checked\":_vm.onSelectionChange}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('a',_vm._b({ref:\"name\",on:{\"click\":_vm.execDefaultAction}},'a',_vm.linkTo,false),[_c('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?_c('FolderIcon'):(_vm.previewUrl && !_vm.backgroundFailed)?_c('span',{ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",style:({ backgroundImage: _vm.backgroundImage })}):(_vm.mimeIconUrl)?_c('span',{staticClass:\"files-list__row-icon-preview files-list__row-icon-preview--mime\",style:({ backgroundImage: _vm.mimeIconUrl })}):_c('FileIcon'),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\",attrs:{\"aria-label\":_vm.t('files', 'Favorite')}},[_c('StarIcon',{attrs:{\"aria-hidden\":\"true\",\"size\":20}})],1):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list__row-name-text\"},[_vm._v(_vm._s(_vm.displayName))])])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\",class:`files-list__row-actions-${_vm.uniqueId}`},[(_vm.active)?_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.boundariesElement,\"container\":_vm.boundariesElement,\"disabled\":_vm.source._loading,\"force-title\":true,\"force-menu\":true,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledMenuActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-action-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline([_vm.source], _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName([_vm.source], _vm.currentView))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:({ opacity: _vm.sizeOpacity }),on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('td',{key:column.id,staticClass:\"files-list__row-column-custom\",class:`files-list__row-${_vm.currentView?.id}-${column.id}`,on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.active)?_c('CustomElementRender',{attrs:{\"current-view\":_vm.currentView,\"render\":column.render,\"source\":_vm.source}}):_vm._e()],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts&\"","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\n/**\n * Observe various events and save the current\n * special keys states. Useful for checking the\n * current status of a key when executing a method.\n */\nexport const useKeyboardStore = function () {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n }\n });\n const keyboardStore = store(...arguments);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n// The preview service worker cache name (see webpack config)\nconst SWCacheName = 'previews';\n/**\n * Check if the preview is already cached by the service worker\n */\nexport const isCachedPreview = function (previewUrl) {\n return caches.open(SWCacheName)\n .then(function (cache) {\n return cache.match(previewUrl)\n .then(function (response) {\n return !!response;\n });\n });\n};\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=0600090e&scoped=true&\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileEntry.vue?vue&type=style&index=0&id=0600090e&prod&scoped=true&lang=scss&\"\nimport style1 from \"./FileEntry.vue?vue&type=style&index=1&id=0600090e&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0600090e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('files', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\"},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.summary))])]),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_vm.totalSize))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListFooter.vue?vue&type=template&id=e6a083be&scoped=true&\"\nimport script from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListFooter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListFooter.vue?vue&type=style&index=0&id=e6a083be&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e6a083be\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nexport default Vue.extend({\n data() {\n return {\n filesListWidth: null,\n };\n },\n created() {\n const fileListEl = document.querySelector('#app-content-vue');\n this.$resizeObserver = new ResizeObserver((entries) => {\n if (entries.length > 0 && entries[0].target === fileListEl) {\n this.filesListWidth = entries[0].contentRect.width;\n }\n });\n this.$resizeObserver.observe(fileListEl);\n },\n beforeDestroy() {\n this.$resizeObserver.disconnect();\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('th',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"colspan\":\"2\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-title\":true,\"inline\":_vm.inlineActions,\"menu-title\":_vm.inlineActions <= 1 ? _vm.t('files', 'Actions') : null,\"open\":_vm.openedMenu},on:{\"update:open\":function($event){_vm.openedMenu=$event}}},_vm._l((_vm.enabledActions),function(action){return _c('NcActionButton',{key:action.id,class:'files-list__row-actions-batch-' + action.id,on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):_c('CustomSvgIconRender',{attrs:{\"svg\":action.iconSvgInline(_vm.nodes, _vm.currentView)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.nodes, _vm.currentView))+\"\\n\\t\\t\")])}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderActions.vue?vue&type=template&id=03e57b1e&scoped=true&\"\nimport script from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderActions.vue?vue&type=style&index=0&id=03e57b1e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"03e57b1e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcButton',{staticClass:\"files-list__column-sort-button\",class:{'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode},attrs:{\"aria-label\":_vm.sortAriaLabel(_vm.name),\"type\":\"tertiary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy(_vm.mode)}}},[(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}):_c('MenuDown',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\"+_vm._s(_vm.name)+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue';\nimport { mapState } from 'pinia';\nimport { useViewConfigStore } from '../store/viewConfig';\nexport default Vue.extend({\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n currentView() {\n return this.$navigation.active;\n },\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.currentView.id)?.sorting_mode\n || this.currentView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.currentView.id)?.sorting_direction;\n return sortingDirection === 'asc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.currentView.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.currentView.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeaderButton.vue?vue&type=template&id=e85a09d2&\"\nimport script from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeaderButton.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeaderButton.vue?vue&type=style&index=0&id=e85a09d2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\"},[_c('NcCheckboxRadioSwitch',_vm._b({on:{\"update:checked\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),(!_vm.isNoneSelected)?_c('FilesListHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}}):[_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleSortBy('basename')}}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"}),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{'files-list__column--sortable': _vm.isSizeAvailable}},[_c('FilesListHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column)},[(!!column.sort)?_c('FilesListHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\\t\")])],1)})]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=76b6186a&scoped=true&\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListHeader.vue?vue&type=style&index=0&id=76b6186a&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76b6186a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=script&lang=ts&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=640a8bb8&scoped=true&\"\nimport script from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesListVirtual.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesListVirtual.vue?vue&type=style&index=0&id=640a8bb8&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"640a8bb8\",\n null\n \n)\n\nexport default component.exports","import isSvg from 'is-svg';\nimport logger from '../logger.js';\nexport default class {\n _views = [];\n _currentView = null;\n constructor() {\n logger.debug('Navigation service initialized');\n }\n register(view) {\n try {\n isValidNavigation(view);\n isUniqueNavigation(view, this._views);\n }\n catch (e) {\n if (e instanceof Error) {\n logger.error(e.message, { view });\n }\n throw e;\n }\n if (view.legacy) {\n logger.warn('Legacy view detected, please migrate to Vue');\n }\n if (view.iconClass) {\n view.legacy = true;\n }\n this._views.push(view);\n }\n remove(id) {\n const index = this._views.findIndex(view => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n }\n }\n get views() {\n return this._views;\n }\n setActive(view) {\n this._currentView = view;\n }\n get active() {\n return this._currentView;\n }\n}\n/**\n * Make sure the given view is unique\n * and not already registered.\n */\nconst isUniqueNavigation = function (view, views) {\n if (views.find(search => search.id === view.id)) {\n throw new Error(`Navigation id ${view.id} is already registered`);\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Navigation interface requirements.\n */\nconst isValidNavigation = function (view) {\n if (!view.id || typeof view.id !== 'string') {\n throw new Error('Navigation id is required and must be a string');\n }\n if (!view.name || typeof view.name !== 'string') {\n throw new Error('Navigation name is required and must be a string');\n }\n /**\n * Legacy handle their content and icon differently\n * TODO: remove when support for legacy views is removed\n */\n if (!view.legacy) {\n if (!view.getContents || typeof view.getContents !== 'function') {\n throw new Error('Navigation getContents is required and must be a function');\n }\n if (!view.icon || typeof view.icon !== 'string' || !isSvg(view.icon)) {\n throw new Error('Navigation icon is required and must be a valid svg string');\n }\n }\n if (!('order' in view) || typeof view.order !== 'number') {\n throw new Error('Navigation order is required and must be a number');\n }\n // Optional properties\n if (view.columns) {\n view.columns.forEach(isValidColumn);\n }\n if (view.emptyView && typeof view.emptyView !== 'function') {\n throw new Error('Navigation emptyView must be a function');\n }\n if (view.parent && typeof view.parent !== 'string') {\n throw new Error('Navigation parent must be a string');\n }\n if ('sticky' in view && typeof view.sticky !== 'boolean') {\n throw new Error('Navigation sticky must be a boolean');\n }\n if ('expanded' in view && typeof view.expanded !== 'boolean') {\n throw new Error('Navigation expanded must be a boolean');\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== 'string') {\n throw new Error('Navigation defaultSortKey must be a string');\n }\n return true;\n};\n/**\n * Typescript cannot validate an interface.\n * Please keep in sync with the Column interface requirements.\n */\nconst isValidColumn = function (column) {\n if (!column.id || typeof column.id !== 'string') {\n throw new Error('A column id is required');\n }\n if (!column.title || typeof column.title !== 'string') {\n throw new Error('A column title is required');\n }\n if (!column.render || typeof column.render !== 'function') {\n throw new Error('A render function is required');\n }\n // Optional properties\n if (column.sort && typeof column.sort !== 'function') {\n throw new Error('Column sortFunction must be a function');\n }\n if (column.summary && typeof column.summary !== 'function') {\n throw new Error('Column summary must be a function');\n }\n return true;\n};\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.currentView?.legacy),expression:\"!currentView?.legacy\"}],class:{'app-content--hidden': _vm.currentView?.legacy},attrs:{\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\"},[_c('BreadCrumbs',{attrs:{\"path\":_vm.dir},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\"}):_vm._e()],1),_vm._v(\" \"),(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"title\":_vm.t('files', 'Loading current folder')}}):(!_vm.loading && _vm.isEmptyDir)?_c('NcEmptyContent',{attrs:{\"title\":_vm.t('files', 'No files in here'),\"description\":_vm.t('files', 'No files or folders have been deleted yet'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [(_vm.dir !== '/')?_c('NcButton',{attrs:{\"aria-label\":\"t('files', 'Go to the previous folder')\",\"type\":\"primary\",\"to\":_vm.toPreviousDir}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"icon\",fn:function(){return [_c('TrashCan')]},proxy:true}])}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-view\":_vm.currentView,\"nodes\":_vm.dirContents}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesList.vue?vue&type=template&id=66068cbb&scoped=true&\"\nimport script from \"./FilesList.vue?vue&type=script&lang=ts&\"\nexport * from \"./FilesList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FilesList.vue?vue&type=style&index=0&id=66068cbb&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66068cbb\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppNavigation',{attrs:{\"data-cy-files-navigation\":\"\"},scopedSlots:_vm._u([{key:\"list\",fn:function(){return _vm._l((_vm.parentViews),function(view){return _c('NcAppNavigationItem',{key:view.id,attrs:{\"allow-collapse\":true,\"data-cy-files-navigation-item\":view.id,\"icon\":view.iconClass,\"open\":_vm.isExpanded(view),\"pinned\":view.sticky,\"title\":view.name,\"to\":_vm.generateToNavigation(view)},on:{\"update:open\":function($event){return _vm.onToggleExpand(view)}}},[(view.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":view.icon},slot:\"icon\"}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.childViews[view.id]),function(child){return _c('NcAppNavigationItem',{key:child.id,attrs:{\"data-cy-files-navigation-item\":child.id,\"exact\":true,\"icon\":child.iconClass,\"title\":child.name,\"to\":_vm.generateToNavigation(child)}},[(child.icon)?_c('NcIconSvgWrapper',{attrs:{\"slot\":\"icon\",\"svg\":child.icon},slot:\"icon\"}):_vm._e()],1)})],2)})},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c('NavigationQuota'),_vm._v(\" \"),_c('NcAppNavigationItem',{attrs:{\"aria-label\":_vm.t('files', 'Open the files app settings'),\"title\":_vm.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openSettings.apply(null, arguments)}}},[_c('Cog',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('SettingsModal',{attrs:{\"open\":_vm.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"close\":_vm.onSettingsClose}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.storageStats)?_c('NcAppNavigationItem',{staticClass:\"app-navigation-entry__settings-quota\",class:{ 'app-navigation-entry__settings-quota--not-unlimited': _vm.storageStats.quota >= 0},attrs:{\"aria-label\":_vm.t('files', 'Storage informations'),\"loading\":_vm.loadingStorageStats,\"name\":_vm.storageStatsTitle,\"title\":_vm.storageStatsTooltip,\"data-cy-files-navigation-settings-quota\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.debounceUpdateStorageStats.apply(null, arguments)}}},[_c('ChartPie',{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"}),_vm._v(\" \"),(_vm.storageStats.quota >= 0)?_c('NcProgressBar',{attrs:{\"slot\":\"extra\",\"error\":_vm.storageStats.relative > 80,\"value\":Math.min(_vm.storageStats.relative, 100)},slot:\"extra\"}):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<NcAppNavigationItem v-if=\"storageStats\"\n\t\t:aria-label=\"t('files', 'Storage informations')\"\n\t\t:class=\"{ 'app-navigation-entry__settings-quota--not-unlimited': storageStats.quota >= 0}\"\n\t\t:loading=\"loadingStorageStats\"\n\t\t:name=\"storageStatsTitle\"\n\t\t:title=\"storageStatsTooltip\"\n\t\tclass=\"app-navigation-entry__settings-quota\"\n\t\tdata-cy-files-navigation-settings-quota\n\t\t@click.stop.prevent=\"debounceUpdateStorageStats\">\n\t\t<ChartPie slot=\"icon\" :size=\"20\" />\n\n\t\t<!-- Progress bar -->\n\t\t<NcProgressBar v-if=\"storageStats.quota >= 0\"\n\t\t\tslot=\"extra\"\n\t\t\t:error=\"storageStats.relative > 80\"\n\t\t\t:value=\"Math.min(storageStats.relative, 100)\" />\n\t</NcAppNavigationItem>\n</template>\n\n<script>\nimport { formatFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport { debounce, throttle } from 'throttle-debounce'\nimport { translate } from '@nextcloud/l10n'\nimport axios from '@nextcloud/axios'\nimport ChartPie from 'vue-material-design-icons/ChartPie.vue'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport logger from '../logger.js'\nimport { subscribe } from '@nextcloud/event-bus'\n\nexport default {\n\tname: 'NavigationQuota',\n\n\tcomponents: {\n\t\tChartPie,\n\t\tNcAppNavigationItem,\n\t\tNcProgressBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloadingStorageStats: false,\n\t\t\tstorageStats: loadState('files', 'storageStats', null),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tstorageStatsTitle() {\n\t\t\tconst usedQuotaByte = formatFileSize(this.storageStats?.used)\n\t\t\tconst quotaByte = formatFileSize(this.storageStats?.quota)\n\n\t\t\t// If no quota set\n\t\t\tif (this.storageStats?.quota < 0) {\n\t\t\t\treturn this.t('files', '{usedQuotaByte} used', { usedQuotaByte })\n\t\t\t}\n\n\t\t\treturn this.t('files', '{used} of {quota} used', {\n\t\t\t\tused: usedQuotaByte,\n\t\t\t\tquota: quotaByte,\n\t\t\t})\n\t\t},\n\t\tstorageStatsTooltip() {\n\t\t\tif (!this.storageStats.relative) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\treturn this.t('files', '{relative}% used', this.storageStats)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t/**\n\t\t * Update storage stats every minute\n\t\t * TODO: remove when all views are migrated to Vue\n\t\t */\n\t\tsetInterval(this.throttleUpdateStorageStats, 60 * 1000)\n\n\t\tsubscribe('files:node:created', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:deleted', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:moved', this.throttleUpdateStorageStats)\n\t\tsubscribe('files:node:updated', this.throttleUpdateStorageStats)\n\t},\n\n\tmethods: {\n\t\t// From user input\n\t\tdebounceUpdateStorageStats: debounce(200, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\t\t// From interval or event bus\n\t\tthrottleUpdateStorageStats: throttle(1000, function(event) {\n\t\t\tthis.updateStorageStats(event)\n\t\t}),\n\n\t\t/**\n\t\t * Update the storage stats\n\t\t * Throttled at max 1 refresh per minute\n\t\t *\n\t\t * @param {Event} [event = null] if user interaction\n\t\t */\n\t\tasync updateStorageStats(event = null) {\n\t\t\tif (this.loadingStorageStats) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loadingStorageStats = true\n\t\t\ttry {\n\t\t\t\tconst response = await axios.get(generateUrl('/apps/files/api/v1/stats'))\n\t\t\t\tif (!response?.data?.data) {\n\t\t\t\t\tthrow new Error('Invalid storage stats')\n\t\t\t\t}\n\t\t\t\tthis.storageStats = response.data.data\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Could not refresh storage stats', { error })\n\t\t\t\t// Only show to the user if it was manually triggered\n\t\t\t\tif (event) {\n\t\t\t\t\tshowError(t('files', 'Could not refresh storage stats'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingStorageStats = false\n\t\t\t}\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// User storage stats display\n.app-navigation-entry__settings-quota {\n\t// Align title with progress and icon\n\t&--not-unlimited::v-deep .app-navigation-entry__title {\n\t\tmargin-top: -4px;\n\t}\n\n\tprogress {\n\t\tposition: absolute;\n\t\tbottom: 10px;\n\t\tmargin-left: 44px;\n\t\twidth: calc(100% - 44px - 22px);\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NavigationQuota.vue?vue&type=template&id=918797b2&scoped=true&\"\nimport script from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nexport * from \"./NavigationQuota.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NavigationQuota.vue?vue&type=style&index=0&id=918797b2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"918797b2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcAppSettingsDialog',{attrs:{\"open\":_vm.open,\"show-navigation\":true,\"title\":_vm.t('files', 'Files settings')},on:{\"update:open\":_vm.onClose}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"settings\",\"title\":_vm.t('files', 'Files settings')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.show_hidden},on:{\"update:checked\":function($event){return _vm.setConfig('show_hidden', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Show hidden files'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"checked\":_vm.userConfig.crop_image_previews},on:{\"update:checked\":function($event){return _vm.setConfig('crop_image_previews', $event)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Crop image previews'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.settings.length !== 0)?_c('NcAppSettingsSection',{attrs:{\"id\":\"more-settings\",\"title\":_vm.t('files', 'Additional settings')}},[_vm._l((_vm.settings),function(setting){return [_c('Setting',{key:setting.name,attrs:{\"el\":setting.el}})]})],2):_vm._e(),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"webdav\",\"title\":_vm.t('files', 'WebDAV')}},[_c('NcInputField',{attrs:{\"id\":\"webdav-url-input\",\"show-trailing-button\":true,\"success\":_vm.webdavUrlCopied,\"trailing-button-label\":_vm.t('files', 'Copy to clipboard'),\"value\":_vm.webdavUrl,\"readonly\":\"readonly\",\"type\":\"url\"},on:{\"focus\":function($event){return $event.target.select()},\"trailing-button-click\":_vm.copyCloudId},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c('Clipboard',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.webdavDocs,\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Use this address to access your Files via WebDAV'))+\" ↗\\n\\t\\t\\t\")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('em',[_c('a',{staticClass:\"setting-link\",attrs:{\"href\":_vm.appPasswordUrl}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.'))+\" ↗\\n\\t\\t\\t\")])])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Gary Kim <gary@garykim.dev>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div />\n</template>\n<script>\nexport default {\n\tname: 'Setting',\n\tprops: {\n\t\tel: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$el.appendChild(this.el())\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Setting.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Setting.vue?vue&type=template&id=61d69eae&\"\nimport script from \"./Setting.vue?vue&type=script&lang=js&\"\nexport * from \"./Setting.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<NcAppSettingsDialog :open=\"open\"\n\t\t:show-navigation=\"true\"\n\t\t:title=\"t('files', 'Files settings')\"\n\t\t@update:open=\"onClose\">\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection id=\"settings\" :title=\"t('files', 'Files settings')\">\n\t\t\t<NcCheckboxRadioSwitch :checked=\"userConfig.show_hidden\"\n\t\t\t\t@update:checked=\"setConfig('show_hidden', $event)\">\n\t\t\t\t{{ t('files', 'Show hidden files') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch :checked=\"userConfig.crop_image_previews\"\n\t\t\t\t@update:checked=\"setConfig('crop_image_previews', $event)\">\n\t\t\t\t{{ t('files', 'Crop image previews') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Settings API-->\n\t\t<NcAppSettingsSection v-if=\"settings.length !== 0\"\n\t\t\tid=\"more-settings\"\n\t\t\t:title=\"t('files', 'Additional settings')\">\n\t\t\t<template v-for=\"setting in settings\">\n\t\t\t\t<Setting :key=\"setting.name\" :el=\"setting.el\" />\n\t\t\t</template>\n\t\t</NcAppSettingsSection>\n\n\t\t<!-- Webdav URL-->\n\t\t<NcAppSettingsSection id=\"webdav\" :title=\"t('files', 'WebDAV')\">\n\t\t\t<NcInputField id=\"webdav-url-input\"\n\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t:success=\"webdavUrlCopied\"\n\t\t\t\t:trailing-button-label=\"t('files', 'Copy to clipboard')\"\n\t\t\t\t:value=\"webdavUrl\"\n\t\t\t\treadonly=\"readonly\"\n\t\t\t\ttype=\"url\"\n\t\t\t\t@focus=\"$event.target.select()\"\n\t\t\t\t@trailing-button-click=\"copyCloudId\">\n\t\t\t\t<template #trailing-button-icon>\n\t\t\t\t\t<Clipboard :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcInputField>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\"\n\t\t\t\t\t:href=\"webdavDocs\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t{{ t('files', 'Use this address to access your Files via WebDAV') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t\t<br>\n\t\t\t<em>\n\t\t\t\t<a class=\"setting-link\" :href=\"appPasswordUrl\">\n\t\t\t\t\t{{ t('files', 'If you have enabled 2FA, you must create and use a new app password by clicking here.') }} ↗\n\t\t\t\t</a>\n\t\t\t</em>\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport NcAppSettingsDialog from '@nextcloud/vue/dist/Components/NcAppSettingsDialog.js'\nimport NcAppSettingsSection from '@nextcloud/vue/dist/Components/NcAppSettingsSection.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport Clipboard from 'vue-material-design-icons/Clipboard.vue'\nimport NcInputField from '@nextcloud/vue/dist/Components/NcInputField.js'\nimport Setting from '../components/Setting.vue'\n\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { translate } from '@nextcloud/l10n'\nimport { useUserConfigStore } from '../store/userconfig.ts'\n\nexport default {\n\tname: 'Settings',\n\tcomponents: {\n\t\tClipboard,\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcInputField,\n\t\tSetting,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst userConfigStore = useUserConfigStore()\n\t\treturn {\n\t\t\tuserConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Settings API\n\t\t\tsettings: window.OCA?.Files?.Settings?.settings || [],\n\n\t\t\t// Webdav infos\n\t\t\twebdavUrl: generateRemoteUrl('dav/files/' + encodeURIComponent(getCurrentUser()?.uid)),\n\t\t\twebdavDocs: 'https://docs.nextcloud.com/server/stable/go.php?to=user-webdav',\n\t\t\tappPasswordUrl: generateUrl('/settings/user/security#generate-app-token-section'),\n\t\t\twebdavUrlCopied: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tuserConfig() {\n\t\t\treturn this.userConfigStore.userConfig\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.open())\n\t},\n\n\tbeforeDestroy() {\n\t\t// Update the settings API entries state\n\t\tthis.settings.forEach(setting => setting.close())\n\t},\n\n\tmethods: {\n\t\tonClose() {\n\t\t\tthis.$emit('close')\n\t\t},\n\n\t\tsetConfig(key, value) {\n\t\t\tthis.userConfigStore.update(key, value)\n\t\t},\n\n\t\tasync copyCloudId() {\n\t\t\tdocument.querySelector('input#webdav-url-input').select()\n\n\t\t\tif (!navigator.clipboard) {\n\t\t\t\t// Clipboard API not available\n\t\t\t\tshowError(t('files', 'Clipboard is not available'))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tawait navigator.clipboard.writeText(this.webdavUrl)\n\t\t\tthis.webdavUrlCopied = true\n\t\t\tshowSuccess(t('files', 'WebDAV URL copied to clipboard'))\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.webdavUrlCopied = false\n\t\t\t}, 5000)\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.setting-link:hover {\n\ttext-decoration: underline;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=76ca5d1f&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=js&\"\nexport * from \"./Settings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Settings.vue?vue&type=style&index=0&id=76ca5d1f&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"76ca5d1f\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<NcAppNavigation data-cy-files-navigation>\n\t\t<template #list>\n\t\t\t<NcAppNavigationItem v-for=\"view in parentViews\"\n\t\t\t\t:key=\"view.id\"\n\t\t\t\t:allow-collapse=\"true\"\n\t\t\t\t:data-cy-files-navigation-item=\"view.id\"\n\t\t\t\t:icon=\"view.iconClass\"\n\t\t\t\t:open=\"isExpanded(view)\"\n\t\t\t\t:pinned=\"view.sticky\"\n\t\t\t\t:title=\"view.name\"\n\t\t\t\t:to=\"generateToNavigation(view)\"\n\t\t\t\t@update:open=\"onToggleExpand(view)\">\n\t\t\t\t<!-- Sanitized icon as svg if provided -->\n\t\t\t\t<NcIconSvgWrapper v-if=\"view.icon\" slot=\"icon\" :svg=\"view.icon\" />\n\n\t\t\t\t<!-- Child views if any -->\n\t\t\t\t<NcAppNavigationItem v-for=\"child in childViews[view.id]\"\n\t\t\t\t\t:key=\"child.id\"\n\t\t\t\t\t:data-cy-files-navigation-item=\"child.id\"\n\t\t\t\t\t:exact=\"true\"\n\t\t\t\t\t:icon=\"child.iconClass\"\n\t\t\t\t\t:title=\"child.name\"\n\t\t\t\t\t:to=\"generateToNavigation(child)\">\n\t\t\t\t\t<!-- Sanitized icon as svg if provided -->\n\t\t\t\t\t<NcIconSvgWrapper v-if=\"child.icon\" slot=\"icon\" :svg=\"child.icon\" />\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t</NcAppNavigationItem>\n\t\t</template>\n\n\t\t<!-- Non-scrollable navigation bottom elements -->\n\t\t<template #footer>\n\t\t\t<ul class=\"app-navigation-entry__settings\">\n\t\t\t\t<!-- User storage usage statistics -->\n\t\t\t\t<NavigationQuota />\n\n\t\t\t\t<!-- Files settings modal toggle-->\n\t\t\t\t<NcAppNavigationItem :aria-label=\"t('files', 'Open the files app settings')\"\n\t\t\t\t\t:title=\"t('files', 'Files settings')\"\n\t\t\t\t\tdata-cy-files-navigation-settings-button\n\t\t\t\t\t@click.prevent.stop=\"openSettings\">\n\t\t\t\t\t<Cog slot=\"icon\" :size=\"20\" />\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t</ul>\n\t\t</template>\n\n\t\t<!-- Settings modal-->\n\t\t<SettingsModal :open=\"settingsOpened\"\n\t\t\tdata-cy-files-navigation-settings\n\t\t\t@close=\"onSettingsClose\" />\n\t</NcAppNavigation>\n</template>\n\n<script>\nimport { emit, subscribe } from '@nextcloud/event-bus'\nimport { translate } from '@nextcloud/l10n'\nimport Cog from 'vue-material-design-icons/Cog.vue'\nimport NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation.js'\nimport NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem.js'\nimport NcIconSvgWrapper from '@nextcloud/vue/dist/Components/NcIconSvgWrapper.js'\n\nimport { setPageHeading } from '../../../../core/src/OCP/accessibility.js'\nimport { useViewConfigStore } from '../store/viewConfig.ts'\nimport logger from '../logger.js'\nimport Navigation from '../services/Navigation.ts'\nimport NavigationQuota from '../components/NavigationQuota.vue'\nimport SettingsModal from './Settings.vue'\n\nexport default {\n\tname: 'Navigation',\n\n\tcomponents: {\n\t\tCog,\n\t\tNavigationQuota,\n\t\tNcAppNavigation,\n\t\tNcAppNavigationItem,\n\t\tNcIconSvgWrapper,\n\t\tSettingsModal,\n\t},\n\n\tprops: {\n\t\t// eslint-disable-next-line vue/prop-name-casing\n\t\tNavigation: {\n\t\t\ttype: Navigation,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst viewConfigStore = useViewConfigStore()\n\t\treturn {\n\t\t\tviewConfigStore,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tsettingsOpened: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tcurrentViewId() {\n\t\t\treturn this.$route?.params?.view || 'files'\n\t\t},\n\n\t\t/** @return {Navigation} */\n\t\tcurrentView() {\n\t\t\treturn this.views.find(view => view.id === this.currentViewId)\n\t\t},\n\n\t\t/** @return {Navigation[]} */\n\t\tviews() {\n\t\t\treturn this.Navigation.views\n\t\t},\n\n\t\t/** @return {Navigation[]} */\n\t\tparentViews() {\n\t\t\treturn this.views\n\t\t\t\t// filter child views\n\t\t\t\t.filter(view => !view.parent)\n\t\t\t\t// sort views by order\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\treturn a.order - b.order\n\t\t\t\t})\n\t\t},\n\n\t\t/** @return {Navigation[]} */\n\t\tchildViews() {\n\t\t\treturn this.views\n\t\t\t\t// filter parent views\n\t\t\t\t.filter(view => !!view.parent)\n\t\t\t\t// create a map of parents and their children\n\t\t\t\t.reduce((list, view) => {\n\t\t\t\t\tlist[view.parent] = [...(list[view.parent] || []), view]\n\t\t\t\t\t// Sort children by order\n\t\t\t\t\tlist[view.parent].sort((a, b) => {\n\t\t\t\t\t\treturn a.order - b.order\n\t\t\t\t\t})\n\t\t\t\t\treturn list\n\t\t\t\t}, {})\n\t\t},\n\t},\n\n\twatch: {\n\t\tcurrentView(view, oldView) {\n\t\t\t// If undefined, it means we're initializing the view\n\t\t\t// This is handled by the legacy-view:initialized event\n\t\t\t// TODO: remove when legacy views are dropped\n\t\t\tif (view?.id === oldView?.id) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.Navigation.setActive(view)\n\t\t\tlogger.debug('Navigation changed', { id: view.id, view })\n\n\t\t\tthis.showView(view, oldView)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tif (this.currentView) {\n\t\t\tlogger.debug('Navigation mounted. Showing requested view', { view: this.currentView })\n\t\t\tthis.showView(this.currentView)\n\t\t}\n\n\t\tsubscribe('files:legacy-navigation:changed', this.onLegacyNavigationChanged)\n\n\t\t// TODO: remove this once the legacy navigation is gone\n\t\tsubscribe('files:legacy-view:initialized', () => {\n\t\t\tlogger.debug('Legacy view initialized', { ...this.currentView })\n\t\t\tthis.showView(this.currentView)\n\t\t})\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {Navigation} view the new active view\n\t\t * @param {Navigation} oldView the old active view\n\t\t */\n\t\tshowView(view, oldView) {\n\t\t\t// Closing any opened sidebar\n\t\t\twindow?.OCA?.Files?.Sidebar?.close?.()\n\n\t\t\tif (view?.legacy) {\n\t\t\t\tconst newAppContent = document.querySelector('#app-content #app-content-' + this.currentView.id + '.viewcontainer')\n\t\t\t\tdocument.querySelectorAll('#app-content .viewcontainer').forEach(el => {\n\t\t\t\t\tel.classList.add('hidden')\n\t\t\t\t})\n\t\t\t\tnewAppContent.classList.remove('hidden')\n\n\t\t\t\t// Triggering legacy navigation events\n\t\t\t\tconst { dir = '/' } = OC.Util.History.parseUrlQuery()\n\t\t\t\tconst params = { itemId: view.id, dir }\n\n\t\t\t\tlogger.debug('Triggering legacy navigation event', params)\n\t\t\t\twindow.jQuery(newAppContent).trigger(new window.jQuery.Event('show', params))\n\t\t\t\twindow.jQuery(newAppContent).trigger(new window.jQuery.Event('urlChanged', params))\n\t\t\t}\n\n\t\t\tthis.Navigation.setActive(view)\n\t\t\tsetPageHeading(view.name)\n\t\t\temit('files:navigation:changed', view)\n\t\t},\n\n\t\t/**\n\t\t * Coming from the legacy files app.\n\t\t * TODO: remove when all views are migrated.\n\t\t *\n\t\t * @param {Navigation} view the new active view\n\t\t */\n\t\tonLegacyNavigationChanged({ id } = { id: 'files' }) {\n\t\t\tconst view = this.Navigation.views.find(view => view.id === id)\n\t\t\tif (view && view.legacy && view.id !== this.currentView.id) {\n\t\t\t\t// Force update the current route as the request comes\n\t\t\t\t// from the legacy files app router\n\t\t\t\tthis.$router.replace({ ...this.$route, params: { view: view.id } })\n\t\t\t\tthis.Navigation.setActive(view)\n\t\t\t\tthis.showView(view)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Expand/collapse a a view with children and permanently\n\t\t * save this setting in the server.\n\t\t *\n\t\t * @param {Navigation} view the view to toggle\n\t\t */\n\t\tonToggleExpand(view) {\n\t\t\t// Invert state\n\t\t\tconst isExpanded = this.isExpanded(view)\n\t\t\t// Update the view expanded state, might not be necessary\n\t\t\tview.expanded = !isExpanded\n\t\t\tthis.viewConfigStore.update(view.id, 'expanded', !isExpanded)\n\t\t},\n\n\t\t/**\n\t\t * Check if a view is expanded by user config\n\t\t * or fallback to the default value.\n\t\t *\n\t\t * @param {Navigation} view the view to check\n\t\t */\n\t\tisExpanded(view) {\n\t\t\treturn typeof this.viewConfigStore.getConfig(view.id)?.expanded === 'boolean'\n\t\t\t\t? this.viewConfigStore.getConfig(view.id).expanded === true\n\t\t\t\t: view.expanded === true\n\t\t},\n\n\t\t/**\n\t\t * Generate the route to a view\n\t\t *\n\t\t * @param {Navigation} view the view to toggle\n\t\t */\n\t\tgenerateToNavigation(view) {\n\t\t\tif (view.params) {\n\t\t\t\tconst { dir, fileid } = view.params\n\t\t\t\treturn { name: 'filelist', params: view.params, query: { dir, fileid } }\n\t\t\t}\n\t\t\treturn { name: 'filelist', params: { view: view.id } }\n\t\t},\n\n\t\t/**\n\t\t * Open the settings modal\n\t\t */\n\t\topenSettings() {\n\t\t\tthis.settingsOpened = true\n\t\t},\n\n\t\t/**\n\t\t * Close the settings modal\n\t\t */\n\t\tonSettingsClose() {\n\t\t\tthis.settingsOpened = false\n\t\t},\n\n\t\tt: translate,\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\n.app-navigation::v-deep .app-navigation-entry-icon {\n\tbackground-repeat: no-repeat;\n\tbackground-position: center;\n}\n\n.app-navigation > ul.app-navigation__list {\n\t// Use flex gap value for more elegant spacing\n\tpadding-bottom: var(--default-grid-baseline, 4px);\n}\n\n.app-navigation-entry__settings {\n\theight: auto !important;\n\toverflow: hidden !important;\n\tpadding-top: 0 !important;\n\t// Prevent shrinking or growing\n\tflex: 0 0 auto;\n}\n</style>\n","/**\n * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\n/**\n * Set the page heading\n *\n * @param {string} heading page title from the history api\n * @since 27.0.0\n */\nexport function setPageHeading(heading) {\n\tconst headingEl = document.getElementById('page-heading-level-1')\n\tif (headingEl) {\n\t\theadingEl.textContent = heading\n\t}\n}\nexport default {\n\t/**\n\t * @return {boolean} Whether the user opted-out of shortcuts so that they should not be registered\n\t */\n\tdisableKeyboardShortcuts() {\n\t\treturn loadState('theming', 'shortcutsDisabled', false)\n\t},\n\tsetPageHeading,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=657a978e&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=657a978e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"657a978e\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport logger from '../logger.js'\n\n/**\n * Fetch and register the legacy files views\n */\nexport default function() {\n\tconst legacyViews = Object.values(loadState('files', 'navigation', {}))\n\n\tif (legacyViews.length > 0) {\n\t\tlogger.debug('Legacy files views detected. Processing...', legacyViews)\n\t\tlegacyViews.forEach(view => {\n\t\t\tregisterLegacyView(view)\n\t\t\tif (view.sublist) {\n\t\t\t\tview.sublist.forEach(subview => registerLegacyView({ ...subview, parent: view.id }))\n\t\t\t}\n\t\t})\n\t}\n}\n\nconst registerLegacyView = function({ id, name, order, icon, parent, classes = '', expanded, params }) {\n\tOCP.Files.Navigation.register({\n\t\tid,\n\t\tname,\n\t\torder,\n\t\tparams,\n\t\tparent,\n\t\texpanded: expanded === true,\n\t\ticonClass: icon ? `icon-${icon}` : 'nav-icon-' + id,\n\t\tlegacy: true,\n\t\tsticky: classes.includes('pinned'),\n\t})\n}\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport queryString from 'query-string'\n\nVue.use(Router)\n\nconst router = new Router({\n\tmode: 'history',\n\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl('/apps/files', ''),\n\tlinkActiveClass: 'active',\n\n\troutes: [\n\t\t{\n\t\t\tpath: '/',\n\t\t\t// Pretending we're using the default view\n\t\t\talias: '/files',\n\t\t},\n\t\t{\n\t\t\tpath: '/:view/:fileid?',\n\t\t\tname: 'filelist',\n\t\t\tprops: true,\n\t\t},\n\t],\n\n\t// Custom stringifyQuery to prevent encoding of slashes in the url\n\tstringifyQuery(query) {\n\t\tconst result = queryString.stringify(query).replace(/%2F/gmi, '/')\n\t\treturn result ? ('?' + result) : ''\n\t},\n})\n\nexport default router\n","import './templates.js';\nimport './legacy/filelistSearch.js';\nimport './actions/deleteAction';\nimport './actions/sidebarAction';\nimport Vue from 'vue';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport FilesListView from './views/FilesList.vue';\nimport NavigationService from './services/Navigation';\nimport NavigationView from './views/Navigation.vue';\nimport processLegacyFilesViews from './legacy/navigationMapper.js';\nimport registerPreviewServiceWorker from './services/ServiceWorker.js';\nimport router from './router/router.js';\nimport RouterService from './services/RouterService';\nimport SettingsModel from './models/Setting.js';\nimport SettingsService from './services/Settings.js';\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nconst Router = new RouterService(router);\nObject.assign(window.OCP.Files, { Router });\n// Init Pinia store\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\n// Init Navigation Service\nconst Navigation = new NavigationService();\nObject.assign(window.OCP.Files, { Navigation });\nVue.prototype.$navigation = Navigation;\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\n// Init Navigation View\nconst View = Vue.extend(NavigationView);\nconst FilesNavigationRoot = new View({\n name: 'FilesNavigationRoot',\n propsData: {\n Navigation,\n },\n router,\n pinia,\n});\nFilesNavigationRoot.$mount('#app-navigation-files');\n// Init content list view\nconst ListView = Vue.extend(FilesListView);\nconst FilesList = new ListView({\n name: 'FilesListRoot',\n router,\n pinia,\n});\nFilesList.$mount('#app-content-vue');\n// Init legacy and new files views\nprocessLegacyFilesViews();\n// Register preview service worker\nregisterPreviewServiceWorker();\n","export default class RouterService {\n _router;\n constructor(router) {\n this._router = router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this._router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name the route name\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n return this._router.push({\n name,\n query,\n params,\n replace,\n });\n }\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Settings {\n\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tconsole.debug('OCA.Files.Settings initialized')\n\t}\n\n\t/**\n\t * Register a new setting\n\t *\n\t * @since 19.0.0\n\t * @param {OCA.Files.Settings.Setting} view element to add to settings\n\t * @return {boolean} whether registering was successful\n\t */\n\tregister(view) {\n\t\tif (this._settings.filter(e => e.name === view.name).length > 0) {\n\t\t\tconsole.error('A setting with the same name is already registered')\n\t\t\treturn false\n\t\t}\n\t\tthis._settings.push(view)\n\t\treturn true\n\t}\n\n\t/**\n\t * All settings elements\n\t *\n\t * @return {OCA.Files.Settings.Setting[]} All currently registered settings\n\t */\n\tget settings() {\n\t\treturn this._settings\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Setting {\n\n\t_close\n\t_el\n\t_name\n\t_open\n\n\t/**\n\t * Create a new files app setting\n\t *\n\t * @since 19.0.0\n\t * @param {string} name the name of this setting\n\t * @param {object} component the component\n\t * @param {Function} component.el function that returns an unmounted dom element to be added\n\t * @param {Function} [component.open] callback for when setting is added\n\t * @param {Function} [component.close] callback for when setting is closed\n\t */\n\tconstructor(name, { el, open, close }) {\n\t\tthis._name = name\n\t\tthis._el = el\n\t\tthis._open = open\n\t\tthis._close = close\n\n\t\tif (typeof this._open !== 'function') {\n\t\t\tthis._open = () => {}\n\t\t}\n\n\t\tif (typeof this._close !== 'function') {\n\t\t\tthis._close = () => {}\n\t\t}\n\t}\n\n\tget name() {\n\t\treturn this._name\n\t}\n\n\tget el() {\n\t\treturn this._el\n\t}\n\n\tget open() {\n\t\treturn this._open\n\t}\n\n\tget close() {\n\t\treturn this._close\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\nexport default () => {\n\tif ('serviceWorker' in navigator) {\n\t\t// Use the window load event to keep the page load performant\n\t\twindow.addEventListener('load', async () => {\n\t\t\ttry {\n\t\t\t\tconst url = generateUrl('/apps/files/preview-service-worker.js', {}, { noRewrite: true })\n\t\t\t\tconst registration = await navigator.serviceWorker.register(url, { scope: '/' })\n\t\t\t\tlogger.debug('SW registered: ', { registration })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('SW registration failed: ', { error })\n\t\t\t}\n\t\t})\n\t} else {\n\t\tlogger.debug('Service Worker is not enabled on this browser.')\n\t}\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".breadcrumb[data-v-68b3b20b]{flex:1 1 100% !important;width:100%}.breadcrumb[data-v-68b3b20b] a{cursor:pointer !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,6BAEC,wBAAA,CACA,UAAA,CAEA,+BACC,yBAAA\",\"sourcesContent\":[\"\\n.breadcrumb {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\n\\t::v-deep a {\\n\\t\\tcursor: pointer !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".custom-svg-icon[data-v-93e9b2f4]{display:flex;align-items:center;align-self:center;justify-content:center;justify-self:center;width:44px;height:44px;opacity:1}.custom-svg-icon[data-v-93e9b2f4] svg{height:22px;width:22px;fill:currentColor}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/CustomSvgIconRender.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAA,CACA,mBAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CAEA,sCAGC,WAAA,CACA,UAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.custom-svg-icon {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\talign-self: center;\\n\\tjustify-content: center;\\n\\tjustify-self: center;\\n\\twidth: 44px;\\n\\theight: 44px;\\n\\topacity: 1;\\n\\n\\t::v-deep svg {\\n\\t\\t// mdi icons have a size of 24px\\n\\t\\t// 22px results in roughly 16px inner size\\n\\t\\theight: 22px;\\n\\t\\twidth: 22px;\\n\\t\\tfill: currentColor;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"tr[data-v-0600090e]:hover,tr[data-v-0600090e]:focus,tr[data-v-0600090e]:active{background-color:var(--color-background-dark)}.files-list__row-icon-preview[data-v-0600090e]:not([style*=background]){background:var(--color-loading-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\"AAGC,+EAGC,6CAAA,CAKF,wEACI,oCAAA\",\"sourcesContent\":[\"\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"tr[data-v-e6a083be]{padding-bottom:300px;border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}td[data-v-e6a083be]{user-select:none;color:var(--color-text-maxcontrast) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,oBAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAGD,oBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tpadding-bottom: 300px;\\n\\tborder-top: 1px solid var(--color-border);\\n\\t// Prevent hover effect on the whole row\\n\\tbackground-color: transparent !important;\\n\\tborder-bottom: none !important;\\n}\\n\\ntd {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list__column[data-v-76b6186a]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-76b6186a]{cursor:pointer}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\n.files-list__column {\\n\\tuser-select: none;\\n\\t// Make sure the cell colors don't apply to column headers\\n\\tcolor: var(--color-text-maxcontrast) !important;\\n\\n\\t&--sortable {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list__row-actions-batch[data-v-03e57b1e]{flex:1 1 100% !important}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper{width:100%}.files-list__row-actions-batch[data-v-03e57b1e] .button-vue__wrapper span.button-vue__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CAGA,qEACC,UAAA,CACA,2FACC,eAAA,CACA,sBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t::v-deep .button-vue__wrapper {\\n\\t\\twidth: 100%;\\n\\t\\tspan.button-vue__text {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list__column-sort-button{margin:0 calc(var(--cell-margin)*-1);padding:0 4px 0 16px !important}.files-list__column-sort-button .button-vue__wrapper{flex-direction:row-reverse;width:100%}.files-list__column-sort-button .button-vue__icon{transition-timing-function:linear;transition-duration:.1s;transition-property:opacity;opacity:0}.files-list__column-sort-button .button-vue__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list__column-sort-button--active .button-vue__icon,.files-list__column-sort-button:hover .button-vue__icon,.files-list__column-sort-button:focus .button-vue__icon,.files-list__column-sort-button:active .button-vue__icon{opacity:1 !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,gCAEC,oCAAA,CAEA,+BAAA,CAGA,qDACC,0BAAA,CAGA,UAAA,CAGD,kDACC,iCAAA,CACA,uBAAA,CACA,2BAAA,CACA,SAAA,CAID,kDACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAOA,mOACC,oBAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--cell-margin) * -1);\\n\\t// Reverse padding\\n\\tpadding: 0 4px 0 16px !important;\\n\\n\\t// Icon after text\\n\\t.button-vue__wrapper {\\n\\t\\tflex-direction: row-reverse;\\n\\t\\t// Take max inner width for text overflow ellipsis\\n\\t\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.button-vue__icon {\\n\\t\\ttransition-timing-function: linear;\\n\\t\\ttransition-duration: .1s;\\n\\t\\ttransition-property: opacity;\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// Remove when https://github.com/nextcloud/nextcloud-vue/pull/3936 is merged\\n\\t.button-vue__text {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&--active,\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\t.button-vue__icon {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".files-list[data-v-640a8bb8]{--row-height: 55px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: 44px;--icon-preview-size: 32px;display:block;overflow:auto;height:100%}.files-list[data-v-640a8bb8] tbody,.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot{display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-640a8bb8] .vue-recycle-scroller__slot[role=thead]{position:sticky;z-index:10;top:0;height:var(--row-height);background-color:var(--color-main-background)}.files-list[data-v-640a8bb8] tr{position:absolute;display:flex;align-items:center;width:100%;border-bottom:1px solid var(--color-border)}.files-list[data-v-640a8bb8] td,.files-list[data-v-640a8bb8] th{display:flex;align-items:center;flex:0 0 auto;justify-content:left;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-640a8bb8] td span,.files-list[data-v-640a8bb8] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-640a8bb8] .files-list__row-checkbox{justify-content:center}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch label.checkbox-radio-switch__label{width:var(--clickable-area);height:var(--clickable-area);margin:0;padding:calc((var(--clickable-area) - var(--checkbox-size))/2)}.files-list[data-v-640a8bb8] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-640a8bb8] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-right:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-640a8bb8] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-640a8bb8] .files-list__row-icon>span:not(.files-list__row-icon-favorite) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-640a8bb8] .files-list__row-icon-preview{overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center;background-size:contain}.files-list[data-v-640a8bb8] .files-list__row-icon-favorite{position:absolute;top:4px;right:-8px;color:#fc0}.files-list[data-v-640a8bb8] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-640a8bb8] .files-list__row-name a{display:flex;align-items:center;width:100%;height:100%}.files-list[data-v-640a8bb8] .files-list__row-name a:focus .files-list__row-name-text,.files-list[data-v-640a8bb8] .files-list__row-name a:focus-visible .files-list__row-name-text{outline:2px solid var(--color-main-text) !important;border-radius:20px}.files-list[data-v-640a8bb8] .files-list__row-name .files-list__row-name-text{padding:5px 10px;margin-left:-10px}.files-list[data-v-640a8bb8] .files-list__row-actions{width:auto}.files-list[data-v-640a8bb8] .files-list__row-actions~td,.files-list[data-v-640a8bb8] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-640a8bb8] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-640a8bb8] .files-list__row-actions button:not(:hover,:focus,:active) .button-vue__wrapper{color:var(--color-text-maxcontrast)}.files-list[data-v-640a8bb8] .files-list__row-size{justify-content:flex-end;width:calc(var(--row-height)*1.5);color:var(--color-main-text)}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button{padding:0 16px 0 4px !important}.files-list[data-v-640a8bb8] .files-list__row-size .files-list__column-sort-button .button-vue__wrapper{flex-direction:row}.files-list[data-v-640a8bb8] .files-list__row-column-custom{width:calc(var(--row-height)*2)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,kBAAA,CACA,mBAAA,CAEA,wEAAA,CACA,qBAAA,CACA,sBAAA,CACA,yBAAA,CAEA,aAAA,CACA,aAAA,CACA,WAAA,CAIC,4FACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,iBAAA,CAID,qEAEC,eAAA,CACA,UAAA,CACA,KAAA,CACA,wBAAA,CACA,6CAAA,CAGD,gCACC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,UAAA,CACA,2CAAA,CAGD,gEACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,QAAA,CACA,SAAA,CACA,mCAAA,CACA,WAAA,CAKA,0EACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,uDACC,sBAAA,CACA,8EACC,YAAA,CACA,sBAAA,CAEA,iCAAA,CAEA,iHACC,2BAAA,CACA,4BAAA,CACA,QAAA,CACA,8DAAA,CAGD,2GACC,mBAAA,CAKH,mDACC,iBAAA,CACA,YAAA,CACA,gBAAA,CACA,kBAAA,CAEA,iCAAA,CACA,sBAAA,CACA,8BAAA,CACA,WAAA,CAEA,oCAAA,CACA,kCAAA,CAEA,wDACC,0BAAA,CAGD,gGACC,8BAAA,CACA,+BAAA,CAGD,2DACC,eAAA,CACA,8BAAA,CACA,+BAAA,CACA,kCAAA,CACA,2BAAA,CAEA,0BAAA,CACA,uBAAA,CAGD,4DACC,iBAAA,CACA,OAAA,CACA,UAAA,CACA,UAAA,CAIF,mDAEC,eAAA,CAEA,aAAA,CAEA,qDACC,YAAA,CACA,kBAAA,CAEA,UAAA,CACA,WAAA,CAGA,oLAEC,mDAAA,CACA,kBAAA,CAIF,8EAEC,gBAAA,CACA,iBAAA,CAIF,sDACC,UAAA,CAGA,kHAEC,2BAAA,CAIA,+EAEC,kBAAA,CAED,6GAEC,mCAAA,CAKH,mDAEC,wBAAA,CACA,iCAAA,CAEA,4BAAA,CAGA,mFACC,+BAAA,CACA,wGACC,kBAAA,CAKH,4DACC,+BAAA\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 55px;\\n\\t--cell-margin: 14px;\\n\\n\\t--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);\\n\\t--checkbox-size: 24px;\\n\\t--clickable-area: 44px;\\n\\t--icon-preview-size: 32px;\\n\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\n\\t&::v-deep {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody, .vue-recycle-scroller__slot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\t// Necessary for virtual scrolling absolute\\n\\t\\t\\tposition: relative;\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.vue-recycle-scroller__slot[role='thead'] {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: left;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-right: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&> span:not(.files-list__row-icon-favorite) svg {\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 4px;\\n\\t\\t\\t\\tright: -8px;\\n\\t\\t\\t\\tcolor: #ffcc00;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\ta {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text,\\n\\t\\t\\t\\t&:focus-visible .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: 20px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: 5px 10px;\\n\\t\\t\\t\\tmargin-left: -10px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:not(:hover, :focus, :active) .button-vue__wrapper {\\n\\t\\t\\t\\t\\t// Also apply color-text-maxcontrast to non-active button\\n\\t\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-size {\\n\\t\\t\\t// Right align text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t\\twidth: calc(var(--row-height) * 1.5);\\n\\t\\t\\t// opacity varies with the size\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\t\\t// Icon is before text since size is right aligned\\n\\t\\t\\t.files-list__column-sort-button {\\n\\t\\t\\t\\tpadding: 0 16px 0 4px !important;\\n\\t\\t\\t\\t.button-vue__wrapper {\\n\\t\\t\\t\\t\\tflex-direction: row;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-navigation-entry__settings-quota--not-unlimited[data-v-918797b2] .app-navigation-entry__title{margin-top:-4px}.app-navigation-entry__settings-quota progress[data-v-918797b2]{position:absolute;bottom:10px;margin-left:44px;width:calc(100% - 44px - 22px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAIC,mGACC,eAAA,CAGD,gEACC,iBAAA,CACA,WAAA,CACA,gBAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t&--not-unlimited::v-deep .app-navigation-entry__title {\\n\\t\\tmargin-top: -4px;\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: 10px;\\n\\t\\tmargin-left: 44px;\\n\\t\\twidth: calc(100% - 44px - 22px);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".template-picker__item[data-v-5b09ec60]{display:flex}.template-picker__label[data-v-5b09ec60]{display:flex;align-items:center;flex:1 1;flex-direction:column}.template-picker__label[data-v-5b09ec60],.template-picker__label *[data-v-5b09ec60]{cursor:pointer;user-select:none}.template-picker__label[data-v-5b09ec60]::before{display:none !important}.template-picker__preview[data-v-5b09ec60]{display:block;overflow:hidden;flex:1 1;width:var(--width);min-height:var(--height);max-height:var(--height);padding:0;border:var(--border) solid var(--color-border);border-radius:var(--border-radius-large)}input:checked+label>.template-picker__preview[data-v-5b09ec60]{border-color:var(--color-primary-element)}.template-picker__preview--failed[data-v-5b09ec60]{display:flex}.template-picker__image[data-v-5b09ec60]{max-width:100%;background-color:var(--color-main-background);object-fit:cover}.template-picker__preview--failed .template-picker__image[data-v-5b09ec60]{width:calc(var(--margin)*8);margin:auto;background-color:rgba(0,0,0,0) !important;object-fit:initial}.template-picker__title[data-v-5b09ec60]{overflow:hidden;max-width:calc(var(--width) + 4px);padding:var(--margin);white-space:nowrap;text-overflow:ellipsis}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TemplatePreview.vue\"],\"names\":[],\"mappings\":\"AAGC,wCACC,YAAA,CAGD,yCACC,YAAA,CAEA,kBAAA,CACA,QAAA,CACA,qBAAA,CAEA,oFACC,cAAA,CACA,gBAAA,CAGD,iDACC,uBAAA,CAIF,2CACC,aAAA,CACA,eAAA,CAEA,QAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,SAAA,CACA,8CAAA,CACA,wCAAA,CAEA,+DACC,yCAAA,CAGD,mDAEC,YAAA,CAIF,yCACC,cAAA,CACA,6CAAA,CAEA,gBAAA,CAID,2EACC,2BAAA,CAEA,WAAA,CACA,yCAAA,CAEA,kBAAA,CAGD,yCACC,eAAA,CAEA,kCAAA,CACA,qBAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n\\n.template-picker {\\n\\t&__item {\\n\\t\\tdisplay: flex;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: flex;\\n\\t\\t// Align in the middle of the grid\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: none !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: block;\\n\\t\\toverflow: hidden;\\n\\t\\t// Stretch so all entries are the same width\\n\\t\\tflex: 1 1;\\n\\t\\twidth: var(--width);\\n\\t\\tmin-height: var(--height);\\n\\t\\tmax-height: var(--height);\\n\\t\\tpadding: 0;\\n\\t\\tborder: var(--border) solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\tinput:checked + label > & {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\n\\t\\t&--failed {\\n\\t\\t\\t// Make sure to properly center fallback icon\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\tmax-width: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t// Failed preview, fallback to mime icon\\n\\t&__preview--failed &__image {\\n\\t\\twidth: calc(var(--margin) * 8);\\n\\t\\t// Center mime icon\\n\\t\\tmargin: auto;\\n\\t\\tbackground-color: transparent !important;\\n\\n\\t\\tobject-fit: initial;\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\t// also count preview border\\n\\t\\tmax-width: calc(var(--width) + 2*2px);\\n\\t\\tpadding: var(--margin);\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-content[data-v-66068cbb]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}.app-content[data-v-66068cbb]:not(.app-content--hidden)+#app-content{display:none}.files-list__header[data-v-66068cbb]{display:flex;align-content:center;flex:0 0;margin:4px 4px 4px 50px}.files-list__header>*[data-v-66068cbb]{flex:0 0}.files-list__refresh-icon[data-v-66068cbb]{flex:0 0 44px;width:44px;height:44px}.files-list__loading-icon[data-v-66068cbb]{margin:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CAIA,qEACC,YAAA,CAQD,qCACC,YAAA,CACA,oBAAA,CAEA,QAAA,CAEA,uBAAA,CACA,uCAGC,QAAA,CAGF,2CACC,aAAA,CACA,UAAA,CACA,WAAA,CAED,2CACC,WAAA\",\"sourcesContent\":[\"\\n.app-content {\\n\\t// Virtual list needs to be full height and is scrollable\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\tflex-direction: column;\\n\\tmax-height: 100%;\\n\\n\\t// TODO: remove after all legacy views are migrated\\n\\t// Hides the legacy app-content if shown view is not legacy\\n\\t&:not(&--hidden)::v-deep + #app-content {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n$margin: 4px;\\n$navigationToggleSize: 50px;\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-content: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin: $margin $margin $margin $navigationToggleSize;\\n\\t\\t> * {\\n\\t\\t\\t// Do not grow or shrink (horizontally)\\n\\t\\t\\t// Only the breadcrumbs shrinks\\n\\t\\t\\tflex: 0 0;\\n\\t\\t}\\n\\t}\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 44px;\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".app-navigation[data-v-657a978e] .app-navigation-entry-icon{background-repeat:no-repeat;background-position:center}.app-navigation>ul.app-navigation__list[data-v-657a978e]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-657a978e]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Navigation.vue\"],\"names\":[],\"mappings\":\"AAEA,4DACC,2BAAA,CACA,0BAAA,CAGD,yDAEC,gDAAA,CAGD,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA\",\"sourcesContent\":[\"\\n// TODO: remove when https://github.com/nextcloud/nextcloud-vue/pull/3539 is in\\n.app-navigation::v-deep .app-navigation-entry-icon {\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: center;\\n}\\n\\n.app-navigation > ul.app-navigation__list {\\n\\t// Use flex gap value for more elegant spacing\\n\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n}\\n\\n.app-navigation-entry__settings {\\n\\theight: auto !important;\\n\\toverflow: hidden !important;\\n\\tpadding-top: 0 !important;\\n\\t// Prevent shrinking or growing\\n\\tflex: 0 0 auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".setting-link[data-v-76ca5d1f]:hover{text-decoration:underline}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/Settings.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,yBAAA\",\"sourcesContent\":[\"\\n.setting-link:hover {\\n\\ttext-decoration: underline;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".templates-picker__form[data-v-d46f1dc6]{padding:calc(var(--margin)*2);padding-bottom:0}.templates-picker__form h2[data-v-d46f1dc6]{text-align:center;font-weight:bold;margin:var(--margin) 0 calc(var(--margin)*2)}.templates-picker__list[data-v-d46f1dc6]{display:grid;grid-gap:calc(var(--margin)*2);grid-auto-columns:1fr;max-width:calc(var(--fullwidth)*6);grid-template-columns:repeat(auto-fit, var(--fullwidth));grid-auto-rows:1fr;justify-content:center}.templates-picker__buttons[data-v-d46f1dc6]{display:flex;justify-content:end;padding:calc(var(--margin)*2) var(--margin);position:sticky;bottom:0;background-image:linear-gradient(0, var(--gradient-main-background))}.templates-picker__buttons button[data-v-d46f1dc6],.templates-picker__buttons input[type=submit][data-v-d46f1dc6]{height:44px}.templates-picker[data-v-d46f1dc6] .modal-container{position:relative}.templates-picker__loading[data-v-d46f1dc6]{position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;margin:0;background-color:var(--color-main-background-translucent)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/TemplatePicker.vue\"],\"names\":[],\"mappings\":\"AAEC,yCACC,6BAAA,CAEA,gBAAA,CAEA,4CACC,iBAAA,CACA,gBAAA,CACA,4CAAA,CAIF,yCACC,YAAA,CACA,8BAAA,CACA,qBAAA,CAEA,kCAAA,CACA,wDAAA,CAEA,kBAAA,CAEA,sBAAA,CAGD,4CACC,YAAA,CACA,mBAAA,CACA,2CAAA,CACA,eAAA,CACA,QAAA,CACA,oEAAA,CAEA,kHACC,WAAA,CAKF,oDACC,iBAAA,CAGD,4CACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,yDAAA\",\"sourcesContent\":[\"\\n.templates-picker {\\n\\t&__form {\\n\\t\\tpadding: calc(var(--margin) * 2);\\n\\t\\t// Will be handled by the buttons\\n\\t\\tpadding-bottom: 0;\\n\\n\\t\\th2 {\\n\\t\\t\\ttext-align: center;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: var(--margin) 0 calc(var(--margin) * 2);\\n\\t\\t}\\n\\t}\\n\\n\\t&__list {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-gap: calc(var(--margin) * 2);\\n\\t\\tgrid-auto-columns: 1fr;\\n\\t\\t// We want maximum 5 columns. Putting 6 as we don't count the grid gap. So it will always be lower than 6\\n\\t\\tmax-width: calc(var(--fullwidth) * 6);\\n\\t\\tgrid-template-columns: repeat(auto-fit, var(--fullwidth));\\n\\t\\t// Make sure all rows are the same height\\n\\t\\tgrid-auto-rows: 1fr;\\n\\t\\t// Center the columns set\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: end;\\n\\t\\tpadding: calc(var(--margin) * 2) var(--margin);\\n\\t\\tposition: sticky;\\n\\t\\tbottom: 0;\\n\\t\\tbackground-image: linear-gradient(0, var(--gradient-main-background));\\n\\n\\t\\tbutton, input[type='submit'] {\\n\\t\\t\\theight: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Make sure we're relative for the loading emptycontent on top\\n\\t::v-deep .modal-container {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__loading {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tbackground-color: var(--color-main-background-translucent);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n/* @keyframes preview-gradient-fade {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n 100% {\\n opacity: 1;\\n }\\n} */\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry.vue\"],\"names\":[],\"mappings\":\";AA6mBA;;;;;;;;;;GAUA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @author John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (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 Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<Fragment>\\n\\t\\t<td class=\\\"files-list__row-checkbox\\\">\\n\\t\\t\\t<NcCheckboxRadioSwitch v-if=\\\"active\\\"\\n\\t\\t\\t\\t:aria-label=\\\"t('files', 'Select the row for {displayName}', { displayName })\\\"\\n\\t\\t\\t\\t:checked=\\\"selectedFiles\\\"\\n\\t\\t\\t\\t:value=\\\"fileid\\\"\\n\\t\\t\\t\\tname=\\\"selectedFiles\\\"\\n\\t\\t\\t\\t@update:checked=\\\"onSelectionChange\\\" />\\n\\t\\t</td>\\n\\n\\t\\t<!-- Link to file -->\\n\\t\\t<td class=\\\"files-list__row-name\\\">\\n\\t\\t\\t<a ref=\\\"name\\\" v-bind=\\\"linkTo\\\" @click=\\\"execDefaultAction\\\">\\n\\t\\t\\t\\t<!-- Icon or preview -->\\n\\t\\t\\t\\t<span class=\\\"files-list__row-icon\\\">\\n\\t\\t\\t\\t\\t<FolderIcon v-if=\\\"source.type === 'folder'\\\" />\\n\\n\\t\\t\\t\\t\\t<!-- Decorative image, should not be aria documented -->\\n\\t\\t\\t\\t\\t<span v-else-if=\\\"previewUrl && !backgroundFailed\\\"\\n\\t\\t\\t\\t\\t\\tref=\\\"previewImg\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"files-list__row-icon-preview\\\"\\n\\t\\t\\t\\t\\t\\t:style=\\\"{ backgroundImage }\\\" />\\n\\n\\t\\t\\t\\t\\t<span v-else-if=\\\"mimeIconUrl\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"files-list__row-icon-preview files-list__row-icon-preview--mime\\\"\\n\\t\\t\\t\\t\\t\\t:style=\\\"{ backgroundImage: mimeIconUrl }\\\" />\\n\\n\\t\\t\\t\\t\\t<FileIcon v-else />\\n\\n\\t\\t\\t\\t\\t<!-- Favorite icon -->\\n\\t\\t\\t\\t\\t<span v-if=\\\"isFavorite\\\"\\n\\t\\t\\t\\t\\t\\tclass=\\\"files-list__row-icon-favorite\\\"\\n\\t\\t\\t\\t\\t\\t:aria-label=\\\"t('files', 'Favorite')\\\">\\n\\t\\t\\t\\t\\t\\t<StarIcon aria-hidden=\\\"true\\\" :size=\\\"20\\\" />\\n\\t\\t\\t\\t\\t</span>\\n\\t\\t\\t\\t</span>\\n\\n\\t\\t\\t\\t<!-- File name -->\\n\\t\\t\\t\\t<span class=\\\"files-list__row-name-text\\\">{{ displayName }}</span>\\n\\t\\t\\t</a>\\n\\t\\t</td>\\n\\n\\t\\t<!-- Actions -->\\n\\t\\t<td :class=\\\"`files-list__row-actions-${uniqueId}`\\\" class=\\\"files-list__row-actions\\\">\\n\\t\\t\\t<!-- Inline actions -->\\n\\t\\t\\t<!-- TODO: implement CustomElementRender -->\\n\\n\\t\\t\\t<!-- Menu actions -->\\n\\t\\t\\t<NcActions v-if=\\\"active\\\"\\n\\t\\t\\t\\tref=\\\"actionsMenu\\\"\\n\\t\\t\\t\\t:boundaries-element=\\\"boundariesElement\\\"\\n\\t\\t\\t\\t:container=\\\"boundariesElement\\\"\\n\\t\\t\\t\\t:disabled=\\\"source._loading\\\"\\n\\t\\t\\t\\t:force-title=\\\"true\\\"\\n\\t\\t\\t\\t:force-menu=\\\"true\\\"\\n\\t\\t\\t\\t:inline=\\\"enabledInlineActions.length\\\"\\n\\t\\t\\t\\t:open.sync=\\\"openedMenu\\\">\\n\\t\\t\\t\\t<NcActionButton v-for=\\\"action in enabledMenuActions\\\"\\n\\t\\t\\t\\t\\t:key=\\\"action.id\\\"\\n\\t\\t\\t\\t\\t:class=\\\"'files-list__row-action-' + action.id\\\"\\n\\t\\t\\t\\t\\t@click=\\\"onActionClick(action)\\\">\\n\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t<NcLoadingIcon v-if=\\\"loading === action.id\\\" :size=\\\"18\\\" />\\n\\t\\t\\t\\t\\t\\t<CustomSvgIconRender v-else :svg=\\\"action.iconSvgInline([source], currentView)\\\" />\\n\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t{{ action.displayName([source], currentView) }}\\n\\t\\t\\t\\t</NcActionButton>\\n\\t\\t\\t</NcActions>\\n\\t\\t</td>\\n\\n\\t\\t<!-- Size -->\\n\\t\\t<td v-if=\\\"isSizeAvailable\\\"\\n\\t\\t\\t:style=\\\"{ opacity: sizeOpacity }\\\"\\n\\t\\t\\tclass=\\\"files-list__row-size\\\"\\n\\t\\t\\t@click=\\\"openDetailsIfAvailable\\\">\\n\\t\\t\\t<span>{{ size }}</span>\\n\\t\\t</td>\\n\\n\\t\\t<!-- View columns -->\\n\\t\\t<td v-for=\\\"column in columns\\\"\\n\\t\\t\\t:key=\\\"column.id\\\"\\n\\t\\t\\t:class=\\\"`files-list__row-${currentView?.id}-${column.id}`\\\"\\n\\t\\t\\tclass=\\\"files-list__row-column-custom\\\"\\n\\t\\t\\t@click=\\\"openDetailsIfAvailable\\\">\\n\\t\\t\\t<CustomElementRender v-if=\\\"active\\\"\\n\\t\\t\\t\\t:current-view=\\\"currentView\\\"\\n\\t\\t\\t\\t:render=\\\"column.render\\\"\\n\\t\\t\\t\\t:source=\\\"source\\\" />\\n\\t\\t</td>\\n\\t</Fragment>\\n</template>\\n\\n<script lang='ts'>\\nimport { debounce } from 'debounce'\\nimport { formatFileSize } from '@nextcloud/files'\\nimport { Fragment } from 'vue-frag'\\nimport { join } from 'path'\\nimport { showError, showSuccess } from '@nextcloud/dialogs'\\nimport { translate } from '@nextcloud/l10n'\\nimport CancelablePromise from 'cancelable-promise'\\nimport FileIcon from 'vue-material-design-icons/File.vue'\\nimport FolderIcon from 'vue-material-design-icons/Folder.vue'\\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\\nimport NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'\\nimport StarIcon from 'vue-material-design-icons/Star.vue'\\nimport Vue from 'vue'\\n\\nimport { ACTION_DETAILS } from '../actions/sidebarAction.ts'\\nimport { getFileActions } from '../services/FileAction.ts'\\nimport { hashCode } from '../utils/hashUtils.ts'\\nimport { isCachedPreview } from '../services/PreviewService.ts'\\nimport { useActionsMenuStore } from '../store/actionsmenu.ts'\\nimport { useFilesStore } from '../store/files.ts'\\nimport { useKeyboardStore } from '../store/keyboard.ts'\\nimport { useSelectionStore } from '../store/selection.ts'\\nimport { useUserConfigStore } from '../store/userconfig.ts'\\nimport CustomElementRender from './CustomElementRender.vue'\\nimport CustomSvgIconRender from './CustomSvgIconRender.vue'\\nimport logger from '../logger.js'\\n\\n// The registered actions list\\nconst actions = getFileActions()\\n\\nexport default Vue.extend({\\n\\tname: 'FileEntry',\\n\\n\\tcomponents: {\\n\\t\\tCustomElementRender,\\n\\t\\tCustomSvgIconRender,\\n\\t\\tFileIcon,\\n\\t\\tFolderIcon,\\n\\t\\tFragment,\\n\\t\\tNcActionButton,\\n\\t\\tNcActions,\\n\\t\\tNcCheckboxRadioSwitch,\\n\\t\\tNcLoadingIcon,\\n\\t\\tStarIcon,\\n\\t},\\n\\n\\tprops: {\\n\\t\\tactive: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t\\tisSizeAvailable: {\\n\\t\\t\\ttype: Boolean,\\n\\t\\t\\tdefault: false,\\n\\t\\t},\\n\\t\\tsource: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tindex: {\\n\\t\\t\\ttype: Number,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tnodes: {\\n\\t\\t\\ttype: Array,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tfilesListWidth: {\\n\\t\\t\\ttype: Number,\\n\\t\\t\\tdefault: 0,\\n\\t\\t},\\n\\t},\\n\\n\\tsetup() {\\n\\t\\tconst actionsMenuStore = useActionsMenuStore()\\n\\t\\tconst filesStore = useFilesStore()\\n\\t\\tconst keyboardStore = useKeyboardStore()\\n\\t\\tconst selectionStore = useSelectionStore()\\n\\t\\tconst userConfigStore = useUserConfigStore()\\n\\t\\treturn {\\n\\t\\t\\tactionsMenuStore,\\n\\t\\t\\tfilesStore,\\n\\t\\t\\tkeyboardStore,\\n\\t\\t\\tselectionStore,\\n\\t\\t\\tuserConfigStore,\\n\\t\\t}\\n\\t},\\n\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tbackgroundFailed: false,\\n\\t\\t\\tbackgroundImage: '',\\n\\t\\t\\tboundariesElement: document.querySelector('.app-content > .files-list'),\\n\\t\\t\\tloading: '',\\n\\t\\t}\\n\\t},\\n\\n\\tcomputed: {\\n\\t\\tuserConfig() {\\n\\t\\t\\treturn this.userConfigStore.userConfig\\n\\t\\t},\\n\\n\\t\\tcurrentView() {\\n\\t\\t\\treturn this.$navigation.active\\n\\t\\t},\\n\\t\\tcolumns() {\\n\\t\\t\\t// Hide columns if the list is too small\\n\\t\\t\\tif (this.filesListWidth < 512) {\\n\\t\\t\\t\\treturn []\\n\\t\\t\\t}\\n\\t\\t\\treturn this.currentView?.columns || []\\n\\t\\t},\\n\\n\\t\\tdir() {\\n\\t\\t\\t// Remove any trailing slash but leave root slash\\n\\t\\t\\treturn (this.$route?.query?.dir || '/').replace(/^(.+)\\\\/$/, '$1')\\n\\t\\t},\\n\\t\\tfileid() {\\n\\t\\t\\treturn this.source?.fileid?.toString?.()\\n\\t\\t},\\n\\t\\tdisplayName() {\\n\\t\\t\\treturn this.source.attributes.displayName\\n\\t\\t\\t\\t|| this.source.basename\\n\\t\\t},\\n\\n\\t\\tsize() {\\n\\t\\t\\tconst size = parseInt(this.source.size, 10) || 0\\n\\t\\t\\tif (typeof size !== 'number' || size < 0) {\\n\\t\\t\\t\\treturn this.t('files', 'Pending')\\n\\t\\t\\t}\\n\\t\\t\\treturn formatFileSize(size, true)\\n\\t\\t},\\n\\t\\tsizeOpacity() {\\n\\t\\t\\tconst size = parseInt(this.source.size, 10) || 0\\n\\t\\t\\tif (!size || size < 0) {\\n\\t\\t\\t\\treturn 1\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Whatever theme is active, the contrast will pass WCAG AA\\n\\t\\t\\t// with color main text over main background and an opacity of 0.7\\n\\t\\t\\tconst minOpacity = 0.7\\n\\t\\t\\tconst maxOpacitySize = 10 * 1024 * 1024\\n\\t\\t\\treturn minOpacity + (1 - minOpacity) * Math.pow((this.source.size / maxOpacitySize), 2)\\n\\t\\t},\\n\\n\\t\\tlinkTo() {\\n\\t\\t\\tif (this.source.type === 'folder') {\\n\\t\\t\\t\\tconst to = { ...this.$route, query: { dir: join(this.dir, this.source.basename) } }\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tis: 'router-link',\\n\\t\\t\\t\\t\\ttitle: this.t('files', 'Open folder {name}', { name: this.displayName }),\\n\\t\\t\\t\\t\\tto,\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\tconst action = this.enabledDefaultActions[0]\\n\\t\\t\\t\\tconst displayName = action.displayName([this.source], this.currentView)\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\ttitle: displayName,\\n\\t\\t\\t\\t\\trole: 'button',\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn {\\n\\t\\t\\t\\thref: this.source.source,\\n\\t\\t\\t\\t// TODO: Use first action title ?\\n\\t\\t\\t\\ttitle: this.t('files', 'Download file {name}', { name: this.displayName }),\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tselectedFiles() {\\n\\t\\t\\treturn this.selectionStore.selected\\n\\t\\t},\\n\\t\\tisSelected() {\\n\\t\\t\\treturn this.selectedFiles.includes(this.source?.fileid?.toString?.())\\n\\t\\t},\\n\\n\\t\\tcropPreviews() {\\n\\t\\t\\treturn this.userConfig.crop_image_previews\\n\\t\\t},\\n\\t\\tpreviewUrl() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst url = new URL(window.location.origin + this.source.attributes.previewUrl)\\n\\t\\t\\t\\t// Request tiny previews\\n\\t\\t\\t\\turl.searchParams.set('x', '32')\\n\\t\\t\\t\\turl.searchParams.set('y', '32')\\n\\t\\t\\t\\t// Handle cropping\\n\\t\\t\\t\\turl.searchParams.set('a', this.cropPreviews === true ? '0' : '1')\\n\\t\\t\\t\\treturn url.href\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\treturn null\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tmimeIconUrl() {\\n\\t\\t\\tconst mimeType = this.source.mime || 'application/octet-stream'\\n\\t\\t\\tconst mimeIconUrl = window.OC?.MimeType?.getIconUrl?.(mimeType)\\n\\t\\t\\tif (mimeIconUrl) {\\n\\t\\t\\t\\treturn `url(${mimeIconUrl})`\\n\\t\\t\\t}\\n\\t\\t\\treturn ''\\n\\t\\t},\\n\\n\\t\\tenabledActions() {\\n\\t\\t\\treturn actions\\n\\t\\t\\t\\t.filter(action => !action.enabled || action.enabled([this.source], this.currentView))\\n\\t\\t\\t\\t.sort((a, b) => (a.order || 0) - (b.order || 0))\\n\\t\\t},\\n\\t\\tenabledInlineActions() {\\n\\t\\t\\tif (this.filesListWidth < 768) {\\n\\t\\t\\t\\treturn []\\n\\t\\t\\t}\\n\\t\\t\\treturn this.enabledActions.filter(action => action?.inline?.(this.source, this.currentView))\\n\\t\\t},\\n\\t\\tenabledMenuActions() {\\n\\t\\t\\tif (this.filesListWidth < 768) {\\n\\t\\t\\t\\t// If we have a default action, do not render the first one\\n\\t\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\t\\treturn this.enabledActions.slice(1)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn this.enabledActions\\n\\t\\t\\t}\\n\\n\\t\\t\\tconst actions = [\\n\\t\\t\\t\\t...this.enabledInlineActions,\\n\\t\\t\\t\\t...this.enabledActions.filter(action => !action.inline),\\n\\t\\t\\t]\\n\\n\\t\\t\\t// If we have a default action, do not render the first one\\n\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\treturn actions.slice(1)\\n\\t\\t\\t}\\n\\n\\t\\t\\treturn actions\\n\\t\\t},\\n\\t\\tenabledDefaultActions() {\\n\\t\\t\\treturn [\\n\\t\\t\\t\\t...this.enabledActions.filter(action => action.default),\\n\\t\\t\\t]\\n\\t\\t},\\n\\t\\topenedMenu: {\\n\\t\\t\\tget() {\\n\\t\\t\\t\\treturn this.actionsMenuStore.opened === this.uniqueId\\n\\t\\t\\t},\\n\\t\\t\\tset(opened) {\\n\\t\\t\\t\\tthis.actionsMenuStore.opened = opened ? this.uniqueId : null\\n\\t\\t\\t},\\n\\t\\t},\\n\\n\\t\\tuniqueId() {\\n\\t\\t\\treturn hashCode(this.source.source)\\n\\t\\t},\\n\\n\\t\\tisFavorite() {\\n\\t\\t\\treturn this.source.attributes.favorite === 1\\n\\t\\t},\\n\\t},\\n\\n\\twatch: {\\n\\t\\tactive(active, before) {\\n\\t\\t\\tif (active === false && before === true) {\\n\\t\\t\\t\\tthis.resetState()\\n\\n\\t\\t\\t\\t// When the row is not active anymore\\n\\t\\t\\t\\t// remove the display from the row to prevent\\n\\t\\t\\t\\t// keyboard interaction with it.\\n\\t\\t\\t\\tthis.$el.parentNode.style.display = 'none'\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Restore default tabindex\\n\\t\\t\\tthis.$el.parentNode.style.display = ''\\n\\t\\t},\\n\\n\\t\\t/**\\n\\t\\t * When the source changes, reset the preview\\n\\t\\t * and fetch the new one.\\n\\t\\t */\\n\\t\\tpreviewUrl() {\\n\\t\\t\\tthis.clearImg()\\n\\t\\t\\tthis.debounceIfNotCached()\\n\\t\\t},\\n\\t},\\n\\n\\t/**\\n\\t * The row is mounted once and reused as we scroll.\\n\\t */\\n\\tmounted() {\\n\\t\\t// ⚠ Init the debounce function on mount and\\n\\t\\t// not when the module is imported to\\n\\t\\t// avoid sharing between recycled components\\n\\t\\tthis.debounceGetPreview = debounce(function() {\\n\\t\\t\\tthis.fetchAndApplyPreview()\\n\\t\\t}, 150, false)\\n\\n\\t\\t// Fetch the preview on init\\n\\t\\tthis.debounceIfNotCached()\\n\\n\\t\\t// Right click watcher on tr\\n\\t\\tthis.$el.parentNode?.addEventListener?.('contextmenu', this.onRightClick)\\n\\t},\\n\\n\\tbeforeDestroy() {\\n\\t\\tthis.resetState()\\n\\t},\\n\\n\\tmethods: {\\n\\t\\tasync debounceIfNotCached() {\\n\\t\\t\\tif (!this.previewUrl) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Check if we already have this preview cached\\n\\t\\t\\tconst isCached = await isCachedPreview(this.previewUrl)\\n\\t\\t\\tif (isCached) {\\n\\t\\t\\t\\tthis.backgroundImage = `url(${this.previewUrl})`\\n\\t\\t\\t\\tthis.backgroundFailed = false\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// We don't have this preview cached or it expired, requesting it\\n\\t\\t\\tthis.debounceGetPreview()\\n\\t\\t},\\n\\n\\t\\tfetchAndApplyPreview() {\\n\\t\\t\\t// Ignore if no preview\\n\\t\\t\\tif (!this.previewUrl) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If any image is being processed, reset it\\n\\t\\t\\tif (this.previewPromise) {\\n\\t\\t\\t\\tthis.clearImg()\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Store the promise to be able to cancel it\\n\\t\\t\\tthis.previewPromise = new CancelablePromise((resolve, reject, onCancel) => {\\n\\t\\t\\t\\tconst img = new Image()\\n\\t\\t\\t\\t// If active, load the preview with higher priority\\n\\t\\t\\t\\timg.fetchpriority = this.active ? 'high' : 'auto'\\n\\t\\t\\t\\timg.onload = () => {\\n\\t\\t\\t\\t\\tthis.backgroundImage = `url(${this.previewUrl})`\\n\\t\\t\\t\\t\\tthis.backgroundFailed = false\\n\\t\\t\\t\\t\\tresolve(img)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg.onerror = () => {\\n\\t\\t\\t\\t\\tthis.backgroundFailed = true\\n\\t\\t\\t\\t\\treject(img)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\timg.src = this.previewUrl\\n\\n\\t\\t\\t\\t// Image loading has been canceled\\n\\t\\t\\t\\tonCancel(() => {\\n\\t\\t\\t\\t\\timg.onerror = null\\n\\t\\t\\t\\t\\timg.onload = null\\n\\t\\t\\t\\t\\timg.src = ''\\n\\t\\t\\t\\t})\\n\\t\\t\\t})\\n\\t\\t},\\n\\n\\t\\tresetState() {\\n\\t\\t\\t// Reset loading state\\n\\t\\t\\tthis.loading = ''\\n\\n\\t\\t\\t// Reset the preview\\n\\t\\t\\tthis.clearImg()\\n\\n\\t\\t\\t// Close menu\\n\\t\\t\\tthis.openedMenu = false\\n\\t\\t},\\n\\n\\t\\tclearImg() {\\n\\t\\t\\tthis.backgroundImage = ''\\n\\t\\t\\tthis.backgroundFailed = false\\n\\n\\t\\t\\tif (this.previewPromise) {\\n\\t\\t\\t\\tthis.previewPromise.cancel()\\n\\t\\t\\t\\tthis.previewPromise = null\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tasync onActionClick(action) {\\n\\t\\t\\tconst displayName = action.displayName([this.source], this.currentView)\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// Set the loading marker\\n\\t\\t\\t\\tthis.loading = action.id\\n\\t\\t\\t\\tVue.set(this.source, '_loading', true)\\n\\n\\t\\t\\t\\tconst success = await action.exec(this.source, this.currentView, this.dir)\\n\\n\\t\\t\\t\\t// If the action returns null, we stay silent\\n\\t\\t\\t\\tif (success === null) {\\n\\t\\t\\t\\t\\treturn\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\tif (success) {\\n\\t\\t\\t\\t\\tshowSuccess(this.t('files', '\\\"{displayName}\\\" action executed successfully', { displayName }))\\n\\t\\t\\t\\t\\treturn\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tshowError(this.t('files', '\\\"{displayName}\\\" action failed', { displayName }))\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tlogger.error('Error while executing action', { action, e })\\n\\t\\t\\t\\tshowError(this.t('files', '\\\"{displayName}\\\" action failed', { displayName }))\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\t// Reset the loading marker\\n\\t\\t\\t\\tthis.loading = ''\\n\\t\\t\\t\\tVue.set(this.source, '_loading', false)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\texecDefaultAction(event) {\\n\\t\\t\\t// Do not execute the default action on the folder, navigate instead\\n\\t\\t\\tif (this.source.type === 'folder') {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tif (this.enabledDefaultActions.length > 0) {\\n\\t\\t\\t\\tevent.preventDefault()\\n\\t\\t\\t\\tevent.stopPropagation()\\n\\t\\t\\t\\t// Execute the first default action if any\\n\\t\\t\\t\\tthis.enabledDefaultActions[0].exec(this.source, this.currentView, this.dir)\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\topenDetailsIfAvailable(event) {\\n\\t\\t\\tconst detailsAction = this.enabledDefaultActions.find(action => action.id === ACTION_DETAILS)\\n\\t\\t\\tif (detailsAction) {\\n\\t\\t\\t\\tevent.preventDefault()\\n\\t\\t\\t\\tevent.stopPropagation()\\n\\t\\t\\t\\tdetailsAction.exec(this.source, this.currentView)\\n\\t\\t\\t}\\n\\t\\t},\\n\\n\\t\\tonSelectionChange(selection) {\\n\\t\\t\\tconst newSelectedIndex = this.index\\n\\t\\t\\tconst lastSelectedIndex = this.selectionStore.lastSelectedIndex\\n\\n\\t\\t\\t// Get the last selected and select all files in between\\n\\t\\t\\tif (this.keyboardStore?.shiftKey && lastSelectedIndex !== null) {\\n\\t\\t\\t\\tconst isAlreadySelected = this.selectedFiles.includes(this.fileid)\\n\\n\\t\\t\\t\\tconst start = Math.min(newSelectedIndex, lastSelectedIndex)\\n\\t\\t\\t\\tconst end = Math.max(lastSelectedIndex, newSelectedIndex)\\n\\n\\t\\t\\t\\tconst lastSelection = this.selectionStore.lastSelection\\n\\t\\t\\t\\tconst filesToSelect = this.nodes\\n\\t\\t\\t\\t\\t.map(file => file.fileid?.toString?.())\\n\\t\\t\\t\\t\\t.slice(start, end + 1)\\n\\n\\t\\t\\t\\t// If already selected, update the new selection _without_ the current file\\n\\t\\t\\t\\tconst selection = [...lastSelection, ...filesToSelect]\\n\\t\\t\\t\\t\\t.filter(fileId => !isAlreadySelected || fileId !== this.fileid)\\n\\n\\t\\t\\t\\tlogger.debug('Shift key pressed, selecting all files in between', { start, end, filesToSelect, isAlreadySelected })\\n\\t\\t\\t\\t// Keep previous lastSelectedIndex to be use for further shift selections\\n\\t\\t\\t\\tthis.selectionStore.set(selection)\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tlogger.debug('Updating selection', { selection })\\n\\t\\t\\tthis.selectionStore.set(selection)\\n\\t\\t\\tthis.selectionStore.setLastIndex(newSelectedIndex)\\n\\t\\t},\\n\\n\\t\\t// Open the actions menu on right click\\n\\t\\tonRightClick(event) {\\n\\t\\t\\t// If already opened, fallback to default browser\\n\\t\\t\\tif (this.openedMenu) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If the clicked row is in the selection, open global menu\\n\\t\\t\\tconst isMoreThanOneSelected = this.selectedFiles.length > 1\\n\\t\\t\\tthis.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId\\n\\n\\t\\t\\t// Prevent any browser defaults\\n\\t\\t\\tevent.preventDefault()\\n\\t\\t\\tevent.stopPropagation()\\n\\t\\t},\\n\\n\\t\\tt: translate,\\n\\t\\tformatFileSize,\\n\\t},\\n})\\n</script>\\n\\n<style scoped lang='scss'>\\n/* Hover effect on tbody lines only */\\ntr {\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n}\\n\\n/* Preview not loaded animation effect */\\n.files-list__row-icon-preview:not([style*='background']) {\\n background: var(--color-loading-dark);\\n\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n}\\n</style>\\n\\n<style>\\n/* @keyframes preview-gradient-fade {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.5;\\n }\\n 100% {\\n opacity: 1;\\n }\\n} */\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2181;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2181: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(73500)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getCurrentDirectory","_OCA","_OCA$Files","_OCA$Files$App","_OCA$Files$App$curren","currentDirInfo","OCA","Files","App","currentFileList","dirInfo","path","name","concat","replace","previewWidth","inheritAttrs","props","basename","type","String","required","checked","Boolean","default","fileid","Number","filename","previewUrl","hasPreview","mime","ratio","data","failedPreview","computed","nameWithoutExt","indexOf","split","slice","join","id","realPreviewUrl","mimeIcon","getCurrentUser","generateUrl","document","getElementById","value","pathSections","startsWith","relativePath","forEach","section","encodeURIComponent","encodeFilePath","OC","MimeType","getIconUrl","methods","onCheck","$emit","onFailure","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","domProps","on","_v","class","_s","components","NcEmptyContent","NcModal","TemplatePreview","logger","Object","loading","opened","provider","emptyTemplate","_this$provider","_this$provider2","t","mimetypes","selectedTemplate","templates","find","template","style","width","margin","border","Math","round","fetchedProvider","async","axios","generateOcsUrl","ocs","getTemplates","app","label","Error","length","onSubmit","close","currentDirectory","fileList","_this$provider3","_this$provider4","debug","extension","_this$selectedTemplat","_this$selectedTemplat2","fileInfo","filePath","templatePath","templateType","createFromTemplate","normalize","addAndFetchFileInfo","then","status","model","FileInfoModel","filesClient","fileAction","fileActions","getDefaultFileAction","PERMISSION_ALL","action","$file","findFileEl","dir","fileInfoModel","error","console","showError","$event","preventDefault","stopPropagation","apply","arguments","_b","_l","key","_e","getLoggerBuilder","setApp","detectUser","build","Vue","n","TemplatePickerRoot","createElement","body","appendChild","loadState","templatesPath","TemplatePicker","TemplatePickerView","propsData","$mount","window","addEventListener","initTemplatesPlugin","attach","menu","addMenuEntry","displayName","templateName","iconClass","fileType","actionLabel","actionHandler","initTemplatesFolder","removeMenuEntry","Plugins","register","index","newTemplatePlugin","open","response","copySystemTemplates","changeDirectory","template_path","FilesPlugin","subscribe","_ref","query","setFilter","FileAction","constructor","validateAction","_action","iconSvgInline","enabled","exec","execBatch","order","inline","renderInline","registerFileAction","_nc_fileactions","search","push","getFileActions","nodes","view","TrashCan","map","node","permissions","every","permission","Permission","source","emit","Promise","all","ACTION_DETAILS","InformationSvg","files","_window","_window$OCA","_window$OCA$Files","Sidebar","some","_node$root","root","_window2","_window2$OCA","_window2$OCA$Files","_window2$OCA$Files$Si","_window2$OCA$Files$Si2","call","useFilesStore","fileStore","defineStore","state","roots","getters","getNode","getNodes","ids","filter","getRoot","service","actions","updateNodes","reduce","acc","deleteNodes","setRoot","onDeletedNode","store","_initialized","usePathsStore","pathsStore","paths","getPath","addPath","payload","useSelectionStore","selected","lastSelection","lastSelectedIndex","set","selection","undefined","setLastIndex","reset","viewConfig","useViewConfigStore","getConfig","onUpdate","setSortingBy","update","toggleSortingDirection","newDirection","sorting_direction","viewConfigStore","Home","NcBreadcrumbs","NcBreadcrumb","setup","filesStore","currentView","$navigation","active","dirs","sections","to","$route","exact","getDirDisplayName","getNodeFromId","getFileIdFromPath","_this$currentView","_node$attributes","fileId","attributes","onClick","_to$query","ariaLabel","_section$to","_section$to$query","_setupProxy","nativeOn","scopedSlots","_u","fn","proxy","useActionsMenuStore","userConfig","show_hidden","crop_image_previews","useUserConfigStore","userConfigStore","render","Function","element","watch","$el","replaceWith","mounted","svg","innerHTML","sanitize","CustomElementRender","CustomSvgIconRender","FileIcon","FolderIcon","Fragment","NcActionButton","NcActions","NcCheckboxRadioSwitch","NcLoadingIcon","StarIcon","isSizeAvailable","Array","filesListWidth","actionsMenuStore","keyboardStore","altKey","ctrlKey","metaKey","shiftKey","onEvent","event","useKeyboardStore","selectionStore","backgroundFailed","backgroundImage","boundariesElement","querySelector","columns","_this$$route","_this$$route$query","_this$source","_this$source$fileid","_this$source$fileid$t","toString","size","parseInt","formatFileSize","sizeOpacity","pow","linkTo","is","title","enabledDefaultActions","role","href","selectedFiles","isSelected","_this$source2","_this$source2$fileid","_this$source2$fileid$","includes","cropPreviews","url","URL","location","origin","searchParams","e","mimeIconUrl","_window$OC","_window$OC$MimeType","_window$OC$MimeType$g","mimeType","enabledActions","sort","a","b","enabledInlineActions","_action$inline","enabledMenuActions","openedMenu","get","uniqueId","charCodeAt","isFavorite","favorite","before","resetState","parentNode","display","clearImg","debounceIfNotCached","_this$$el$parentNode","_this$$el$parentNode$","debounceGetPreview","debounce","fetchAndApplyPreview","onRightClick","beforeDestroy","caches","cache","match","previewPromise","CancelablePromise","resolve","reject","onCancel","img","Image","fetchpriority","onload","onerror","src","cancel","success","showSuccess","execDefaultAction","openDetailsIfAvailable","detailsAction","onSelectionChange","_this$keyboardStore","newSelectedIndex","isAlreadySelected","start","min","end","max","filesToSelect","file","_file$fileid","_file$fileid$toString","isMoreThanOneSelected","translate","ref","_loading","onActionClick","opacity","column","_vm$currentView","summary","currentFolder","_this$currentView2","totalSize","_this$currentFolder","total","classForColumn","_column$summary","created","fileListEl","$resizeObserver","ResizeObserver","entries","target","contentRect","observe","disconnect","mixins","filesListWidthMixin","selectedNodes","areSomeNodesLoading","inlineActions","selectionIds","results","result","failedIds","mapState","sortingMode","_this$getConfig","sorting_mode","defaultSortKey","isAscSorting","_this$getConfig2","toggleSortBy","MenuDown","MenuUp","NcButton","filesSortingMixin","mode","sortAriaLabel","direction","slot","FilesListHeaderButton","FilesListHeaderActions","selectAllBind","isNoneSelected","isSomeSelected","isAllSelected","indeterminate","onToggleAll","RecycleScroller","FileEntry","FilesListHeader","FilesListFooter","summaryFile","count","translatePlural","summaryFolder","slots","querySelectorAll","setAttribute","getFileId","item","caption","_defineProperty","isValidNavigation","isUniqueNavigation","_views","message","legacy","remove","findIndex","splice","views","setActive","_currentView","getContents","icon","isSvg","isValidColumn","emptyView","parent","sticky","expanded","BreadCrumbs","FilesListVirtual","NcAppContent","promise","dirContents","_this$currentFolder2","customColumn","_children","reverse","orderBy","v","isEmptyDir","isRefreshing","toPreviousDir","newView","oldView","fetchContent","newDir","oldDir","_this$$refs","_this$$refs$filesList","$refs","filesListVirtual","scrollTop","_this$currentView3","_this$promise","folder","contents","_vm$currentView2","directives","rawName","expression","ChartPie","NcAppNavigationItem","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","_this$storageStats","_this$storageStats2","_this$storageStats3","usedQuotaByte","used","quotaByte","quota","storageStatsTooltip","relative","beforeMount","setInterval","throttleUpdateStorageStats","debounceUpdateStorageStats","updateStorageStats","throttle","_response$data","el","Clipboard","NcAppSettingsDialog","NcAppSettingsSection","NcInputField","Setting","_window$OCA$Files$Set","_getCurrentUser","settings","Settings","webdavUrl","generateRemoteUrl","uid","webdavDocs","appPasswordUrl","webdavUrlCopied","setting","onClose","setConfig","select","navigator","clipboard","writeText","setTimeout","copyCloudId","Cog","NavigationQuota","NcAppNavigation","NcIconSvgWrapper","SettingsModal","Navigation","settingsOpened","currentViewId","_this$$route$params","params","parentViews","childViews","list","showView","onLegacyNavigationChanged","_window$OCA$Files$Sid","_window$OCA$Files$Sid2","newAppContent","classList","add","Util","History","parseUrlQuery","itemId","jQuery","trigger","Event","heading","headingEl","textContent","setPageHeading","$router","onToggleExpand","isExpanded","_this$viewConfigStore","generateToNavigation","openSettings","onSettingsClose","child","registerLegacyView","classes","OCP","Router","base","linkActiveClass","routes","alias","stringifyQuery","queryString","_window$OCP$Files","router","_router","goTo","goToRoute","assign","PiniaVuePlugin","pinia","createPinia","NavigationService","_settings","_name","_el","_open","_close","NavigationView","FilesListView","legacyViews","values","sublist","subview","processLegacyFilesViews","noRewrite","registration","serviceWorker","scope","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","r","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","children","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js index d8ab966c60f..64419e12c14 100644 --- a/dist/files_sharing-files_sharing_tab.js +++ b/dist/files_sharing-files_sharing_tab.js @@ -1,3 +1,3 @@ /*! For license information please see files_sharing-files_sharing_tab.js.LICENSE.txt */ -(()=>{"use strict";var e,s={19258:(e,s,i)=>{var a=i(20144),r=i(31352),n=i(1794),o=i(79753),h=i(75925),l=i.n(h),c=i(4820),d=i(79954);class u{get isPublicUploadEnabled(){return document.getElementsByClassName("files-filestable")[0]&&"yes"===document.getElementsByClassName("files-filestable")[0].dataset.allowPublicUpload}get isShareWithLinkAllowed(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}get federatedShareDocLink(){return OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultRemoteExpireDateEnforced(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnabled(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===OC.appConfig.core.remoteShareAllowed}get isMailShareAllowed(){var e,t,s;const i=OC.getCapabilities();return void 0!==(null==i||null===(e=i.files_sharing)||void 0===e?void 0:e.sharebymail)&&!0===(null==i||null===(t=i.files_sharing)||void 0===t||null===(s=t.public)||void 0===s?void 0:s.enabled)}get defaultExpireDate(){return OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}get shouldAlwaysShowUnique(){var e,t;return!0===(null===(e=OC.getCapabilities().files_sharing)||void 0===e||null===(t=e.sharee)||void 0===t?void 0:t.always_show_unique)}get allowGroupSharing(){return!0===OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){const e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}var p=i(41922),f=i(25108);class g{constructor(e){var t,s,i,a;if(s=this,a=void 0,(i=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(i="_share"))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(t){f.warn('Could not parse share attributes returned by server: "'+e.attributes+'"')}e.attributes=null!==(t=e.attributes)&&void 0!==t?t:[],this._share=e}get state(){return this._share}get id(){return this._share.id}get type(){return this._share.share_type}get permissions(){return this._share.permissions}get attributes(){return this._share.attributes}set permissions(e){this._share.permissions=e}get owner(){return this._share.uid_owner}get ownerDisplayName(){return this._share.displayname_owner}get shareWith(){return this._share.share_with}get shareWithDisplayName(){return this._share.share_with_displayname||this._share.share_with}get shareWithDisplayNameUnique(){return this._share.share_with_displayname_unique||this._share.share_with}get shareWithLink(){return this._share.share_with_link}get shareWithAvatar(){return this._share.share_with_avatar}get uidFileOwner(){return this._share.uid_file_owner}get displaynameFileOwner(){return this._share.displayname_file_owner||this._share.uid_file_owner}get createdTime(){return this._share.stime}get expireDate(){return this._share.expiration}set expireDate(e){this._share.expiration=e}get token(){return this._share.token}get note(){return this._share.note}set note(e){this._share.note=e}get label(){return this._share.label}set label(e){this._share.label=e}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download}set hideDownload(e){this._share.hide_download=!0===e}get password(){return this._share.password}set password(e){this._share.password=e}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(e){this._share.password_expiration_time=e}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(e){this._share.send_password_by_talk=e}get path(){return this._share.path}get itemType(){return this._share.item_type}get mimetype(){return this._share.mimetype}get fileSource(){return this._share.file_source}get fileTarget(){return this._share.file_target}get fileParent(){return this._share.file_parent}get hasReadPermission(){return!!(this.permissions&OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&OC.PERMISSION_SHARE)}get hasDownloadPermission(){for(const e in this._share.attributes){const t=this._share.attributes[e];if("permissions"===t.scope&&"download"===t.key)return t.enabled}return!0}set hasDownloadPermission(e){this.setAttribute("permissions","download",!!e)}setAttribute(e,t,s){const i={scope:e,key:t,enabled:s};for(const e in this._share.attributes){const t=this._share.attributes[e];if(t.scope===i.scope&&t.key===i.key)return void(this._share.attributes[e]=i)}this._share.attributes.push(i)}get canEdit(){return!0===this._share.can_edit}get canDelete(){return!0===this._share.can_delete}get viaFileid(){return this._share.via_fileid}get viaPath(){return this._share.via_path}get parent(){return this._share.parent}get storageId(){return this._share.storage_id}get storage(){return this._share.storage}get itemSource(){return this._share.item_source}get status(){return this._share.status}}const _={data:()=>({SHARE_TYPES:p.D})};var m=i(64024),A=i(76212),v=i.n(A),E=i(12945),y=i.n(E);const w={name:"SharingEntrySimple",components:{NcActions:y()},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}};var S=i(93379),C=i.n(S),b=i(7795),P=i.n(b),x=i(90569),D=i.n(x),k=i(3565),T=i.n(k),R=i(19216),N=i.n(R),I=i(44589),O=i.n(I),L=i(46971),H={};H.styleTagTransform=O(),H.setAttributes=T(),H.insert=D().bind(null,"head"),H.domAPI=P(),H.insertStyleElement=N(),C()(L.Z,H),L.Z&&L.Z.locals&&L.Z.locals;var Y=i(51900);const U=(0,Y.Z)(w,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[e._t("avatar"),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[e._v(e._s(e.title))]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":e.ariaExpandedValue}},[e._t("default")],2):e._e()],2)}),[],!1,null,"02e83c36",null).exports;var B=i(25108);const M={name:"SharingEntryInternal",components:{NcActionLink:v(),SharingEntrySimple:U},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/f/")+this.fileInfo.id},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link to clipboard")},internalLinkSubtitle(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{async copyLink(){try{await navigator.clipboard.writeText(this.internalLink),(0,m.s$)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,B.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var W=i(2256),F={};F.styleTagTransform=O(),F.setAttributes=T(),F.insert=D().bind(null,"head"),F.domAPI=P(),F.insertStyleElement=N(),C()(W.Z,F),W.Z&&W.Z.locals&&W.Z.locals;const q=(0,Y.Z)(M,(function(){var e=this,t=e._self._c;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:e.t("files_sharing","Internal link"),subtitle:e.internalLinkSubtitle},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[e._v(" "),t("NcActionLink",{attrs:{href:e.internalLink,"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,target:"_blank",icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1)],1)}),[],!1,null,"71a426be",null).exports;var j=i(45994),Z=i(78595),$=i(20296),G=i.n($),V=i(36456),K=i.n(V),Q=i(25108);const z=new u;async function J(){if(z.passwordPolicy.api&&z.passwordPolicy.api.generate)try{const e=await c.default.get(z.passwordPolicy.api.generate);if(e.data.ocs.data.password)return(0,m.s$)(t("files_sharing","Password created successfully")),e.data.ocs.data.password}catch(e){Q.info("Error generating password from password_policy",e),(0,m.x2)(t("files_sharing","Error generating password from password policy"))}const e=new Uint8Array(10);self.crypto.getRandomValues(e);let s="";for(let t=0;t<e.length;t++)s+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(.20392156862745098*e[t]);return s}i(35449);var X=i(25108);const ee=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),te={methods:{async createShare(e){let{path:s,permissions:i,shareType:a,shareWith:r,publicUpload:n,password:o,sendPasswordByTalk:h,expireDate:l,label:d,attributes:u}=e;try{var p;const e=await c.default.post(ee,{path:s,permissions:i,shareType:a,shareWith:r,publicUpload:n,password:o,sendPasswordByTalk:h,expireDate:l,label:d,attributes:u});if(null==e||null===(p=e.data)||void 0===p||!p.ocs)throw e;return new g(e.data.ocs.data)}catch(e){var f,_,m,A;X.error("Error while creating share",e);const s=null==e||null===(f=e.response)||void 0===f||null===(_=f.data)||void 0===_||null===(m=_.ocs)||void 0===m||null===(A=m.meta)||void 0===A?void 0:A.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error creating the share"),{type:"error"}),e}},async deleteShare(e){try{var s;const t=await c.default.delete(ee+"/".concat(e));if(null==t||null===(s=t.data)||void 0===s||!s.ocs)throw t;return!0}catch(e){var i,a,r,n;X.error("Error while deleting share",e);const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(r=a.ocs)||void 0===r||null===(n=r.meta)||void 0===n?void 0:n.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error deleting the share"),{type:"error"}),e}},async updateShare(e,s){try{var i;const t=await c.default.put(ee+"/".concat(e),s);if(null!=t&&null!==(i=t.data)&&void 0!==i&&i.ocs)return t.data.ocs.data;throw t}catch(e){if(X.error("Error while updating share",e),400!==e.response.status){var a,r,n,o;const s=null==e||null===(a=e.response)||void 0===a||null===(r=a.data)||void 0===r||null===(n=r.ocs)||void 0===n||null===(o=n.meta)||void 0===o?void 0:o.message;OC.Notification.showTemporary(s?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error updating the share"),{type:"error"})}const s=e.response.data.ocs.meta.message;throw new Error(s)}}}};var se=i(25108);const ie={name:"SharingInput",components:{NcSelect:K()},mixins:[_,te],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:g,default:null},canReshare:{type:Boolean,required:!0}},data:()=>({config:new u,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}),computed:{externalResults(){return this.ShareSearch.results},inputPlaceholder(){const e=this.config.isRemoteShareAllowed;return this.canReshare?e?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted(){this.getRecommendations()},methods:{handleOpen(){(0,Z.j8)("viewer:trapElements:changed",this.$refs.select.$el)},async asyncFind(e){this.query=e.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(e))},async getSuggestions(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(s=!0);const i=[this.SHARE_TYPES.SHARE_TYPE_USER,this.SHARE_TYPES.SHARE_TYPE_GROUP,this.SHARE_TYPES.SHARE_TYPE_REMOTE,this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,this.SHARE_TYPES.SHARE_TYPE_CIRCLE,this.SHARE_TYPES.SHARE_TYPE_ROOM,this.SHARE_TYPES.SHARE_TYPE_GUEST,this.SHARE_TYPES.SHARE_TYPE_DECK,this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH];!0===OC.getCapabilities().files_sharing.public.enabled&&i.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL);let a=null;try{a=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===this.fileInfo.type?"folder":"file",search:e,lookup:s,perPage:this.config.maxAutocompleteResults,shareType:i}})}catch(e){return void se.error("Error fetching suggestions",e)}const r=a.data.ocs.data,n=a.data.ocs.data.exact;r.exact=[];const h=Object.values(n).reduce(((e,t)=>e.concat(t)),[]),l=Object.values(r).reduce(((e,t)=>e.concat(t)),[]),d=this.filterOutExistingShares(h).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),u=this.filterOutExistingShares(l).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),p=[];r.lookupEnabled&&!s&&p.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const f=this.externalResults.filter((e=>!e.condition||e.condition(this))),g=d.concat(u).concat(f).concat(p),_=g.reduce(((e,t)=>t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e),{});this.suggestions=g.map((e=>_[e.displayName]>1&&!e.desc?{...e,desc:e.shareWithDisplayNameUnique}:e)),this.loading=!1,se.info("suggestions",this.suggestions)},debounceGetSuggestions:G()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let e=null;try{e=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(e){return void se.error("Error fetching recommendations",e)}const t=this.externalResults.filter((e=>!e.condition||e.condition(this))),s=Object.values(e.data.ocs.data.exact).reduce(((e,t)=>e.concat(t)),[]);this.recommendations=this.filterOutExistingShares(s).map((e=>this.formatForMultiselect(e))).concat(t),this.loading=!1,se.info("recommendations",this.recommendations)},filterOutExistingShares(e){return e.reduce(((e,t)=>{if("object"!=typeof t)return e;try{if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,j.ts)().uid)return e;if(this.reshare&&t.value.shareWith===this.reshare.owner)return e}if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==this.linkShares.map((e=>e.shareWith)).indexOf(t.value.shareWith.trim()))return e}else{const s=this.shares.reduce(((e,t)=>(e[t.shareWith]=t.type,e)),{}),i=t.value.shareWith.trim();if(i in s&&s[i]===t.value.shareType)return e}e.push(t)}catch{return e}return e}),[])},shareTypeToIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-circle",iconTitle:t("files_sharing","Circle")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let s;var i;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)s=null!==(i=e.shareWithDisplayNameUnique)&&void 0!==i?i:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)s=e.value.shareWith;else{var a;s=null!==(a=e.shareWithDescription)&&void 0!==a?a:""}else s=t("files_sharing","on {server}",{server:e.value.server});return{id:"".concat(e.value.shareType,"-").concat(e.value.shareWith),shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subtitle:s,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}},async addShare(e){if(this.value=null,e.lookup)return await this.getSuggestions(this.query,!0),this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),!0;if(e.handler){const t=await e.handler(this);return this.$emit("add:share",new g(t)),!0}this.loading=!0,se.debug("Adding a new share from the input for",e);try{let t=null;this.config.enforcePasswordForPublicLink&&e.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=await J());const s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=await this.createShare({path:s,shareType:e.shareType,shareWith:e.shareWith,password:t,permissions:this.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(this.fileInfo.shareAttributes)});t?(i.newPassword=t,(await new Promise((e=>{this.$emit("add:share",i,e)}))).open=!0):this.$emit("add:share",i),await this.getRecommendations()}catch(t){this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),this.query=e.shareWith,se.error("Error while adding new share",t)}finally{this.loading=!1}}}};var ae=i(14710),re={};re.styleTagTransform=O(),re.setAttributes=T(),re.insert=D().bind(null,"head"),re.domAPI=P(),re.insertStyleElement=N(),C()(ae.Z,re),ae.Z&&ae.Z.locals&&ae.Z.locals;const ne=(0,Y.Z)(ie,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[e._v(e._s(e.t("files_sharing","Search for share recipients")))]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":"sharing-search-input",disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:e.options},on:{open:e.handleOpen,search:e.asyncFind,"option:selected":e.addShare},scopedSlots:e._u([{key:"no-options",fn:function(t){let{search:s}=t;return[e._v("\n\t\t\t"+e._s(s?e.noResultText:e.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null).exports;var oe=i(45400),he=i.n(oe),le=i(65358),ce=i(1162),de=i.n(ce),ue=i(25746),pe=i(25108);const fe={mixins:[te,_],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:g,default:null},isUnique:{type:Boolean,default:!0}},data(){var e;return{config:new u,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new ue.Z({concurrency:1}),reactiveState:null===(e=this.share)||void 0===e?void 0:e.state}},computed:{hasNote:{get(){return""!==this.share.note},set(e){this.share.note=e?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const e=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],t=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:t,weekdaysMin:e,weekdaysShort:e},monthFormat:"MMM"}},isShareOwner(){return this.share&&this.share.owner===(0,j.ts)().uid}},methods:{checkShare:e=>(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid()),parseDateString(e){var t;if(e)return new Date(null===(t=e.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===t?void 0:t.pop())},formatDateToString:e=>new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0],onExpirationChange(e){this.share.expireDate=this.formatDateToString(e),this.queueUpdate("expireDate")},onExpirationDisable(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},async onDelete(){try{this.loading=!0,this.open=!1,await this.deleteShare(this.share.id),pe.debug("Share deleted",this.share.id);const e="file"===this.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:this.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:this.share.path});(0,m.s$)(e),this.$emit("remove:share",this.share)}catch(e){this.open=!0}finally{this.loading=!1}},queueUpdate(){for(var e=arguments.length,s=new Array(e),i=0;i<e;i++)s[i]=arguments[i];if(0!==s.length){if(this.share.id){const e={};return s.forEach((t=>{"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),void this.updateQueue.add((async()=>{this.saving=!0,this.errors={};try{const i=await this.updateShare(this.share.id,e);s.indexOf("password")>=0&&(this.$delete(this.share,"newPassword"),this.share.passwordExpirationTime=i.password_expiration_time),this.$delete(this.errors,s[0]),(0,m.s$)(t("files_sharing","Share {propertyName} saved",{propertyName:s[0]}))}catch({message:e}){e&&""!==e&&(this.onSyncError(s[0],e),(0,m.x2)(t("files_sharing",e)))}finally{this.saving=!1}}))}pe.debug("Updated local share",this.share)}},onSyncError(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,e,t);let s=this.$refs[e];if(s){s.$el&&(s=s.$el);const e=s.querySelector(".focusable");e&&e.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:G()((function(e){this.queueUpdate(e)}),500)}},ge={name:"SharingEntryInherited",components:{NcActionButton:he(),NcActionLink:v(),NcActionText:de(),NcAvatar:l(),SharingEntrySimple:U},mixins:[fe],props:{share:{type:g,required:!0}},computed:{viaFileTargetUrl(){return(0,o.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,le.EZ)(this.share.viaPath)}}};var _e=i(33668),me={};me.styleTagTransform=O(),me.setAttributes=T(),me.insert=D().bind(null,"head"),me.domAPI=P(),me.insertStyleElement=N(),C()(_e.Z,me),_e.Z&&_e.Z.locals&&_e.Z.locals;const Ae=(0,Y.Z)(ge,(function(){var e=this,t=e._self._c;return t("SharingEntrySimple",{key:e.share.id,staticClass:"sharing-entry__inherited",attrs:{title:e.share.shareWithDisplayName},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.share.shareWith,"display-name":e.share.shareWithDisplayName}})]},proxy:!0}])},[e._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Added by {initiator}",{initiator:e.share.ownerDisplayName}))+"\n\t")]),e._v(" "),e.share.viaPath&&e.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:e.viaFileTargetUrl}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Via “{folder}”",{folder:e.viaFolderName}))+"\n\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t")]):e._e()],1)}),[],!1,null,"038f97f0",null).exports;var ve=i(25108);const Ee={name:"SharingInherited",components:{NcActionButton:he(),SharingEntryInherited:Ae,SharingEntrySimple:U},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}),computed:{showInheritedSharesIcon(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:()=>t("files_sharing","Others with access"),subTitle(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo(){this.resetState()}},methods:{toggleInheritedShares(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},async fetchInheritedShares(){this.loading=!0;try{const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),t=await c.default.get(e);this.shares=t.data.ocs.data.map((e=>new g(e))).sort(((e,t)=>t.createdTime-e.createdTime)),ve.info(this.shares),this.loaded=!0}catch(e){OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"})}finally{this.loading=!1}},resetState(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}};var ye=i(84772),we={};we.styleTagTransform=O(),we.setAttributes=T(),we.insert=D().bind(null,"head"),we.domAPI=P(),we.insertStyleElement=N(),C()(ye.Z,we),ye.Z&&ye.Z.locals&&ye.Z.locals;const Se=(0,Y.Z)(Ee,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:e.mainTitle,subtitle:e.subTitle,"aria-expanded":e.showInheritedShares},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[e._v(" "),t("NcActionButton",{attrs:{icon:e.showInheritedSharesIcon,"aria-label":e.toggleTooltip,title:e.toggleTooltip},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.toggleInheritedShares.apply(null,arguments)}}})],1),e._v(" "),e._l(e.shares,(function(s){return t("SharingEntryInherited",{key:s.id,attrs:{"file-info":e.fileInfo,share:s},on:{"remove:share":e.removeShare}})}))],2)}),[],!1,null,"05b67dc8",null).exports;var Ce=i(81807),be=i.n(Ce),Pe=i(79570),xe=i.n(Pe),De=i(875),ke=i.n(De),Te=i(18074),Re=i.n(Te);const Ne={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:g,default:null}},computed:{data(){return this.action.data(this)}}},Ie=(0,Y.Z)(Ne,(function(){var e=this;return(0,e._self._c)(e.data.is,e._g(e._b({tag:"Component"},"Component",e.data,!1),e.action.handlers),[e._v("\n\t"+e._s(e.data.text)+"\n")])}),[],!1,null,null,null).exports;var Oe=i(30158),Le=i.n(Oe);const He={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},Ye={READ_ONLY:He.READ,UPLOAD_AND_UPDATE:He.READ|He.UPDATE|He.CREATE|He.DELETE,FILE_DROP:He.CREATE,ALL:He.UPDATE|He.CREATE|He.READ|He.DELETE|He.SHARE};function Ue(e,t){return e!==He.NONE&&(e&t)===t}function Be(e){return!(!Ue(e,He.READ)&&!Ue(e,He.CREATE)||!Ue(e,He.READ)&&(Ue(e,He.UPDATE)||Ue(e,He.DELETE)))}function Me(e,t){return Ue(e,t)?function(e,t){return e&~t}(e,t):function(e,t){return e|t}(e,t)}var We=i(55976),Fe=i(32964);const qe={name:"SharePermissionsEditor",components:{NcActionButton:he(),NcActionCheckbox:be(),NcActionRadio:Le(),Tune:We.Z,ChevronLeft:Fe.default},mixins:[fe],data:()=>({randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:He,bundledPermissions:Ye}),computed:{sharePermissionsSummary(){return Object.values(this.atomicPermissions).filter((e=>this.shareHasPermissions(e))).map((e=>{switch(e){case this.atomicPermissions.CREATE:return this.t("files_sharing","Upload");case this.atomicPermissions.READ:return this.t("files_sharing","Read");case this.atomicPermissions.UPDATE:return this.t("files_sharing","Edit");case this.atomicPermissions.DELETE:return this.t("files_sharing","Delete");default:return null}})).filter((e=>null!==e)).join(", ")},sharePermissionsIsBundle(){return Object.values(Ye).map((e=>this.sharePermissionEqual(e))).filter((e=>e)).length>0},sharePermissionsSetIsValid(){return Be(this.share.permissions)},isFolder(){return"dir"===this.fileInfo.type},fileHasCreatePermission(){return!!(this.fileInfo.permissions&He.CREATE)}},mounted(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual(e){return(this.share.permissions&~He.SHARE)===e},shareHasPermissions(e){return Ue(this.share.permissions,e)},setSharePermissions(e){this.share.permissions=e,this.queueUpdate("permissions")},canToggleSharePermissions(e){return function(e,t){return Be(Me(e,t))}(this.share.permissions,e)},toggleSharePermissions(e){this.share.permissions=Me(this.share.permissions,e),Be(this.share.permissions)&&this.queueUpdate("permissions")}}};var je=i(3163),Ze={};Ze.styleTagTransform=O(),Ze.setAttributes=T(),Ze.insert=D().bind(null,"head"),Ze.domAPI=P(),Ze.insertStyleElement=N(),C()(je.Z,Ze),je.Z&&je.Z.locals&&je.Z.locals;const $e=(0,Y.Z)(qe,(function(){var e=this,t=e._self._c;return t("li",[t("ul",[e.isFolder?e._e():t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t")]),e._v(" "),e.isFolder&&e.fileHasCreatePermission&&e.config.isPublicUploadEnabled?[e.showCustomPermissionsForm?t("span",{class:{error:!e.sharePermissionsSetIsValid}},[t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.READ),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.READ)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.READ)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.CREATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.CREATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.CREATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Upload"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.UPDATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Edit"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.DELETE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.DELETE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.DELETE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Delete"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{on:{click:function(t){e.showCustomPermissionsForm=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.READ_ONLY),value:e.bundledPermissions.READ_ONLY,name:e.randomFormName,disabled:e.saving},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.READ_ONLY)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read only"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.UPLOAD_AND_UPDATE),value:e.bundledPermissions.UPLOAD_AND_UPDATE,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.UPLOAD_AND_UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.FILE_DROP),value:e.bundledPermissions.FILE_DROP,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.FILE_DROP)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{title:e.t("files_sharing","Custom permissions")},on:{click:function(t){e.showCustomPermissionsForm=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[e._v("\n\t\t\t\t\t"+e._s(e.sharePermissionsIsBundle?"":e.sharePermissionsSummary)+"\n\t\t\t\t")])]]:e._e()],2)])}),[],!1,null,"7cec8a94",null).exports;var Ge=i(25108);const Ve={name:"SharingEntryLink",components:{NcActions:y(),NcActionButton:he(),NcActionCheckbox:be(),NcActionInput:xe(),NcActionLink:v(),NcActionText:de(),NcActionTextEditable:Re(),NcActionSeparator:ke(),NcAvatar:l(),ExternalShareAction:Ie,SharePermissionsEditor:$e},mixins:[fe],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}),computed:{title(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Share link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set(e){const t=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",Ge.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){a.default.set(this.share,"password",e?await J():""),a.default.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/s/")+this.share.token},actionsTooltip(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing",'Copy public link of "{title}" to clipboard',{title:this.title})},externalLegacyLinkActions(){return this.ExternalLegacyLinkActions.actions},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>e.shareType.includes(p.D.SHARE_TYPE_LINK)||e.shareType.includes(p.D.SHARE_TYPE_EMAIL)))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.enabled))}},methods:{async onNewLinkShare(){if(this.loading)return;const e={share_type:p.D.SHARE_TYPE_LINK};if(this.config.isDefaultExpireDateEnforced&&(e.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.config.enableLinkPasswordByDefault&&(e.password=await J()),this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced){if(this.pending=!0,this.share&&!this.share.id){if(this.checkShare(this.share)){try{await this.pushNewLinkShare(this.share,!0)}catch(e){return this.pending=!1,Ge.error(e),!1}return!0}return this.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}this.config.enforcePasswordForPublicLink&&(e.password=await J());const s=new g(e),i=await new Promise((e=>{this.$emit("add:share",s,e)}));this.open=!1,this.pending=!1,i.open=!0}else{const t=new g(e);await this.pushNewLinkShare(t)}},async pushNewLinkShare(e,s){try{if(this.loading)return!0;this.loading=!0,this.errors={};const i={path:(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),shareType:p.D.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(this.fileInfo.shareAttributes)};Ge.debug("Creating link share with options",i);const a=await this.createShare(i);let r;this.open=!1,Ge.debug("Link share created",a),r=s?await new Promise((e=>{this.$emit("update:share",a,e)})):await new Promise((e=>{this.$emit("add:share",a,e)})),this.config.enforcePasswordForPublicLink||r.copyLink(),(0,m.s$)(t("sharing","Link share created"))}catch(e){var i,a,r,n;const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(r=a.ocs)||void 0===r||null===(n=r.meta)||void 0===n?void 0:n.message;if(!s)return(0,m.x2)(t("sharing","Error while creating the share")),void Ge.error(e);throw s.match(/password/i)?this.onSyncError("password",s):s.match(/date/i)?this.onSyncError("expireDate",s):this.onSyncError("pending",s),e}finally{this.loading=!1}},onLabelChange(e){this.$set(this.share,"newLabel",e.trim())},onLabelSubmit(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},async copyLink(){try{await navigator.clipboard.writeText(this.shareLink),(0,m.s$)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,Ge.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(e){this.$set(this.share,"newPassword",e)},onPasswordDisable(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel(){this.$emit("remove:share",this.share)}}},Ke=Ve;var Qe=i(91154),ze={};ze.styleTagTransform=O(),ze.setAttributes=T(),ze.insert=D().bind(null,"head"),ze.domAPI=P(),ze.insertStyleElement=N(),C()(Qe.Z,ze),Qe.Z&&Qe.Z.locals&&Qe.Z.locals;const Je={name:"SharingLinkList",components:{SharingEntryLink:(0,Y.Z)(Ke,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":e.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":e.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t"+e._s(e.title)+"\n\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.share&&!e.isEmailShareType&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionLink",{attrs:{href:e.shareLink,target:"_blank",title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip,icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1):e._e(),e._v(" "),e.pending||!e.pendingPassword&&!e.pendingExpirationDate?e.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onMenuClose}},[e.share?[e.share.canEdit&&e.canReshare?[t("NcActionInput",{ref:"label",class:{error:e.errors.label},attrs:{disabled:e.saving,label:e.t("files_sharing","Share label"),value:void 0!==e.share.newLabel?e.share.newLabel:e.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":e.onLabelChange,submit:e.onLabelSubmit}}),e._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":e.canReshare,share:e.share,"file-info":e.fileInfo},on:{"update:share":function(t){e.share=t}}}),e._v(" "),t("NcActionSeparator"),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.share.hideDownload,disabled:e.saving||e.canChangeHideDownload},on:{"update:checked":function(t){return e.$set(e.share,"hideDownload",t)},change:function(t){return e.queueUpdate("hideDownload")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.enforcePasswordForPublicLink?e.t("files_sharing","Password protection (enforced)"):e.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcActionInput",{ref:"password",staticClass:"share-link-password",class:{error:e.errors.password},attrs:{disabled:e.saving,"show-trailing-button":e.hasUnsavedPassword,required:e.config.enforcePasswordForPublicLink,value:e.hasUnsavedPassword?e.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:e.hasUnsavedPassword?"text":"password"},on:{"update:value":e.onPasswordChange,submit:e.onPasswordSubmit}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isPasswordProtectedByTalkAvailable?t("NcActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:e.isPasswordProtectedByTalk,disabled:!e.canTogglePasswordProtectedByTalkAvailable||e.saving},on:{"update:checked":function(t){e.isPasswordProtectedByTalk=t},change:e.onPasswordProtectedByTalkChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.isDefaultExpireDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",staticClass:"share-link-expire-date",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,placeholder:e.t("files_sharing","Enter a note for the share recipient"),value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e(),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(s){return t("ExternalShareAction",{key:s.id,attrs:{id:s.id,action:s,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(s,i){let{icon:a,url:r,name:n}=s;return t("NcActionLink",{key:i,attrs:{href:r(e.shareLink),icon:a,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(n)+"\n\t\t\t")])})),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e()]:e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{title:e.t("files_sharing","Create a new share link"),"aria-label":e.t("files_sharing","Create a new share link"),icon:e.loading?"icon-loading-small":"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}}):e._e()],2):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onNewLinkShare}},[e.errors.pending?t("NcActionText",{class:{error:e.errors.pending},attrs:{icon:"icon-error"}},[e._v("\n\t\t\t"+e._s(e.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),e._v(" "),e.pendingPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):e.config.enableLinkPasswordByDefault?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:e.onNewLinkShare}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t")]):e._e(),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"2662d6f0",null).exports},mixins:[_],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:OC.getCapabilities().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK)).length>0},hasShares(){return this.shares.length>0}},methods:{addShare(e,t){this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare(e,t){this.$nextTick((()=>{const s=this.$children.find((t=>t.share===e));s&&t(s)}))},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},Xe=(0,Y.Z)(Je,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!e.hasLinkShares&&e.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo},on:{"add:share":e.addShare}}):e._e(),e._v(" "),e.hasShares?e._l(e.shares,(function(s,i){return t("SharingEntryLink",{key:s.id,attrs:{index:e.shares.length>1?i+1:null,"can-reshare":e.canReshare,share:e.shares[i],"file-info":e.fileInfo},on:{"update:share":[function(t){return e.$set(e.shares,i,t)},function(t){return e.awaitForShare(...arguments)}],"add:share":function(t){return e.addShare(...arguments)},"remove:share":e.removeShare}})})):e._e()],2):e._e()}),[],!1,null,null,null).exports;var et=i(25108);const tt={name:"SharingEntry",components:{NcActions:y(),NcActionButton:he(),NcActionCheckbox:be(),NcActionInput:xe(),NcActionTextEditable:Re(),NcAvatar:l()},mixins:[fe],data:()=>({permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}),computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},canHaveNote(){return!this.isRemote},isRemote(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload(){return this.fileInfo.canDownload()||this.canDownload},canEdit:{get(){return this.share.hasUpdatePermission},set(e){this.updatePermissions({isEditChecked:e})}},canCreate:{get(){return this.share.hasCreatePermission},set(e){this.updatePermissions({isCreateChecked:e})}},canDelete:{get(){return this.share.hasDeletePermission},set(e){this.updatePermissions({isDeleteChecked:e})}},canReshare:{get(){return this.share.hasSharePermission},set(e){this.updatePermissions({isReshareChecked:e})}},canDownload:{get(){return this.share.hasDownloadPermission},set(e){this.updatePermissions({isDownloadChecked:e})}},hasRead:{get(){return this.share.hasReadPermission}},isFolder(){return"dir"===this.fileInfo.type},hasExpirationDate:{get(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set(e){const t=this.config.defaultInternalExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",et.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},hasStatus(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)},allowDownloadText:()=>t("files_sharing","Allow download"),isSetDownloadButtonVisible(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)}},methods:{updatePermissions(){let{isEditChecked:e=this.canEdit,isCreateChecked:t=this.canCreate,isDeleteChecked:s=this.canDelete,isReshareChecked:i=this.canReshare,isDownloadChecked:a=this.canDownload}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=0|(this.hasRead?this.permissionsRead:0)|(t?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(e?this.permissionsEdit:0)|(i?this.permissionsShare:0);this.share.permissions=r,this.share.hasDownloadPermission!==a&&(this.share.hasDownloadPermission=a),this.queueUpdate("permissions","attributes")},onMenuClose(){this.onNoteSubmit()}}};var st=i(10915),it={};it.styleTagTransform=O(),it.setAttributes=T(),it.insert=D().bind(null,"head"),it.domAPI=P(),it.insertStyleElement=N(),C()(st.Z,it),st.Z&&st.Z.locals&&st.Z.locals;const at={name:"SharingList",components:{SharingEntry:(0,Y.Z)(tt,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.type!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")])]),e._v(" "),e.hasStatus?t("p",[t("span",[e._v(e._s(e.share.status.icon||""))]),e._v(" "),t("span",[e._v(e._s(e.share.status.message||""))])]):e._e()]),e._v(" "),t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:e.onMenuClose}},[e.share.canEdit?[t("NcActionCheckbox",{ref:"canEdit",attrs:{checked:e.canEdit,value:e.permissionsEdit,disabled:e.saving||!e.canSetEdit},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t\t")]),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canCreate",attrs:{checked:e.canCreate,value:e.permissionsCreate,disabled:e.saving||!e.canSetCreate},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow creating"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canDelete",attrs:{checked:e.canDelete,value:e.permissionsDelete,disabled:e.saving||!e.canSetDelete},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):e._e(),e._v(" "),e.config.isResharingAllowed?t("NcActionCheckbox",{ref:"canReshare",attrs:{checked:e.canReshare,value:e.permissionsShare,disabled:e.saving||!e.canSetReshare},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isSetDownloadButtonVisible?t("NcActionCheckbox",{ref:"canDownload",attrs:{checked:e.canDownload,disabled:e.saving||!e.canSetDownload},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t"+e._s(e.allowDownloadText)+"\n\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultInternalExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t"+e._s(e.config.isDefaultInternalExpireDateEnforced?e.t("files_sharing","Expiration date enforced"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t")]):e._e(),e._v(" "),e.canHaveNote?[t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e()]:e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t")]):e._e()],2)],1)}),[],!1,null,"325ebcb0",null).exports},mixins:[_],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},computed:{hasShares(){return 0===this.shares.length},isUnique(){return e=>[...this.shares].filter((t=>e.type===this.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName)).length<=1}},methods:{removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},rt=(0,Y.Z)(at,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list"},e._l(e.shares,(function(s){return t("SharingEntry",{key:s.id,attrs:{"file-info":e.fileInfo,share:s,"is-unique":e.isUnique(s)},on:{"remove:share":e.removeShare}})})),1)}),[],!1,null,null,null).exports;var nt=i(25108);const ot={name:"SharingTab",components:{NcAvatar:l(),CollectionList:n.G,SharingEntryInternal:q,SharingEntrySimple:U,SharingInherited:Se,SharingInput:ne,SharingLinkList:Xe,SharingList:rt},mixins:[_],data:()=>({config:new u,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,d.j)("core","projects_enabled",!1)}),computed:{isSharedWithMe(){return Object.keys(this.sharedWithMe).length>0},canReshare(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),t="json",s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=c.default.get(e,{params:{format:t,path:s,reshares:!0}}),a=c.default.get(e,{params:{format:t,path:s,shared_with_me:!0}}),[r,n]=await Promise.all([i,a]);this.loading=!1,this.processSharedWithMe(n),this.processShares(r)}catch(a){var e,s,i;null!==(e=a.response.data)&&void 0!==e&&null!==(s=e.ocs)&&void 0!==s&&null!==(i=s.meta)&&void 0!==i&&i.message?this.error=a.response.data.ocs.meta.message:this.error=t("files_sharing","Unable to load the shares list"),this.loading=!1,nt.error("Error loading the shares list",a)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle(e){const s=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*s)})),moment().unix()>s&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(e){let{data:t}=e;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){const e=t.ocs.data.map((e=>new g(e))).sort(((e,t)=>t.createdTime-e.createdTime));this.linkShares=e.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK||e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)),this.shares=e.filter((e=>e.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&e.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)),nt.debug("Processed",this.linkShares.length,"link share(s)"),nt.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe(e){let{data:s}=e;if(s.ocs&&s.ocs.data&&s.ocs.data[0]){const e=new g(s),i=function(e){return e.type===p.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===p.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===p.D.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1})}(e),a=e.ownerDisplayName,r=e.owner;this.sharedWithMe={displayName:a,title:i,user:r},this.reshare=e,e.expireDate&&moment(e.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare(e,t){let s=this.$refs.shareList;e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(s=this.$refs.linkShareList),this.$nextTick((()=>{const i=s.$children.find((t=>t.share===e));i&&t(i)}))}}},ht=ot;var lt=i(27172),ct={};ct.styleTagTransform=O(),ct.setAttributes=T(),ct.insert=D().bind(null,"head"),ct.domAPI=P(),ct.insertStyleElement=N(),C()(lt.Z,ct),lt.Z&<.Z.locals&<.Z.locals;const dt=(0,Y.Z)(ht,(function(){var e=this,t=e._self._c;return t("div",{class:{"icon-loading":e.loading}},[e.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:e.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),e._v(" "),t("h2",[e._v(e._s(e.error))])]):t("div",{staticClass:"sharingTab__content"},[e.isSharedWithMe?t("SharingEntrySimple",e._b({staticClass:"sharing-entry__reshare",scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.sharedWithMe.user,"display-name":e.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",e.sharedWithMe,!1)):e._e(),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,reshare:e.reshare,shares:e.shares},on:{"add:share":e.addShare}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}}),e._v(" "),e.projectsEnabled&&e.fileInfo?t("CollectionList",{attrs:{id:"".concat(e.fileInfo.id),type:"file",name:e.fileInfo.name}}):e._e()],1),e._v(" "),e._l(e.sections,(function(s,i){return t("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(s(e.$refs["section-"+i],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)}))],2)}),[],!1,null,"085eaa7e",null).exports;var ut=i(25108);var pt=i(25108);var ft=i(25108);var gt=i(44582);window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.results=[],ut.debug("OCA.Sharing.ShareSearch initialized")}get state(){return this._state}addNewResult(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(ut.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],pt.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return pt.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"==typeof e&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(pt.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],ft.debug("OCA.Sharing.ExternalShareActions initialized")}get state(){return this._state}registerAction(e){return"object"==typeof e&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"==typeof e.handlers&&Object.values(e.handlers).every((e=>"function"==typeof e))?this._state.actions.findIndex((t=>t.id===e.id))>-1?(ft.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(ft.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_sections"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._sections=[]}registerSection(e){this._sections.push(e)}getSections(){return this._sections}}}),a.default.prototype.t=r.Iu,a.default.prototype.n=r.uN;const _t=a.default.extend(dt);let mt=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,r.Iu)("files_sharing","Sharing"),iconSvg:gt,async mount(e,t,s){mt&&mt.$destroy(),mt=new _t({parent:s}),await mt.update(t),mt.$mount(e)},update(e){mt.update(e)},destroy(){mt.$destroy(),mt=null}}))}))},3163:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".error[data-v-7cec8a94] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAEC,uDACC,mCAAA",sourcesContent:["\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]);const o=n},10915:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-325ebcb0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-325ebcb0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-325ebcb0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=n},33668:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=n},2256:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=n},91154:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-2662d6f0]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-2662d6f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-2662d6f0]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-2662d6f0]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-2662d6f0]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-2662d6f0] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-2662d6f0]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-2662d6f0]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-2662d6f0]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-2662d6f0],.sharing-entry .action-item~.sharing-entry__loading[data-v-2662d6f0]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-2662d6f0]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=n},46971:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-02e83c36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-02e83c36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-02e83c36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-02e83c36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-02e83c36]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]);const o=n},14710:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const o=n},84772:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]);const o=n},27172:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".emptyContentWithSections[data-v-085eaa7e]{margin:1rem auto}.sharingTab__content[data-v-085eaa7e]{padding:0 6px}.sharingTab__additionalContent[data-v-085eaa7e]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA",sourcesContent:["\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]);const o=n}},i={};function a(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,loaded:!1,exports:{}};return s[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=s,e=[],a.O=(t,s,i,r)=>{if(!s){var n=1/0;for(c=0;c<e.length;c++){s=e[c][0],i=e[c][1],r=e[c][2];for(var o=!0,h=0;h<s.length;h++)(!1&r||n>=r)&&Object.keys(a.O).every((e=>a.O[e](s[h])))?s.splice(h--,1):(o=!1,r<n&&(n=r));if(o){e.splice(c--,1);var l=i();void 0!==l&&(t=l)}}return t}r=r||0;for(var c=e.length;c>0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[s,i,r]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=7870,(()=>{a.b=document.baseURI||self.location.href;var e={7870:0};a.O.j=t=>0===e[t];var t=(t,s)=>{var i,r,n=s[0],o=s[1],h=s[2],l=0;if(n.some((t=>0!==e[t]))){for(i in o)a.o(o,i)&&(a.m[i]=o[i]);if(h)var c=h(a)}for(t&&t(s);l<n.length;l++)r=n[l],a.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return a.O(c)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),a.nc=void 0;var r=a.O(void 0,[7874],(()=>a(19258)));r=a.O(r)})(); -//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=437b8f5d80940402f0c0
\ No newline at end of file +(()=>{"use strict";var e,s={24103:(e,s,i)=>{var a=i(20144),r=i(31352),n=i(1794),o=i(79753),h=i(75925),l=i.n(h),c=i(4820),d=i(79954);class u{get isPublicUploadEnabled(){return document.getElementsByClassName("files-filestable")[0]&&"yes"===document.getElementsByClassName("files-filestable")[0].dataset.allowPublicUpload}get isShareWithLinkAllowed(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}get federatedShareDocLink(){return OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultRemoteExpireDateEnforced(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnabled(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===OC.appConfig.core.remoteShareAllowed}get isMailShareAllowed(){var e,t,s;const i=OC.getCapabilities();return void 0!==(null==i||null===(e=i.files_sharing)||void 0===e?void 0:e.sharebymail)&&!0===(null==i||null===(t=i.files_sharing)||void 0===t||null===(s=t.public)||void 0===s?void 0:s.enabled)}get defaultExpireDate(){return OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}get shouldAlwaysShowUnique(){var e,t;return!0===(null===(e=OC.getCapabilities().files_sharing)||void 0===e||null===(t=e.sharee)||void 0===t?void 0:t.always_show_unique)}get allowGroupSharing(){return!0===OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){const e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}var p=i(41922),f=i(25108);class g{constructor(e){var t,s,i,a;if(s=this,a=void 0,(i=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(i="_share"))in s?Object.defineProperty(s,i,{value:a,enumerable:!0,configurable:!0,writable:!0}):s[i]=a,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(t){f.warn('Could not parse share attributes returned by server: "'+e.attributes+'"')}e.attributes=null!==(t=e.attributes)&&void 0!==t?t:[],this._share=e}get state(){return this._share}get id(){return this._share.id}get type(){return this._share.share_type}get permissions(){return this._share.permissions}get attributes(){return this._share.attributes}set permissions(e){this._share.permissions=e}get owner(){return this._share.uid_owner}get ownerDisplayName(){return this._share.displayname_owner}get shareWith(){return this._share.share_with}get shareWithDisplayName(){return this._share.share_with_displayname||this._share.share_with}get shareWithDisplayNameUnique(){return this._share.share_with_displayname_unique||this._share.share_with}get shareWithLink(){return this._share.share_with_link}get shareWithAvatar(){return this._share.share_with_avatar}get uidFileOwner(){return this._share.uid_file_owner}get displaynameFileOwner(){return this._share.displayname_file_owner||this._share.uid_file_owner}get createdTime(){return this._share.stime}get expireDate(){return this._share.expiration}set expireDate(e){this._share.expiration=e}get token(){return this._share.token}get note(){return this._share.note}set note(e){this._share.note=e}get label(){return this._share.label}set label(e){this._share.label=e}get mailSend(){return!0===this._share.mail_send}get hideDownload(){return!0===this._share.hide_download}set hideDownload(e){this._share.hide_download=!0===e}get password(){return this._share.password}set password(e){this._share.password=e}get passwordExpirationTime(){return this._share.password_expiration_time}set passwordExpirationTime(e){this._share.password_expiration_time=e}get sendPasswordByTalk(){return this._share.send_password_by_talk}set sendPasswordByTalk(e){this._share.send_password_by_talk=e}get path(){return this._share.path}get itemType(){return this._share.item_type}get mimetype(){return this._share.mimetype}get fileSource(){return this._share.file_source}get fileTarget(){return this._share.file_target}get fileParent(){return this._share.file_parent}get hasReadPermission(){return!!(this.permissions&OC.PERMISSION_READ)}get hasCreatePermission(){return!!(this.permissions&OC.PERMISSION_CREATE)}get hasDeletePermission(){return!!(this.permissions&OC.PERMISSION_DELETE)}get hasUpdatePermission(){return!!(this.permissions&OC.PERMISSION_UPDATE)}get hasSharePermission(){return!!(this.permissions&OC.PERMISSION_SHARE)}get hasDownloadPermission(){for(const e in this._share.attributes){const t=this._share.attributes[e];if("permissions"===t.scope&&"download"===t.key)return t.enabled}return!0}set hasDownloadPermission(e){this.setAttribute("permissions","download",!!e)}setAttribute(e,t,s){const i={scope:e,key:t,enabled:s};for(const e in this._share.attributes){const t=this._share.attributes[e];if(t.scope===i.scope&&t.key===i.key)return void(this._share.attributes[e]=i)}this._share.attributes.push(i)}get canEdit(){return!0===this._share.can_edit}get canDelete(){return!0===this._share.can_delete}get viaFileid(){return this._share.via_fileid}get viaPath(){return this._share.via_path}get parent(){return this._share.parent}get storageId(){return this._share.storage_id}get storage(){return this._share.storage}get itemSource(){return this._share.item_source}get status(){return this._share.status}}const _={data:()=>({SHARE_TYPES:p.D})};var m=i(64024),A=i(76212),v=i.n(A),E=i(12945),y=i.n(E);const w={name:"SharingEntrySimple",components:{NcActions:y()},props:{title:{type:String,default:"",required:!0},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}};var S=i(93379),C=i.n(S),b=i(7795),P=i.n(b),x=i(90569),D=i.n(x),k=i(3565),T=i.n(k),R=i(19216),N=i.n(R),I=i(44589),O=i.n(I),L=i(46971),H={};H.styleTagTransform=O(),H.setAttributes=T(),H.insert=D().bind(null,"head"),H.domAPI=P(),H.insertStyleElement=N(),C()(L.Z,H),L.Z&&L.Z.locals&&L.Z.locals;var Y=i(51900);const U=(0,Y.Z)(w,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[e._t("avatar"),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[e._v(e._s(e.title))]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":e.ariaExpandedValue}},[e._t("default")],2):e._e()],2)}),[],!1,null,"02e83c36",null).exports;var B=i(25108);const M={name:"SharingEntryInternal",components:{NcActionLink:v(),SharingEntrySimple:U},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({copied:!1,copySuccess:!1}),computed:{internalLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/f/")+this.fileInfo.id},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy internal link to clipboard")},internalLinkSubtitle(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{async copyLink(){try{await navigator.clipboard.writeText(this.internalLink),(0,m.s$)(t("files_sharing","Link copied")),this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,B.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}}}};var W=i(2256),F={};F.styleTagTransform=O(),F.setAttributes=T(),F.insert=D().bind(null,"head"),F.domAPI=P(),F.insertStyleElement=N(),C()(W.Z,F),W.Z&&W.Z.locals&&W.Z.locals;const q=(0,Y.Z)(M,(function(){var e=this,t=e._self._c;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:e.t("files_sharing","Internal link"),subtitle:e.internalLinkSubtitle},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[e._v(" "),t("NcActionLink",{attrs:{href:e.internalLink,"aria-label":e.copyLinkTooltip,title:e.copyLinkTooltip,target:"_blank",icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1)],1)}),[],!1,null,"71a426be",null).exports;var j=i(45994),Z=i(78595),$=i(20296),G=i.n($),V=i(36456),K=i.n(V),Q=i(25108);const z=new u;async function J(){if(z.passwordPolicy.api&&z.passwordPolicy.api.generate)try{const e=await c.default.get(z.passwordPolicy.api.generate);if(e.data.ocs.data.password)return(0,m.s$)(t("files_sharing","Password created successfully")),e.data.ocs.data.password}catch(e){Q.info("Error generating password from password_policy",e),(0,m.x2)(t("files_sharing","Error generating password from password policy"))}const e=new Uint8Array(10);self.crypto.getRandomValues(e);let s="";for(let t=0;t<e.length;t++)s+="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789".charAt(.20392156862745098*e[t]);return s}i(35449);var X=i(25108);const ee=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),te={methods:{async createShare(e){let{path:s,permissions:i,shareType:a,shareWith:r,publicUpload:n,password:o,sendPasswordByTalk:h,expireDate:l,label:d,attributes:u}=e;try{var p;const e=await c.default.post(ee,{path:s,permissions:i,shareType:a,shareWith:r,publicUpload:n,password:o,sendPasswordByTalk:h,expireDate:l,label:d,attributes:u});if(null==e||null===(p=e.data)||void 0===p||!p.ocs)throw e;return new g(e.data.ocs.data)}catch(e){var f,_,m,A;X.error("Error while creating share",e);const s=null==e||null===(f=e.response)||void 0===f||null===(_=f.data)||void 0===_||null===(m=_.ocs)||void 0===m||null===(A=m.meta)||void 0===A?void 0:A.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error creating the share"),{type:"error"}),e}},async deleteShare(e){try{var s;const t=await c.default.delete(ee+"/".concat(e));if(null==t||null===(s=t.data)||void 0===s||!s.ocs)throw t;return!0}catch(e){var i,a,r,n;X.error("Error while deleting share",e);const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(r=a.ocs)||void 0===r||null===(n=r.meta)||void 0===n?void 0:n.message;throw OC.Notification.showTemporary(s?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error deleting the share"),{type:"error"}),e}},async updateShare(e,s){try{var i;const t=await c.default.put(ee+"/".concat(e),s);if(null!=t&&null!==(i=t.data)&&void 0!==i&&i.ocs)return t.data.ocs.data;throw t}catch(e){if(X.error("Error while updating share",e),400!==e.response.status){var a,r,n,o;const s=null==e||null===(a=e.response)||void 0===a||null===(r=a.data)||void 0===r||null===(n=r.ocs)||void 0===n||null===(o=n.meta)||void 0===o?void 0:o.message;OC.Notification.showTemporary(s?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:s}):t("files_sharing","Error updating the share"),{type:"error"})}const s=e.response.data.ocs.meta.message;throw new Error(s)}}}};var se=i(25108);const ie={name:"SharingInput",components:{NcSelect:K()},mixins:[_,te],props:{shares:{type:Array,default:()=>[],required:!0},linkShares:{type:Array,default:()=>[],required:!0},fileInfo:{type:Object,default:()=>{},required:!0},reshare:{type:g,default:null},canReshare:{type:Boolean,required:!0}},data:()=>({config:new u,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[],value:null}),computed:{externalResults(){return this.ShareSearch.results},inputPlaceholder(){const e=this.config.isRemoteShareAllowed;return this.canReshare?e?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted(){this.getRecommendations()},methods:{handleOpen(){(0,Z.j8)("viewer:trapElements:changed",this.$refs.select.$el)},async asyncFind(e){this.query=e.trim(),this.isValidQuery&&(this.loading=!0,await this.debounceGetSuggestions(e))},async getSuggestions(e){let s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(s=!0);const i=[this.SHARE_TYPES.SHARE_TYPE_USER,this.SHARE_TYPES.SHARE_TYPE_GROUP,this.SHARE_TYPES.SHARE_TYPE_REMOTE,this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,this.SHARE_TYPES.SHARE_TYPE_CIRCLE,this.SHARE_TYPES.SHARE_TYPE_ROOM,this.SHARE_TYPES.SHARE_TYPE_GUEST,this.SHARE_TYPES.SHARE_TYPE_DECK,this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH];!0===OC.getCapabilities().files_sharing.public.enabled&&i.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL);let a=null;try{a=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===this.fileInfo.type?"folder":"file",search:e,lookup:s,perPage:this.config.maxAutocompleteResults,shareType:i}})}catch(e){return void se.error("Error fetching suggestions",e)}const r=a.data.ocs.data,n=a.data.ocs.data.exact;r.exact=[];const h=Object.values(n).reduce(((e,t)=>e.concat(t)),[]),l=Object.values(r).reduce(((e,t)=>e.concat(t)),[]),d=this.filterOutExistingShares(h).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),u=this.filterOutExistingShares(l).map((e=>this.formatForMultiselect(e))).sort(((e,t)=>e.shareType-t.shareType)),p=[];r.lookupEnabled&&!s&&p.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0});const f=this.externalResults.filter((e=>!e.condition||e.condition(this))),g=d.concat(u).concat(f).concat(p),_=g.reduce(((e,t)=>t.displayName?(e[t.displayName]||(e[t.displayName]=0),e[t.displayName]++,e):e),{});this.suggestions=g.map((e=>_[e.displayName]>1&&!e.desc?{...e,desc:e.shareWithDisplayNameUnique}:e)),this.loading=!1,se.info("suggestions",this.suggestions)},debounceGetSuggestions:G()((function(){this.getSuggestions(...arguments)}),300),async getRecommendations(){this.loading=!0;let e=null;try{e=await c.default.get((0,o.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:this.fileInfo.type}})}catch(e){return void se.error("Error fetching recommendations",e)}const t=this.externalResults.filter((e=>!e.condition||e.condition(this))),s=Object.values(e.data.ocs.data.exact).reduce(((e,t)=>e.concat(t)),[]);this.recommendations=this.filterOutExistingShares(s).map((e=>this.formatForMultiselect(e))).concat(t),this.loading=!1,se.info("recommendations",this.recommendations)},filterOutExistingShares(e){return e.reduce(((e,t)=>{if("object"!=typeof t)return e;try{if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,j.ts)().uid)return e;if(this.reshare&&t.value.shareWith===this.reshare.owner)return e}if(t.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==this.linkShares.map((e=>e.shareWith)).indexOf(t.value.shareWith.trim()))return e}else{const s=this.shares.reduce(((e,t)=>(e[t.shareWith]=t.type,e)),{}),i=t.value.shareWith.trim();if(i in s&&s[i]===t.value.shareType)return e}e.push(t)}catch{return e}return e}),[])},shareTypeToIcon(e){switch(e){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return{icon:"icon-user",iconTitle:t("files_sharing","Guest")};case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return{icon:"icon-group",iconTitle:t("files_sharing","Group")};case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return{icon:"icon-mail",iconTitle:t("files_sharing","Email")};case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return{icon:"icon-circle",iconTitle:t("files_sharing","Circle")};case this.SHARE_TYPES.SHARE_TYPE_ROOM:return{icon:"icon-room",iconTitle:t("files_sharing","Talk conversation")};case this.SHARE_TYPES.SHARE_TYPE_DECK:return{icon:"icon-deck",iconTitle:t("files_sharing","Deck board")};case this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:return{icon:"icon-sciencemesh",iconTitle:t("files_sharing","ScienceMesh")};default:return{}}},formatForMultiselect(e){let s;var i;if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)s=null!==(i=e.shareWithDisplayNameUnique)&&void 0!==i?i:"";else if(e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!e.value.server)if(e.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)s=e.value.shareWith;else{var a;s=null!==(a=e.shareWithDescription)&&void 0!==a?a:""}else s=t("files_sharing","on {server}",{server:e.value.server});return{id:"".concat(e.value.shareType,"-").concat(e.value.shareWith),shareWith:e.value.shareWith,shareType:e.value.shareType,user:e.uuid||e.value.shareWith,isNoUser:e.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:e.name||e.label,subtitle:s,shareWithDisplayNameUnique:e.shareWithDisplayNameUnique||"",...this.shareTypeToIcon(e.value.shareType)}},async addShare(e){if(this.value=null,e.lookup)return await this.getSuggestions(this.query,!0),this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),!0;if(e.handler){const t=await e.handler(this);return this.$emit("add:share",new g(t)),!0}this.loading=!0,se.debug("Adding a new share from the input for",e);try{let t=null;this.config.enforcePasswordForPublicLink&&e.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=await J());const s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=await this.createShare({path:s,shareType:e.shareType,shareWith:e.shareWith,password:t,permissions:this.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(this.fileInfo.shareAttributes)});t?(i.newPassword=t,(await new Promise((e=>{this.$emit("add:share",i,e)}))).open=!0):this.$emit("add:share",i),await this.getRecommendations()}catch(t){this.$nextTick((()=>{this.$refs.select.$children[0].open=!0})),this.query=e.shareWith,se.error("Error while adding new share",t)}finally{this.loading=!1}}}};var ae=i(14710),re={};re.styleTagTransform=O(),re.setAttributes=T(),re.insert=D().bind(null,"head"),re.domAPI=P(),re.insertStyleElement=N(),C()(ae.Z,re),ae.Z&&ae.Z.locals&&ae.Z.locals;const ne=(0,Y.Z)(ie,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[e._v(e._s(e.t("files_sharing","Search for share recipients")))]),e._v(" "),t("NcSelect",{ref:"select",staticClass:"sharing-search__input",attrs:{"input-id":"sharing-search-input",disabled:!e.canReshare,loading:e.loading,filterable:!1,placeholder:e.inputPlaceholder,"clear-search-on-blur":()=>!1,"user-select":!0,options:e.options},on:{open:e.handleOpen,search:e.asyncFind,"option:selected":e.addShare},scopedSlots:e._u([{key:"no-options",fn:function(t){let{search:s}=t;return[e._v("\n\t\t\t"+e._s(s?e.noResultText:e.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]}}]),model:{value:e.value,callback:function(t){e.value=t},expression:"value"}})],1)}),[],!1,null,null,null).exports;var oe=i(45400),he=i.n(oe),le=i(65358),ce=i(1162),de=i.n(ce),ue=i(25746),pe=i(25108);const fe={mixins:[te,_],props:{fileInfo:{type:Object,default:()=>{},required:!0},share:{type:g,default:null},isUnique:{type:Boolean,default:!0}},data(){var e;return{config:new u,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new ue.Z({concurrency:1}),reactiveState:null===(e=this.share)||void 0===e?void 0:e.state}},computed:{hasNote:{get(){return""!==this.share.note},set(e){this.share.note=e?null:""}},dateTomorrow:()=>new Date((new Date).setDate((new Date).getDate()+1)),lang(){const e=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],t=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:t,weekdaysMin:e,weekdaysShort:e},monthFormat:"MMM"}},isShareOwner(){return this.share&&this.share.owner===(0,j.ts)().uid}},methods:{checkShare:e=>(!e.password||"string"==typeof e.password&&""!==e.password.trim())&&!(e.expirationDate&&!e.expirationDate.isValid()),parseDateString(e){var t;if(e)return new Date(null===(t=e.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===t?void 0:t.pop())},formatDateToString:e=>new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())).toISOString().split("T")[0],onExpirationChange(e){this.share.expireDate=this.formatDateToString(e),this.queueUpdate("expireDate")},onExpirationDisable(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange(e){this.$set(this.share,"newNote",e.trim())},onNoteSubmit(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},async onDelete(){try{this.loading=!0,this.open=!1,await this.deleteShare(this.share.id),pe.debug("Share deleted",this.share.id);const e="file"===this.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:this.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:this.share.path});(0,m.s$)(e),this.$emit("remove:share",this.share)}catch(e){this.open=!0}finally{this.loading=!1}},queueUpdate(){for(var e=arguments.length,s=new Array(e),i=0;i<e;i++)s[i]=arguments[i];if(0!==s.length){if(this.share.id){const e={};return s.forEach((t=>{"object"==typeof this.share[t]?e[t]=JSON.stringify(this.share[t]):e[t]=this.share[t].toString()})),void this.updateQueue.add((async()=>{this.saving=!0,this.errors={};try{const i=await this.updateShare(this.share.id,e);s.indexOf("password")>=0&&(this.$delete(this.share,"newPassword"),this.share.passwordExpirationTime=i.password_expiration_time),this.$delete(this.errors,s[0]),(0,m.s$)(t("files_sharing","Share {propertyName} saved",{propertyName:s[0]}))}catch({message:e}){e&&""!==e&&(this.onSyncError(s[0],e),(0,m.x2)(t("files_sharing",e)))}finally{this.saving=!1}}))}pe.debug("Updated local share",this.share)}},onSyncError(e,t){switch(this.open=!0,e){case"password":case"pending":case"expireDate":case"label":case"note":{this.$set(this.errors,e,t);let s=this.$refs[e];if(s){s.$el&&(s=s.$el);const e=s.querySelector(".focusable");e&&e.focus()}break}case"sendPasswordByTalk":this.$set(this.errors,e,t),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:G()((function(e){this.queueUpdate(e)}),500)}},ge={name:"SharingEntryInherited",components:{NcActionButton:he(),NcActionLink:v(),NcActionText:de(),NcAvatar:l(),SharingEntrySimple:U},mixins:[fe],props:{share:{type:g,required:!0}},computed:{viaFileTargetUrl(){return(0,o.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName(){return(0,le.EZ)(this.share.viaPath)}}};var _e=i(33668),me={};me.styleTagTransform=O(),me.setAttributes=T(),me.insert=D().bind(null,"head"),me.domAPI=P(),me.insertStyleElement=N(),C()(_e.Z,me),_e.Z&&_e.Z.locals&&_e.Z.locals;const Ae=(0,Y.Z)(ge,(function(){var e=this,t=e._self._c;return t("SharingEntrySimple",{key:e.share.id,staticClass:"sharing-entry__inherited",attrs:{title:e.share.shareWithDisplayName},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.share.shareWith,"display-name":e.share.shareWithDisplayName}})]},proxy:!0}])},[e._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Added by {initiator}",{initiator:e.share.ownerDisplayName}))+"\n\t")]),e._v(" "),e.share.viaPath&&e.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:e.viaFileTargetUrl}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Via “{folder}”",{folder:e.viaFolderName}))+"\n\t")]):e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t")]):e._e()],1)}),[],!1,null,"038f97f0",null).exports;var ve=i(25108);const Ee={name:"SharingInherited",components:{NcActionButton:he(),SharingEntryInherited:Ae,SharingEntrySimple:U},props:{fileInfo:{type:Object,default:()=>{},required:!0}},data:()=>({loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}),computed:{showInheritedSharesIcon(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:()=>t("files_sharing","Others with access"),subTitle(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo(){this.resetState()}},methods:{toggleInheritedShares(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},async fetchInheritedShares(){this.loading=!0;try{const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:this.fullPath}),t=await c.default.get(e);this.shares=t.data.ocs.data.map((e=>new g(e))).sort(((e,t)=>t.createdTime-e.createdTime)),ve.info(this.shares),this.loaded=!0}catch(e){OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"})}finally{this.loading=!1}},resetState(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}};var ye=i(84772),we={};we.styleTagTransform=O(),we.setAttributes=T(),we.insert=D().bind(null,"head"),we.domAPI=P(),we.insertStyleElement=N(),C()(ye.Z,we),ye.Z&&ye.Z.locals&&ye.Z.locals;const Se=(0,Y.Z)(Ee,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:e.mainTitle,subtitle:e.subTitle,"aria-expanded":e.showInheritedShares},scopedSlots:e._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[e._v(" "),t("NcActionButton",{attrs:{icon:e.showInheritedSharesIcon,"aria-label":e.toggleTooltip,title:e.toggleTooltip},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.toggleInheritedShares.apply(null,arguments)}}})],1),e._v(" "),e._l(e.shares,(function(s){return t("SharingEntryInherited",{key:s.id,attrs:{"file-info":e.fileInfo,share:s},on:{"remove:share":e.removeShare}})}))],2)}),[],!1,null,"05b67dc8",null).exports;var Ce=i(81807),be=i.n(Ce),Pe=i(79570),xe=i.n(Pe),De=i(875),ke=i.n(De),Te=i(18074),Re=i.n(Te);const Ne={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:()=>({})},fileInfo:{type:Object,default:()=>{},required:!0},share:{type:g,default:null}},computed:{data(){return this.action.data(this)}}},Ie=(0,Y.Z)(Ne,(function(){var e=this;return(0,e._self._c)(e.data.is,e._g(e._b({tag:"Component"},"Component",e.data,!1),e.action.handlers),[e._v("\n\t"+e._s(e.data.text)+"\n")])}),[],!1,null,null,null).exports;var Oe=i(30158),Le=i.n(Oe);const He={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},Ye={READ_ONLY:He.READ,UPLOAD_AND_UPDATE:He.READ|He.UPDATE|He.CREATE|He.DELETE,FILE_DROP:He.CREATE,ALL:He.UPDATE|He.CREATE|He.READ|He.DELETE|He.SHARE};function Ue(e,t){return e!==He.NONE&&(e&t)===t}function Be(e){return!(!Ue(e,He.READ)&&!Ue(e,He.CREATE)||!Ue(e,He.READ)&&(Ue(e,He.UPDATE)||Ue(e,He.DELETE)))}function Me(e,t){return Ue(e,t)?function(e,t){return e&~t}(e,t):function(e,t){return e|t}(e,t)}var We=i(55976),Fe=i(32964);const qe={name:"SharePermissionsEditor",components:{NcActionButton:he(),NcActionCheckbox:be(),NcActionRadio:Le(),Tune:We.Z,ChevronLeft:Fe.default},mixins:[fe],data:()=>({randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:He,bundledPermissions:Ye}),computed:{sharePermissionsSummary(){return Object.values(this.atomicPermissions).filter((e=>this.shareHasPermissions(e))).map((e=>{switch(e){case this.atomicPermissions.CREATE:return this.t("files_sharing","Upload");case this.atomicPermissions.READ:return this.t("files_sharing","Read");case this.atomicPermissions.UPDATE:return this.t("files_sharing","Edit");case this.atomicPermissions.DELETE:return this.t("files_sharing","Delete");default:return null}})).filter((e=>null!==e)).join(", ")},sharePermissionsIsBundle(){return Object.values(Ye).map((e=>this.sharePermissionEqual(e))).filter((e=>e)).length>0},sharePermissionsSetIsValid(){return Be(this.share.permissions)},isFolder(){return"dir"===this.fileInfo.type},fileHasCreatePermission(){return!!(this.fileInfo.permissions&He.CREATE)}},mounted(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual(e){return(this.share.permissions&~He.SHARE)===e},shareHasPermissions(e){return Ue(this.share.permissions,e)},setSharePermissions(e){this.share.permissions=e,this.queueUpdate("permissions")},canToggleSharePermissions(e){return function(e,t){return Be(Me(e,t))}(this.share.permissions,e)},toggleSharePermissions(e){this.share.permissions=Me(this.share.permissions,e),Be(this.share.permissions)&&this.queueUpdate("permissions")}}};var je=i(3163),Ze={};Ze.styleTagTransform=O(),Ze.setAttributes=T(),Ze.insert=D().bind(null,"head"),Ze.domAPI=P(),Ze.insertStyleElement=N(),C()(je.Z,Ze),je.Z&&je.Z.locals&&je.Z.locals;const $e=(0,Y.Z)(qe,(function(){var e=this,t=e._self._c;return t("li",[t("ul",[e.isFolder?e._e():t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t")]),e._v(" "),e.isFolder&&e.fileHasCreatePermission&&e.config.isPublicUploadEnabled?[e.showCustomPermissionsForm?t("span",{class:{error:!e.sharePermissionsSetIsValid}},[t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.READ),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.READ)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.READ)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.CREATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.CREATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.CREATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Upload"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.UPDATE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.UPDATE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Edit"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.shareHasPermissions(e.atomicPermissions.DELETE),disabled:e.saving||!e.canToggleSharePermissions(e.atomicPermissions.DELETE)},on:{"update:checked":function(t){return e.toggleSharePermissions(e.atomicPermissions.DELETE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Delete"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{on:{click:function(t){e.showCustomPermissionsForm=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.READ_ONLY),value:e.bundledPermissions.READ_ONLY,name:e.randomFormName,disabled:e.saving},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.READ_ONLY)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Read only"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.UPLOAD_AND_UPDATE),value:e.bundledPermissions.UPLOAD_AND_UPDATE,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.UPLOAD_AND_UPDATE)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:e.sharePermissionEqual(e.bundledPermissions.FILE_DROP),value:e.bundledPermissions.FILE_DROP,disabled:e.saving,name:e.randomFormName},on:{change:function(t){return e.setSharePermissions(e.bundledPermissions.FILE_DROP)}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionButton",{attrs:{title:e.t("files_sharing","Custom permissions")},on:{click:function(t){e.showCustomPermissionsForm=!0}},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[e._v("\n\t\t\t\t\t"+e._s(e.sharePermissionsIsBundle?"":e.sharePermissionsSummary)+"\n\t\t\t\t")])]]:e._e()],2)])}),[],!1,null,"7cec8a94",null).exports;var Ge=i(25108);const Ve={name:"SharingEntryLink",components:{NcActions:y(),NcActionButton:he(),NcActionCheckbox:be(),NcActionInput:xe(),NcActionLink:v(),NcActionText:de(),NcActionTextEditable:Re(),NcActionSeparator:ke(),NcAvatar:l(),ExternalShareAction:Ie,SharePermissionsEditor:$e},mixins:[fe],props:{canReshare:{type:Boolean,default:!0},index:{type:Number,default:null}},data:()=>({copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}),computed:{title(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return this.index>1?t("files_sharing","Share link ({index})",{index:this.index}):t("files_sharing","Share link")},subtitle(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set(e){const t=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",Ge.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get(){return this.config.enforcePasswordForPublicLink||!!this.share.password},async set(e){a.default.set(this.share,"password",e?await J():""),a.default.set(this.share,"newPassword",this.share.password)}},passwordExpirationTime(){if(null===this.share.passwordExpirationTime)return null;const e=moment(this.share.passwordExpirationTime);return!(e.diff(moment())<0)&&e.fromNow()},isTalkEnabled:()=>void 0!==OC.appswebroots.spreed,isPasswordProtectedByTalkAvailable(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get(){return this.share.sendPasswordByTalk},async set(e){this.share.sendPasswordByTalk=e}},isEmailShareType(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword(){return void 0!==this.share.newPassword},shareLink(){return window.location.protocol+"//"+window.location.host+(0,o.generateUrl)("/s/")+this.share.token},actionsTooltip(){return t("files_sharing",'Actions for "{title}"',{title:this.title})},copyLinkTooltip(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing",'Copy public link of "{title}" to clipboard',{title:this.title})},externalLegacyLinkActions(){return this.ExternalLegacyLinkActions.actions},externalLinkActions(){return this.ExternalShareActions.actions.filter((e=>e.shareType.includes(p.D.SHARE_TYPE_LINK)||e.shareType.includes(p.D.SHARE_TYPE_EMAIL)))},isPasswordPolicyEnabled(){return"object"==typeof this.config.passwordPolicy},canChangeHideDownload(){return this.fileInfo.shareAttributes.some((e=>"download"===e.key&&"permissions"===e.scope&&!1===e.enabled))}},methods:{async onNewLinkShare(){if(this.loading)return;const e={share_type:p.D.SHARE_TYPE_LINK};if(this.config.isDefaultExpireDateEnforced&&(e.expiration=this.formatDateToString(this.config.defaultExpirationDate)),this.config.enableLinkPasswordByDefault&&(e.password=await J()),this.config.enforcePasswordForPublicLink||this.config.isDefaultExpireDateEnforced){if(this.pending=!0,this.share&&!this.share.id){if(this.checkShare(this.share)){try{await this.pushNewLinkShare(this.share,!0)}catch(e){return this.pending=!1,Ge.error(e),!1}return!0}return this.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),!1}this.config.enforcePasswordForPublicLink&&(e.password=await J());const s=new g(e),i=await new Promise((e=>{this.$emit("add:share",s,e)}));this.open=!1,this.pending=!1,i.open=!0}else{const t=new g(e);await this.pushNewLinkShare(t)}},async pushNewLinkShare(e,s){try{if(this.loading)return!0;this.loading=!0,this.errors={};const i={path:(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),shareType:p.D.SHARE_TYPE_LINK,password:e.password,expireDate:e.expireDate,attributes:JSON.stringify(this.fileInfo.shareAttributes)};Ge.debug("Creating link share with options",i);const a=await this.createShare(i);let r;this.open=!1,Ge.debug("Link share created",a),r=s?await new Promise((e=>{this.$emit("update:share",a,e)})):await new Promise((e=>{this.$emit("add:share",a,e)})),this.config.enforcePasswordForPublicLink||r.copyLink(),(0,m.s$)(t("sharing","Link share created"))}catch(e){var i,a,r,n;const s=null==e||null===(i=e.response)||void 0===i||null===(a=i.data)||void 0===a||null===(r=a.ocs)||void 0===r||null===(n=r.meta)||void 0===n?void 0:n.message;if(!s)return(0,m.x2)(t("sharing","Error while creating the share")),void Ge.error(e);throw s.match(/password/i)?this.onSyncError("password",s):s.match(/date/i)?this.onSyncError("expireDate",s):this.onSyncError("pending",s),e}finally{this.loading=!1}},onLabelChange(e){this.$set(this.share,"newLabel",e.trim())},onLabelSubmit(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},async copyLink(){try{await navigator.clipboard.writeText(this.shareLink),(0,m.s$)(t("files_sharing","Link copied")),this.$refs.copyButton.$el.focus(),this.copySuccess=!0,this.copied=!0}catch(e){this.copySuccess=!1,this.copied=!0,Ge.error(e)}finally{setTimeout((()=>{this.copySuccess=!1,this.copied=!1}),4e3)}},onPasswordChange(e){this.$set(this.share,"newPassword",e)},onPasswordDisable(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel(){this.$emit("remove:share",this.share)}}},Ke=Ve;var Qe=i(85795),ze={};ze.styleTagTransform=O(),ze.setAttributes=T(),ze.insert=D().bind(null,"head"),ze.domAPI=P(),ze.insertStyleElement=N(),C()(Qe.Z,ze),Qe.Z&&Qe.Z.locals&&Qe.Z.locals;const Je={name:"SharingLinkList",components:{SharingEntryLink:(0,Y.Z)(Ke,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":e.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":e.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),e._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:e.title}},[e._v("\n\t\t\t"+e._s(e.title)+"\n\t\t")]),e._v(" "),e.subtitle?t("p",[e._v("\n\t\t\t"+e._s(e.subtitle)+"\n\t\t")]):e._e()]),e._v(" "),e.share&&!e.isEmailShareType&&e.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionLink",{attrs:{href:e.shareLink,target:"_blank",title:e.copyLinkTooltip,"aria-label":e.copyLinkTooltip,icon:e.copied&&e.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(t){return t.stopPropagation(),t.preventDefault(),e.copyLink.apply(null,arguments)}}})],1):e._e(),e._v(" "),e.pending||!e.pendingPassword&&!e.pendingExpirationDate?e.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onMenuClose}},[e.share?[e.share.canEdit&&e.canReshare?[t("NcActionInput",{ref:"label",class:{error:e.errors.label},attrs:{disabled:e.saving,label:e.t("files_sharing","Share label"),value:void 0!==e.share.newLabel?e.share.newLabel:e.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":e.onLabelChange,submit:e.onLabelSubmit}}),e._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":e.canReshare,share:e.share,"file-info":e.fileInfo},on:{"update:share":function(t){e.share=t}}}),e._v(" "),t("NcActionSeparator"),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.share.hideDownload,disabled:e.saving||e.canChangeHideDownload},on:{"update:checked":function(t){return e.$set(e.share,"hideDownload",t)},change:function(t){return e.queueUpdate("hideDownload")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.enforcePasswordForPublicLink?e.t("files_sharing","Password protection (enforced)"):e.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),e._v(" "),e.isPasswordProtected?t("NcActionInput",{ref:"password",staticClass:"share-link-password",class:{error:e.errors.password},attrs:{disabled:e.saving,"show-trailing-button":e.hasUnsavedPassword,required:e.config.enforcePasswordForPublicLink,value:e.hasUnsavedPassword?e.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:e.hasUnsavedPassword?"text":"password"},on:{"update:value":e.onPasswordChange,submit:e.onPasswordSubmit}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isEmailShareType&&e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:e.passwordExpirationTime}))+"\n\t\t\t\t")]):e.isEmailShareType&&null!==e.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-error"}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):e._e(),e._v(" "),e.isPasswordProtectedByTalkAvailable?t("NcActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:e.isPasswordProtectedByTalk,disabled:!e.canTogglePasswordProtectedByTalkAvailable||e.saving},on:{"update:checked":function(t){e.isPasswordProtectedByTalk=t},change:e.onPasswordProtectedByTalkChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t\t"+e._s(e.config.isDefaultExpireDateEnforced?e.t("files_sharing","Expiration date (enforced)"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",staticClass:"share-link-expire-date",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,placeholder:e.t("files_sharing","Enter a note for the share recipient"),value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e(),e._v(" "),t("NcActionSeparator"),e._v(" "),e._l(e.externalLinkActions,(function(s){return t("ExternalShareAction",{key:s.id,attrs:{id:s.id,action:s,"file-info":e.fileInfo,share:e.share}})})),e._v(" "),e._l(e.externalLegacyLinkActions,(function(s,i){let{icon:a,url:r,name:n}=s;return t("NcActionLink",{key:i,attrs:{href:r(e.shareLink),icon:a,target:"_blank"}},[e._v("\n\t\t\t\t"+e._s(n)+"\n\t\t\t")])})),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isEmailShareType&&e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Add another link"))+"\n\t\t\t")]):e._e()]:e.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{title:e.t("files_sharing","Create a new share link"),"aria-label":e.t("files_sharing","Create a new share link"),icon:e.loading?"icon-loading-small":"icon-add"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}}):e._e()],2):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"aria-label":e.actionsTooltip,"menu-align":"right",open:e.open},on:{"update:open":function(t){e.open=t},close:e.onNewLinkShare}},[e.errors.pending?t("NcActionText",{class:{error:e.errors.pending},attrs:{icon:"icon-error"}},[e._v("\n\t\t\t"+e._s(e.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),e._v(" "),e.pendingPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):e.config.enableLinkPasswordByDefault?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:e.isPasswordProtected,disabled:e.config.enforcePasswordForPublicLink||e.saving},on:{"update:checked":function(t){e.isPasswordProtected=t},uncheck:e.onPasswordDisable}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Password protection"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingPassword||e.share.password?t("NcActionInput",{staticClass:"share-link-password",attrs:{value:e.share.password,disabled:e.saving,required:e.config.enableLinkPasswordByDefault||e.config.enforcePasswordForPublicLink,minlength:e.isPasswordPolicyEnabled&&e.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(t){return e.$set(e.share,"password",t)},submit:e.onNewLinkShare}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a password"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):e._e(),e._v(" "),e.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:e.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t")]):e._e(),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onNewLinkShare.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Create share"))+"\n\t\t")]),e._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(t){return t.preventDefault(),t.stopPropagation(),e.onCancel.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"3f82c612",null).exports},mixins:[_],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0},canReshare:{type:Boolean,required:!0}},data:()=>({canLinkShare:OC.getCapabilities().files_sharing.public.enabled}),computed:{hasLinkShares(){return this.shares.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK)).length>0},hasShares(){return this.shares.length>0}},methods:{addShare(e,t){this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare(e,t){this.$nextTick((()=>{const s=this.$children.find((t=>t.share===e));s&&t(s)}))},removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},Xe=(0,Y.Z)(Je,(function(){var e=this,t=e._self._c;return e.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!e.hasLinkShares&&e.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo},on:{"add:share":e.addShare}}):e._e(),e._v(" "),e.hasShares?e._l(e.shares,(function(s,i){return t("SharingEntryLink",{key:s.id,attrs:{index:e.shares.length>1?i+1:null,"can-reshare":e.canReshare,share:e.shares[i],"file-info":e.fileInfo},on:{"update:share":[function(t){return e.$set(e.shares,i,t)},function(t){return e.awaitForShare(...arguments)}],"add:share":function(t){return e.addShare(...arguments)},"remove:share":e.removeShare}})})):e._e()],2):e._e()}),[],!1,null,null,null).exports;var et=i(25108);const tt={name:"SharingEntry",components:{NcActions:y(),NcActionButton:he(),NcActionCheckbox:be(),NcActionInput:xe(),NcActionTextEditable:Re(),NcAvatar:l()},mixins:[fe],data:()=>({permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}),computed:{title(){let e=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?e+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?e+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?e+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?e+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(e+=" (".concat(t("files_sharing","guest"),")")),e},tooltip(){if(this.share.owner!==this.share.uidFileOwner){const e={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",e):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",e):t("files_sharing","Shared with {user} by {owner}",e)}return null},canHaveNote(){return!this.isRemote},isRemote(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload(){return this.fileInfo.canDownload()||this.canDownload},canEdit:{get(){return this.share.hasUpdatePermission},set(e){this.updatePermissions({isEditChecked:e})}},canCreate:{get(){return this.share.hasCreatePermission},set(e){this.updatePermissions({isCreateChecked:e})}},canDelete:{get(){return this.share.hasDeletePermission},set(e){this.updatePermissions({isDeleteChecked:e})}},canReshare:{get(){return this.share.hasSharePermission},set(e){this.updatePermissions({isReshareChecked:e})}},canDownload:{get(){return this.share.hasDownloadPermission},set(e){this.updatePermissions({isDownloadChecked:e})}},hasRead:{get(){return this.share.hasReadPermission}},isFolder(){return"dir"===this.fileInfo.type},hasExpirationDate:{get(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set(e){const t=this.config.defaultInternalExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=e?this.formatDateToString(t):"",et.debug("Expiration date status",e,this.share.expireDate)}},dateMaxEnforced(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},hasStatus(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"==typeof this.share.status&&!Array.isArray(this.share.status)},allowDownloadText:()=>t("files_sharing","Allow download"),isSetDownloadButtonVisible(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)}},methods:{updatePermissions(){let{isEditChecked:e=this.canEdit,isCreateChecked:t=this.canCreate,isDeleteChecked:s=this.canDelete,isReshareChecked:i=this.canReshare,isDownloadChecked:a=this.canDownload}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=0|(this.hasRead?this.permissionsRead:0)|(t?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(e?this.permissionsEdit:0)|(i?this.permissionsShare:0);this.share.permissions=r,this.share.hasDownloadPermission!==a&&(this.share.hasDownloadPermission=a),this.queueUpdate("permissions","attributes")},onMenuClose(){this.onNoteSubmit()}}};var st=i(10915),it={};it.styleTagTransform=O(),it.setAttributes=T(),it.insert=D().bind(null,"head"),it.domAPI=P(),it.insertStyleElement=N(),C()(st.Z,it),st.Z&&st.Z.locals&&st.Z.locals;const at={name:"SharingList",components:{SharingEntry:(0,Y.Z)(tt,(function(){var e=this,t=e._self._c;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":e.share.type!==e.SHARE_TYPES.SHARE_TYPE_USER,user:e.share.shareWith,"display-name":e.share.shareWithDisplayName,"menu-position":"left",url:e.share.shareWithAvatar}}),e._v(" "),t(e.share.shareWithLink?"a":"div",{tag:"component",staticClass:"sharing-entry__desc",attrs:{title:e.tooltip,"aria-label":e.tooltip,href:e.share.shareWithLink}},[t("span",[e._v(e._s(e.title)),e.isUnique?e._e():t("span",{staticClass:"sharing-entry__desc-unique"},[e._v(" ("+e._s(e.share.shareWithDisplayNameUnique)+")")])]),e._v(" "),e.hasStatus?t("p",[t("span",[e._v(e._s(e.share.status.icon||""))]),e._v(" "),t("span",[e._v(e._s(e.share.status.message||""))])]):e._e()]),e._v(" "),t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:e.onMenuClose}},[e.share.canEdit?[t("NcActionCheckbox",{ref:"canEdit",attrs:{checked:e.canEdit,value:e.permissionsEdit,disabled:e.saving||!e.canSetEdit},on:{"update:checked":function(t){e.canEdit=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow editing"))+"\n\t\t\t")]),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canCreate",attrs:{checked:e.canCreate,value:e.permissionsCreate,disabled:e.saving||!e.canSetCreate},on:{"update:checked":function(t){e.canCreate=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow creating"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isFolder?t("NcActionCheckbox",{ref:"canDelete",attrs:{checked:e.canDelete,value:e.permissionsDelete,disabled:e.saving||!e.canSetDelete},on:{"update:checked":function(t){e.canDelete=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):e._e(),e._v(" "),e.config.isResharingAllowed?t("NcActionCheckbox",{ref:"canReshare",attrs:{checked:e.canReshare,value:e.permissionsShare,disabled:e.saving||!e.canSetReshare},on:{"update:checked":function(t){e.canReshare=t}}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isSetDownloadButtonVisible?t("NcActionCheckbox",{ref:"canDownload",attrs:{checked:e.canDownload,disabled:e.saving||!e.canSetDownload},on:{"update:checked":function(t){e.canDownload=t}}},[e._v("\n\t\t\t\t"+e._s(e.allowDownloadText)+"\n\t\t\t")]):e._e(),e._v(" "),t("NcActionCheckbox",{attrs:{checked:e.hasExpirationDate,disabled:e.config.isDefaultInternalExpireDateEnforced||e.saving},on:{"update:checked":function(t){e.hasExpirationDate=t},uncheck:e.onExpirationDisable}},[e._v("\n\t\t\t\t"+e._s(e.config.isDefaultInternalExpireDateEnforced?e.t("files_sharing","Expiration date enforced"):e.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),e._v(" "),e.hasExpirationDate?t("NcActionInput",{ref:"expireDate",class:{error:e.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:e.saving,value:new Date(e.share.expireDate),type:"date",min:e.dateTomorrow,max:e.dateMaxEnforced},on:{input:e.onExpirationChange}},[e._v("\n\t\t\t\t"+e._s(e.t("files_sharing","Enter a date"))+"\n\t\t\t")]):e._e(),e._v(" "),e.canHaveNote?[t("NcActionCheckbox",{attrs:{checked:e.hasNote,disabled:e.saving},on:{"update:checked":function(t){e.hasNote=t},uncheck:function(t){return e.queueUpdate("note")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),e._v(" "),e.hasNote?t("NcActionTextEditable",{ref:"note",class:{error:e.errors.note},attrs:{disabled:e.saving,value:e.share.newNote||e.share.note,icon:"icon-edit"},on:{"update:value":e.onNoteChange,submit:e.onNoteSubmit}}):e._e()]:e._e()]:e._e(),e._v(" "),e.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:e.saving},on:{click:function(t){return t.preventDefault(),e.onDelete.apply(null,arguments)}}},[e._v("\n\t\t\t"+e._s(e.t("files_sharing","Unshare"))+"\n\t\t")]):e._e()],2)],1)}),[],!1,null,"325ebcb0",null).exports},mixins:[_],props:{fileInfo:{type:Object,default:()=>{},required:!0},shares:{type:Array,default:()=>[],required:!0}},computed:{hasShares(){return 0===this.shares.length},isUnique(){return e=>[...this.shares].filter((t=>e.type===this.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName)).length<=1}},methods:{removeShare(e){const t=this.shares.findIndex((t=>t===e));this.shares.splice(t,1)}}},rt=(0,Y.Z)(at,(function(){var e=this,t=e._self._c;return t("ul",{staticClass:"sharing-sharee-list"},e._l(e.shares,(function(s){return t("SharingEntry",{key:s.id,attrs:{"file-info":e.fileInfo,share:s,"is-unique":e.isUnique(s)},on:{"remove:share":e.removeShare}})})),1)}),[],!1,null,null,null).exports;var nt=i(25108);const ot={name:"SharingTab",components:{NcAvatar:l(),CollectionList:n.G,SharingEntryInternal:q,SharingEntrySimple:U,SharingInherited:Se,SharingInput:ne,SharingLinkList:Xe,SharingList:rt},mixins:[_],data:()=>({config:new u,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,d.j)("core","projects_enabled",!1)}),computed:{isSharedWithMe(){return Object.keys(this.sharedWithMe).length>0},canReshare(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{async update(e){this.fileInfo=e,this.resetState(),this.getShares()},async getShares(){try{this.loading=!0;const e=(0,o.generateOcsUrl)("apps/files_sharing/api/v1/shares"),t="json",s=(this.fileInfo.path+"/"+this.fileInfo.name).replace("//","/"),i=c.default.get(e,{params:{format:t,path:s,reshares:!0}}),a=c.default.get(e,{params:{format:t,path:s,shared_with_me:!0}}),[r,n]=await Promise.all([i,a]);this.loading=!1,this.processSharedWithMe(n),this.processShares(r)}catch(a){var e,s,i;null!==(e=a.response.data)&&void 0!==e&&null!==(s=e.ocs)&&void 0!==s&&null!==(i=s.meta)&&void 0!==i&&i.message?this.error=a.response.data.ocs.meta.message:this.error=t("files_sharing","Unable to load the shares list"),this.loading=!1,nt.error("Error loading the shares list",a)}},resetState(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle(e){const s=moment(e.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*s)})),moment().unix()>s&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares(e){let{data:t}=e;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){const e=t.ocs.data.map((e=>new g(e))).sort(((e,t)=>t.createdTime-e.createdTime));this.linkShares=e.filter((e=>e.type===this.SHARE_TYPES.SHARE_TYPE_LINK||e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL)),this.shares=e.filter((e=>e.type!==this.SHARE_TYPES.SHARE_TYPE_LINK&&e.type!==this.SHARE_TYPES.SHARE_TYPE_EMAIL)),nt.debug("Processed",this.linkShares.length,"link share(s)"),nt.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe(e){let{data:s}=e;if(s.ocs&&s.ocs.data&&s.ocs.data[0]){const e=new g(s),i=function(e){return e.type===p.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===p.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):e.type===p.D.SHARE_TYPE_ROOM?e.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:e.shareWithDisplayName,owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:e.ownerDisplayName},void 0,{escape:!1})}(e),a=e.ownerDisplayName,r=e.owner;this.sharedWithMe={displayName:a,title:i,user:r},this.reshare=e,e.expireDate&&moment(e.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(e),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,e))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{};e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(e):this.shares.unshift(e),this.awaitForShare(e,t)},awaitForShare(e,t){let s=this.$refs.shareList;e.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(s=this.$refs.linkShareList),this.$nextTick((()=>{const i=s.$children.find((t=>t.share===e));i&&t(i)}))}}},ht=ot;var lt=i(27172),ct={};ct.styleTagTransform=O(),ct.setAttributes=T(),ct.insert=D().bind(null,"head"),ct.domAPI=P(),ct.insertStyleElement=N(),C()(lt.Z,ct),lt.Z&<.Z.locals&<.Z.locals;const dt=(0,Y.Z)(ht,(function(){var e=this,t=e._self._c;return t("div",{class:{"icon-loading":e.loading}},[e.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:e.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),e._v(" "),t("h2",[e._v(e._s(e.error))])]):t("div",{staticClass:"sharingTab__content"},[e.isSharedWithMe?t("SharingEntrySimple",e._b({staticClass:"sharing-entry__reshare",scopedSlots:e._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:e.sharedWithMe.user,"display-name":e.sharedWithMe.displayName}})]},proxy:!0}],null,!1,3197855346)},"SharingEntrySimple",e.sharedWithMe,!1)):e._e(),e._v(" "),e.loading?e._e():t("SharingInput",{attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,"link-shares":e.linkShares,reshare:e.reshare,shares:e.shares},on:{"add:share":e.addShare}}),e._v(" "),e.loading?e._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":e.canReshare,"file-info":e.fileInfo,shares:e.linkShares}}),e._v(" "),e.loading?e._e():t("SharingList",{ref:"shareList",attrs:{shares:e.shares,"file-info":e.fileInfo}}),e._v(" "),e.canReshare&&!e.loading?t("SharingInherited",{attrs:{"file-info":e.fileInfo}}):e._e(),e._v(" "),t("SharingEntryInternal",{attrs:{"file-info":e.fileInfo}}),e._v(" "),e.projectsEnabled&&e.fileInfo?t("CollectionList",{attrs:{id:"".concat(e.fileInfo.id),type:"file",name:e.fileInfo.name}}):e._e()],1),e._v(" "),e._l(e.sections,(function(s,i){return t("div",{key:i,ref:"section-"+i,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(s(e.$refs["section-"+i],e.fileInfo),{tag:"component",attrs:{"file-info":e.fileInfo}})],1)}))],2)}),[],!1,null,"085eaa7e",null).exports;var ut=i(25108);var pt=i(25108);var ft=i(25108);var gt=i(44582);window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.results=[],ut.debug("OCA.Sharing.ShareSearch initialized")}get state(){return this._state}addNewResult(e){return""!==e.displayName.trim()&&"function"==typeof e.handler?(this._state.results.push(e),!0):(ut.error("Invalid search result provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],pt.debug("OCA.Sharing.ExternalLinkActions initialized")}get state(){return this._state}registerAction(e){return pt.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"==typeof e&&e.icon&&e.name&&e.url?(this._state.actions.push(e),!0):(pt.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_state"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._state={},this._state.actions=[],ft.debug("OCA.Sharing.ExternalShareActions initialized")}get state(){return this._state}registerAction(e){return"object"==typeof e&&"string"==typeof e.id&&"function"==typeof e.data&&Array.isArray(e.shareType)&&"object"==typeof e.handlers&&Object.values(e.handlers).every((e=>"function"==typeof e))?this._state.actions.findIndex((t=>t.id===e.id))>-1?(ft.error("An action with the same id ".concat(e.id," already exists"),e),!1):(this._state.actions.push(e),!0):(ft.error("Invalid action provided",e),!1)}}}),Object.assign(window.OCA.Sharing,{ShareTabSections:new class{constructor(){var e,t,s;e=this,s=void 0,(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var i=s.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t="_sections"))in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,this._sections=[]}registerSection(e){this._sections.push(e)}getSections(){return this._sections}}}),a.default.prototype.t=r.Iu,a.default.prototype.n=r.uN;const _t=a.default.extend(dt);let mt=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,r.Iu)("files_sharing","Sharing"),iconSvg:gt,async mount(e,t,s){mt&&mt.$destroy(),mt=new _t({parent:s}),await mt.update(t),mt.$mount(e)},update(e){mt.update(e)},destroy(){mt.$destroy(),mt=null}}))}))},3163:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".error[data-v-7cec8a94] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAEC,uDACC,mCAAA",sourcesContent:["\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]);const o=n},10915:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-325ebcb0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-325ebcb0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-325ebcb0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=n},33668:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]);const o=n},2256:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=n},85795:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-3f82c612]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-3f82c612]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-3f82c612]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-3f82c612]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-3f82c612]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-3f82c612] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-3f82c612]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-3f82c612]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-3f82c612]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-3f82c612],.sharing-entry .action-item~.sharing-entry__loading[data-v-3f82c612]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-3f82c612]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=n},46971:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry[data-v-02e83c36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-02e83c36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-02e83c36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-02e83c36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-02e83c36]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]);const o=n},14710:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA",sourcesContent:['\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const o=n},84772:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]);const o=n},27172:(e,t,s)=>{s.d(t,{Z:()=>o});var i=s(87537),a=s.n(i),r=s(23645),n=s.n(r)()(a());n.push([e.id,".emptyContentWithSections[data-v-085eaa7e]{margin:1rem auto}.sharingTab__content[data-v-085eaa7e]{padding:0 6px}.sharingTab__additionalContent[data-v-085eaa7e]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA",sourcesContent:["\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]);const o=n}},i={};function a(e){var t=i[e];if(void 0!==t)return t.exports;var r=i[e]={id:e,loaded:!1,exports:{}};return s[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=s,e=[],a.O=(t,s,i,r)=>{if(!s){var n=1/0;for(c=0;c<e.length;c++){s=e[c][0],i=e[c][1],r=e[c][2];for(var o=!0,h=0;h<s.length;h++)(!1&r||n>=r)&&Object.keys(a.O).every((e=>a.O[e](s[h])))?s.splice(h--,1):(o=!1,r<n&&(n=r));if(o){e.splice(c--,1);var l=i();void 0!==l&&(t=l)}}return t}r=r||0;for(var c=e.length;c>0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[s,i,r]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var s in t)a.o(t,s)&&!a.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.j=7870,(()=>{a.b=document.baseURI||self.location.href;var e={7870:0};a.O.j=t=>0===e[t];var t=(t,s)=>{var i,r,n=s[0],o=s[1],h=s[2],l=0;if(n.some((t=>0!==e[t]))){for(i in o)a.o(o,i)&&(a.m[i]=o[i]);if(h)var c=h(a)}for(t&&t(s);l<n.length;l++)r=n[l],a.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return a.O(c)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),a.nc=void 0;var r=a.O(void 0,[7874],(()=>a(24103)));r=a.O(r)})(); +//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=eb41033847e7c9a9ae85
\ No newline at end of file diff --git a/dist/files_sharing-files_sharing_tab.js.map b/dist/files_sharing-files_sharing_tab.js.map index 248b570e1f2..e9ae25e6c03 100644 --- a/dist/files_sharing-files_sharing_tab.js.map +++ b/dist/files_sharing-files_sharing_tab.js.map @@ -1 +1 @@ -{"version":3,"file":"files_sharing-files_sharing_tab.js?v=437b8f5d80940402f0c0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?97f3","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?1179","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?b00a","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?58c8","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?3fbf","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?de0b","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?82b4","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f69b","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?19a3","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?1ba5","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?64e9","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?e340","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?2ffc","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?b24f","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=2662d6f0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementsByClassName('files-filestable')[0]\n\t\t\t&& document.getElementsByClassName('files-filestable')[0].dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes[i] = attrUpdate\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionLink',{attrs:{\"href\":_vm.internalLink,\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions ref=\"actionsComponent\"\n\t\t\tv-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=02e83c36&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02e83c36\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionLink :href=\"internalLink\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.prevent=\"copyLink\" />\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport SharingEntrySimple from './SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy internal link to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.internalLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=71a426be&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71a426be\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"open\":_vm.handleOpen,\"search\":_vm.asyncFind,\"option:selected\":_vm.addShare},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService.js'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\tshowSuccess(t('files_sharing', 'Password created successfully'))\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share.js'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @param {string} [data.attributes=null] Share attributes encoded as json\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tinput-id=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\tv-model=\"value\"\n\t\t\t@open=\"handleOpen\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"addShare\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport Config from '../services/ConfigService.js'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t\tvalue: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\t// Fix dropdown not opening when viewer is open, see https://github.com/nextcloud/viewer/pull/1319\n\t\t\temit('viewer:trapElements:changed', this.$refs.select.$el)\n\t\t},\n\n\t\tasync asyncFind(query) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-circle',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Circle'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', 'ScienceMesh'),\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn {}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\t...this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\t// Clear the displayed selection\n\t\t\tthis.value = null\n\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again on error\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=486ec7c8&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = share.expirationDate\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(date)\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\t\t\t\t\t\tshowSuccess(t('files_sharing', 'Share {propertyName} saved', { propertyName: propertyNames[0] }))\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t\tshowError(t('files_sharing', message))\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=038f97f0&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"038f97f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.js'\nimport SharingEntryInherited from '../components/SharingEntryInherited.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=05b67dc8&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05b67dc8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share.js'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=0f0e27d0&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<NcActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</NcActionRadio>\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<NcActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox.js'\n\nimport Tune from 'vue-material-design-icons/Tune.vue'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft.vue'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=7cec8a94&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cec8a94\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<NcAvatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\" />\n\t\t</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<NcActionInput ref=\"label\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\" />\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving || canChangeHideDownload\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:show-trailing-button=\"hasUnsavedPassword\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</NcActionInput>\n\t\t\t\t\t<NcActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</NcActionText>\n\t\t\t\t\t<NcActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</NcActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<NcActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<NcActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:title=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\" />\n\t\t</NcActions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport SharePermissionsEditor from './SharePermissionsEditor.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionTextEditable,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.pending = false\n\t\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst options = {\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\t\t\t\tshowSuccess(t('sharing', 'Link share created'))\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t\tthrow data\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.shareLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submitted.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=2662d6f0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=2662d6f0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=2662d6f0&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=2662d6f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2662d6f0\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:index=\"shares.length > 1 ? index + 1 : null\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip,\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('NcActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('NcActionInput',{staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('NcActionInput',{ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}}),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving || _vm.canChangeHideDownload},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcActionInput',{ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"show-trailing-button\":_vm.hasUnsavedPassword,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('NcActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('NcActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function({icon, url, name},index){return _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"title\":_vm.t('files_sharing', 'Create a new share link'),\"aria-label\":_vm.t('files_sharing', 'Create a new share link'),\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}}):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=7f9f5a8a&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t:title=\"tooltip\"\n\t\t\t:aria-label=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<NcActions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<NcActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<NcActionCheckbox v-if=\"isSetDownloadButtonVisible\"\n\t\t\t\t\tref=\"canDownload\"\n\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t:disabled=\"saving || !canSetDownload\">\n\t\t\t\t\t{{ allowDownloadText }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</NcActionCheckbox>\n\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</NcActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable.js'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.canDownload() || this.canDownload)\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDownloadChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultInternalExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tallowDownloadText() {\n\t\t\treturn t('files_sharing', 'Allow download')\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.share.hasDownloadPermission = isDownloadChecked\n\t\t\t}\n\t\t\tthis.queueUpdate('permissions', 'attributes')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=325ebcb0&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"325ebcb0\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareTypes from '../mixins/ShareTypes.js'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('NcActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('NcActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isSetDownloadButtonVisible)?_c('NcActionCheckbox',{ref:\"canDownload\",attrs:{\"checked\":_vm.canDownload,\"disabled\":_vm.saving || !_vm.canSetDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.allowDownloadText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=7e1aeaa8&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<div v-else class=\"sharingTab__content\">\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</div>\n\n\t\t<!-- additional entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService.js'\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryInternal from '../components/SharingEntryInternal.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\nimport SharingInput from '../components/SharingInput.vue'\n\nimport SharingInherited from './SharingInherited.vue'\nimport SharingLinkList from './SharingLinkList.vue'\nimport SharingList from './SharingList.vue'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t\tprojectsEnabled: loadState('core', 'projects_enabled', false),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=085eaa7e&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"085eaa7e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticonSvg: ShareVariant,\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-7cec8a94] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAEC,uDACC,mCAAA\",\"sourcesContent\":[\"\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-325ebcb0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-325ebcb0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-325ebcb0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-2662d6f0]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-2662d6f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-2662d6f0]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-2662d6f0]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-2662d6f0]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-2662d6f0] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-2662d6f0]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-2662d6f0]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-2662d6f0]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-2662d6f0],.sharing-entry .action-item~.sharing-entry__loading[data-v-2662d6f0]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-2662d6f0]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-02e83c36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-02e83c36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-02e83c36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-02e83c36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-02e83c36]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-085eaa7e]{margin:1rem auto}.sharingTab__content[data-v-085eaa7e]{padding:0 6px}.sharingTab__additionalContent[data-v-085eaa7e]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA\",\"sourcesContent\":[\"\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7870: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(19258)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","isPublicUploadEnabled","document","getElementsByClassName","dataset","allowPublicUpload","isShareWithLinkAllowed","getElementById","value","federatedShareDocLink","OC","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","this","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","_capabilities$files_s","_capabilities$files_s2","_capabilities$files_s3","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","_OC$getCapabilities$f","_OC$getCapabilities$f2","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","parseInt","config","minSearchStringLength","passwordPolicy","password_policy","Share","constructor","ocsData","_ocsData$attributes","ocs","data","hide_download","mail_send","attributes","JSON","parse","e","console","warn","_share","state","id","type","share_type","permissions","owner","uid_owner","ownerDisplayName","displayname_owner","shareWith","share_with","shareWithDisplayName","share_with_displayname","shareWithDisplayNameUnique","share_with_displayname_unique","shareWithLink","share_with_link","shareWithAvatar","share_with_avatar","uidFileOwner","uid_file_owner","displaynameFileOwner","displayname_file_owner","createdTime","stime","expireDate","expiration","date","token","note","label","mailSend","hideDownload","passwordExpirationTime","password_expiration_time","sendPasswordByTalk","send_password_by_talk","path","itemType","item_type","mimetype","fileSource","file_source","fileTarget","file_target","fileParent","file_parent","hasReadPermission","PERMISSION_READ","hasCreatePermission","PERMISSION_CREATE","hasDeletePermission","PERMISSION_DELETE","hasUpdatePermission","PERMISSION_UPDATE","hasSharePermission","PERMISSION_SHARE","hasDownloadPermission","i","attr","scope","key","setAttribute","attrUpdate","push","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","parent","storageId","storage_id","storage","itemSource","item_source","status","SHARE_TYPES","ShareTypes","name","components","NcActions","props","title","String","default","required","subtitle","isUnique","Boolean","ariaExpanded","computed","ariaExpandedValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_t","_v","_s","_e","$slots","ref","attrs","NcActionLink","SharingEntrySimple","fileInfo","Object","copied","copySuccess","internalLink","window","location","protocol","host","generateUrl","copyLinkTooltip","t","internalLinkSubtitle","methods","navigator","clipboard","writeText","showSuccess","$refs","shareEntrySimple","actionsComponent","$el","focus","error","setTimeout","scopedSlots","_u","fn","proxy","on","$event","preventDefault","copyLink","apply","arguments","async","api","generate","request","axios","info","showError","array","Uint8Array","self","crypto","getRandomValues","length","charAt","passwordSet","shareUrl","generateOcsUrl","_ref","shareType","publicUpload","_request$data","_error$response","_error$response$data","_error$response$data$","_error$response$data$2","errorMessage","response","meta","message","Notification","showTemporary","_request$data2","concat","_error$response2","_error$response2$data","_error$response2$data2","_error$response2$data3","properties","_request$data3","_error$response3","_error$response3$data","_error$response3$data2","_error$response3$data3","Error","NcSelect","mixins","ShareRequests","shares","Array","linkShares","reshare","canReshare","loading","query","recommendations","ShareSearch","OCA","Sharing","suggestions","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","trim","noResultText","mounted","getRecommendations","handleOpen","emit","select","debounceGetSuggestions","search","lookup","query_lookup_default","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_CIRCLE","SHARE_TYPE_ROOM","SHARE_TYPE_GUEST","SHARE_TYPE_DECK","SHARE_TYPE_SCIENCEMESH","SHARE_TYPE_EMAIL","params","format","perPage","exact","rawExactSuggestions","values","reduce","arr","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","map","share","formatForMultiselect","sort","a","b","lookupEntry","lookupEnabled","isNoUser","displayName","filter","result","condition","allSuggestions","nameCounts","item","desc","debounce","getSuggestions","rawRecommendations","getCurrentUser","uid","indexOf","sharesObj","obj","shareTypeToIcon","icon","iconTitle","_result$shareWithDisp","server","_result$shareWithDesc","shareWithDescription","user","uuid","$nextTick","$children","open","handler","$emit","debug","GeneratePassword","replace","createShare","sharePermissions","default_permissions","stringify","shareAttributes","newPassword","Promise","resolve","clear-search-on-blur","asyncFind","addShare","model","callback","$$v","expression","SharesRequests","_this$share","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","checkShare","expirationDate","isValid","parseDateString","_date$match","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","deleteShare","_len","propertyNames","_key","forEach","toString","add","updatedShare","updateShare","propertyName","onSyncError","property","propertyEl","focusable","querySelector","debounceQueueUpdate","NcActionButton","NcActionText","NcAvatar","SharesMixin","viaFileTargetUrl","fileid","viaFolderName","basename","initiator","folder","onDelete","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","watch","resetState","toggleInheritedShares","fetchInheritedShares","url","removeShare","index","findIndex","splice","stopPropagation","_l","action","is","_g","_b","tag","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","NcActionCheckbox","NcActionRadio","Tune","ChevronLeft","randomFormName","Math","random","substring","showCustomPermissionsForm","atomicPermissions","bundledPermissions","sharePermissionsSummary","permission","shareHasPermissions","permissionLabel","join","sharePermissionsIsBundle","bundle","sharePermissionEqual","isBundle","sharePermissionsSetIsValid","isFolder","fileHasCreatePermission","setSharePermissions","canToggleSharePermissions","permissionSet","canTogglePermissions","toggleSharePermissions","class","NcActionInput","NcActionTextEditable","NcActionSeparator","ExternalShareAction","SharePermissionsEditor","Number","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","isEmailShareType","hasExpirationDate","dateMaxEnforced","isPasswordProtected","Vue","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingPassword","pendingExpirationDate","shareLink","actionsTooltip","externalLegacyLinkActions","actions","externalLinkActions","includes","isPasswordPolicyEnabled","canChangeHideDownload","some","shareAttribute","shareDefaults","pushNewLinkShare","component","update","newShare","_data$response","_data$response$data","_data$response$data$o","_data$response$data$o2","onLabelChange","onLabelSubmit","newLabel","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","SharingEntryLink","onNewLinkShare","minLength","canLinkShare","hasLinkShares","SHARE_TYPE_LINK","hasShares","unshift","awaitForShare","find","permissionsEdit","permissionsCreate","permissionsDelete","permissionsRead","permissionsShare","tooltip","canHaveNote","isRemote","canSetEdit","canSetCreate","canCreate","canSetDelete","canSetReshare","canSetDownload","canDownload","checked","updatePermissions","isEditChecked","isCreateChecked","isDeleteChecked","isReshareChecked","isDownloadChecked","hasRead","hasStatus","isArray","allowDownloadText","isSetDownloadButtonVisible","SharingEntry","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","loadState","isSharedWithMe","keys","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","clearInterval","updateExpirationSubtitle","unix","relativetime","Util","relativeModifiedDate","_ref2","group","escape","circle","conversation","shareWithTitle","setInterval","shareOwnerId","currentUser","shareOwner","listComponent","shareList","linkShareList","emptyContentWithSections","section","refInFor","assign","_state","addNewResult","registerAction","every","check","_sections","registerSection","n","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","el","context","$destroy","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","r","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"files_sharing-files_sharing_tab.js?v=eb41033847e7c9a9ae85","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?6c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?97f3","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?0c02","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?1179","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?65df","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?b00a","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?45a6","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?58c8","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?77d5","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?3fbf","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?de0b","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?82b4","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f69b","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?19a3","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?8b7c","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?64e9","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?e340","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?2ffc","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?f8d7","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?b24f","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?0ae8","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=3f82c612&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementsByClassName('files-filestable')[0]\n\t\t\t&& document.getElementsByClassName('files-filestable')[0].dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes[i] = attrUpdate\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionLink',{attrs:{\"href\":_vm.internalLink,\"aria-label\":_vm.copyLinkTooltip,\"title\":_vm.copyLinkTooltip,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions ref=\"actionsComponent\"\n\t\t\tv-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=02e83c36&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=02e83c36&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"02e83c36\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionLink :href=\"internalLink\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.prevent=\"copyLink\" />\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport SharingEntrySimple from './SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tNcActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy internal link to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.internalLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=71a426be&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=71a426be&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71a426be\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcSelect',{ref:\"select\",staticClass:\"sharing-search__input\",attrs:{\"input-id\":\"sharing-search-input\",\"disabled\":!_vm.canReshare,\"loading\":_vm.loading,\"filterable\":false,\"placeholder\":_vm.inputPlaceholder,\"clear-search-on-blur\":() => false,\"user-select\":true,\"options\":_vm.options},on:{\"open\":_vm.handleOpen,\"search\":_vm.asyncFind,\"option:selected\":_vm.addShare},scopedSlots:_vm._u([{key:\"no-options\",fn:function({ search }){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(search ? _vm.noResultText : _vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]}}]),model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService.js'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\n\nconst config = new Config()\n// note: some chars removed on purpose to make them human friendly when read out\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\tshowSuccess(t('files_sharing', 'Password created successfully'))\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t\tshowError(t('files_sharing', 'Error generating password from password policy'))\n\t\t}\n\t}\n\n\tconst array = new Uint8Array(10)\n\tconst ratio = passwordSet.length / 255\n\tself.crypto.getRandomValues(array)\n\tlet password = ''\n\tfor (let i = 0; i < array.length; i++) {\n\t\tpassword += passwordSet.charAt(array[i] * ratio)\n\t}\n\treturn password\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share.js'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @param {string} [data.attributes=null] Share attributes encoded as json\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcSelect ref=\"select\"\n\t\t\tinput-id=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:loading=\"loading\"\n\t\t\t:filterable=\"false\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:user-select=\"true\"\n\t\t\t:options=\"options\"\n\t\t\tv-model=\"value\"\n\t\t\t@open=\"handleOpen\"\n\t\t\t@search=\"asyncFind\"\n\t\t\t@option:selected=\"addShare\">\n\t\t\t<template #no-options=\"{ search }\">\n\t\t\t\t{{ search ? noResultText : t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport Config from '../services/ConfigService.js'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport ShareRequests from '../mixins/ShareRequests.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t\tvalue: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\thandleOpen() {\n\t\t\t// Fix dropdown not opening when viewer is open, see https://github.com/nextcloud/viewer/pull/1319\n\t\t\temit('viewer:trapElements:changed', this.$refs.select.$el)\n\t\t},\n\n\t\tasync asyncFind(query) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Guest'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-group',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Group'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Email'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-circle',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Circle'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-room',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Talk conversation'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-deck',\n\t\t\t\t\ticonTitle: t('files_sharing', 'Deck board'),\n\t\t\t\t}\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_SCIENCEMESH:\n\t\t\t\treturn {\n\t\t\t\t\ticon: 'icon-sciencemesh',\n\t\t\t\t\ticonTitle: t('files_sharing', 'ScienceMesh'),\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn {}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\t...this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\t// Clear the displayed selection\n\t\t\tthis.value = null\n\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// open the dropdown again on error\n\t\t\t\t\tthis.$refs.select.$children[0].open = true\n\t\t\t\t})\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\t}\n}\n\n.vs__dropdown-menu {\n\t// properly style the lookup entry\n\tspan[lookup] {\n\t\t.avatardiv {\n\t\t\tbackground-image: var(--icon-search-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\tdiv {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=486ec7c8&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&id=486ec7c8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.toggleTooltip,\"title\":_vm.toggleTooltip},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}})],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share},on:{\"remove:share\":_vm.removeShare}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n// eslint-disable-next-line import/no-unresolved, n/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = share.expirationDate\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(date)\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\t\t\t\t\t\tshowSuccess(t('files_sharing', 'Share {propertyName} saved', { propertyName: propertyNames[0] }))\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t\tshowError(t('files_sharing', message))\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=038f97f0&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=038f97f0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"038f97f0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"toggleTooltip\"\n\t\t\t\t:title=\"toggleTooltip\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\" />\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share.js'\nimport SharingEntryInherited from '../components/SharingEntryInherited.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=05b67dc8&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=05b67dc8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05b67dc8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"index\":_vm.shares.length > 1 ? index + 1 : null,\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare(...arguments)}],\"add:share\":function($event){return _vm.addShare(...arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share.js'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=0f0e27d0&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<NcActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</NcActionRadio>\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<NcActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox.js'\n\nimport Tune from 'vue-material-design-icons/Tune.vue'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft.vue'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=7cec8a94&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=7cec8a94&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cec8a94\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<NcAvatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:title=\"copyLinkTooltip\"\n\t\t\t\t:aria-label=\"copyLinkTooltip\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\" />\n\t\t</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<NcActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t:aria-label=\"actionsTooltip\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<NcActionInput ref=\"label\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\" />\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving || canChangeHideDownload\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:show-trailing-button=\"hasUnsavedPassword\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</NcActionInput>\n\t\t\t\t\t<NcActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</NcActionText>\n\t\t\t\t\t<NcActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</NcActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<NcActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<NcActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:title=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:aria-label=\"t('files_sharing', 'Create a new share link')\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\" />\n\t\t</NcActions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText.js'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator.js'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport SharePermissionsEditor from './SharePermissionsEditor.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcActionTextEditable,\n\t\tNcActionSeparator,\n\t\tNcAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.index > 1) {\n\t\t\t\treturn t('files_sharing', 'Share link ({index})', { index: this.index })\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for actions button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tactionsTooltip() {\n\t\t\treturn t('files_sharing', 'Actions for \"{title}\"', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * Tooltip message for copy button\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tcopyLinkTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy public link of \"{title}\" to clipboard', { title: this.title })\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.pending = false\n\t\t\t\t\t\t\tconsole.error(e)\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst options = {\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\t\t\t\tshowSuccess(t('sharing', 'Link share created'))\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t\tthrow data\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait navigator.clipboard.writeText(this.shareLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submitted.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=3f82c612&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=3f82c612&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=3f82c612&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=3f82c612&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3f82c612\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:index=\"shares.length > 1 ? index + 1 : null\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryLink from '../components/SharingEntryLink.vue'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"title\":_vm.copyLinkTooltip,\"aria-label\":_vm.copyLinkTooltip,\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}})],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('NcActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('NcActionInput',{staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"aria-label\":_vm.actionsTooltip,\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('NcActionInput',{ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}}),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving || _vm.canChangeHideDownload},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcActionInput',{ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"show-trailing-button\":_vm.hasUnsavedPassword,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('NcActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('NcActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function({icon, url, name},index){return _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"title\":_vm.t('files_sharing', 'Create a new share link'),\"aria-label\":_vm.t('files_sharing', 'Create a new share link'),\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}}):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=7f9f5a8a&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\t:title=\"tooltip\"\n\t\t\t:aria-label=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<NcActions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<NcActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<NcActionCheckbox v-if=\"isSetDownloadButtonVisible\"\n\t\t\t\t\tref=\"canDownload\"\n\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t:disabled=\"saving || !canSetDownload\">\n\t\t\t\t\t{{ allowDownloadText }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</NcActionCheckbox>\n\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</NcActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput.js'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable.js'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.canDownload() || this.canDownload)\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDownloadChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultInternalExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tallowDownloadText() {\n\t\t\treturn t('files_sharing', 'Allow download')\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.share.hasDownloadPermission = isDownloadChecked\n\t\t\t}\n\t\t\tthis.queueUpdate('permissions', 'attributes')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=325ebcb0&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=325ebcb0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"325ebcb0\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share.js'\nimport SharingEntry from '../components/SharingEntry.vue'\nimport ShareTypes from '../mixins/ShareTypes.js'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"title\":_vm.tooltip,\"aria-label\":_vm.tooltip,\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('NcActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('NcActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isSetDownloadButtonVisible)?_c('NcActionCheckbox',{ref:\"canDownload\",attrs:{\"checked\":_vm.canDownload,\"disabled\":_vm.saving || !_vm.canSetDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.allowDownloadText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=7e1aeaa8&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<div v-else class=\"sharingTab__content\">\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</div>\n\n\t\t<!-- additional entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService.js'\nimport { shareWithTitle } from '../utils/SharedWithMe.js'\nimport Share from '../models/Share.js'\nimport ShareTypes from '../mixins/ShareTypes.js'\nimport SharingEntryInternal from '../components/SharingEntryInternal.vue'\nimport SharingEntrySimple from '../components/SharingEntrySimple.vue'\nimport SharingInput from '../components/SharingInput.vue'\n\nimport SharingInherited from './SharingInherited.vue'\nimport SharingLinkList from './SharingLinkList.vue'\nimport SharingList from './SharingList.vue'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t\tprojectsEnabled: loadState('core', 'projects_enabled', false),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=085eaa7e&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=085eaa7e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"085eaa7e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName}})]},proxy:true}],null,false,3197855346)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":`${_vm.fileInfo.id}`,\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticonSvg: ShareVariant,\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-7cec8a94] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAEC,uDACC,mCAAA\",\"sourcesContent\":[\"\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-325ebcb0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-325ebcb0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-325ebcb0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-325ebcb0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-038f97f0]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-038f97f0]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-038f97f0]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-038f97f0]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-71a426be]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-71a426be]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAEC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-3f82c612]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-3f82c612]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-3f82c612]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-3f82c612]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-3f82c612]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-3f82c612] .avatar-link-share{background-color:var(--color-primary-element)}.sharing-entry .sharing-entry__action--public-upload[data-v-3f82c612]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-3f82c612]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-3f82c612]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-3f82c612],.sharing-entry .action-item~.sharing-entry__loading[data-v-3f82c612]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-3f82c612]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,mDACC,6CAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-02e83c36]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-02e83c36]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-02e83c36]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-02e83c36]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-02e83c36]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AACA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.vs__dropdown-menu span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.vs__dropdown-menu span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AACA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAOA,2CACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,+CACC,YAAA\",\"sourcesContent\":[\"\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\t}\\n}\\n\\n.vs__dropdown-menu {\\n\\t// properly style the lookup entry\\n\\tspan[lookup] {\\n\\t\\t.avatardiv {\\n\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tdiv {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-05b67dc8]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAEC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-085eaa7e]{margin:1rem auto}.sharingTab__content[data-v-085eaa7e]{padding:0 6px}.sharingTab__additionalContent[data-v-085eaa7e]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA\",\"sourcesContent\":[\"\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7870: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(24103)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","isPublicUploadEnabled","document","getElementsByClassName","dataset","allowPublicUpload","isShareWithLinkAllowed","getElementById","value","federatedShareDocLink","OC","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","this","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","_capabilities$files_s","_capabilities$files_s2","_capabilities$files_s3","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","_OC$getCapabilities$f","_OC$getCapabilities$f2","sharee","always_show_unique","allowGroupSharing","maxAutocompleteResults","parseInt","config","minSearchStringLength","passwordPolicy","password_policy","Share","constructor","ocsData","_ocsData$attributes","ocs","data","hide_download","mail_send","attributes","JSON","parse","e","console","warn","_share","state","id","type","share_type","permissions","owner","uid_owner","ownerDisplayName","displayname_owner","shareWith","share_with","shareWithDisplayName","share_with_displayname","shareWithDisplayNameUnique","share_with_displayname_unique","shareWithLink","share_with_link","shareWithAvatar","share_with_avatar","uidFileOwner","uid_file_owner","displaynameFileOwner","displayname_file_owner","createdTime","stime","expireDate","expiration","date","token","note","label","mailSend","hideDownload","passwordExpirationTime","password_expiration_time","sendPasswordByTalk","send_password_by_talk","path","itemType","item_type","mimetype","fileSource","file_source","fileTarget","file_target","fileParent","file_parent","hasReadPermission","PERMISSION_READ","hasCreatePermission","PERMISSION_CREATE","hasDeletePermission","PERMISSION_DELETE","hasUpdatePermission","PERMISSION_UPDATE","hasSharePermission","PERMISSION_SHARE","hasDownloadPermission","i","attr","scope","key","setAttribute","attrUpdate","push","canEdit","can_edit","canDelete","can_delete","viaFileid","via_fileid","viaPath","via_path","parent","storageId","storage_id","storage","itemSource","item_source","status","SHARE_TYPES","ShareTypes","name","components","NcActions","props","title","String","default","required","subtitle","isUnique","Boolean","ariaExpanded","computed","ariaExpandedValue","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_t","_v","_s","_e","$slots","ref","attrs","NcActionLink","SharingEntrySimple","fileInfo","Object","copied","copySuccess","internalLink","window","location","protocol","host","generateUrl","copyLinkTooltip","t","internalLinkSubtitle","methods","navigator","clipboard","writeText","showSuccess","$refs","shareEntrySimple","actionsComponent","$el","focus","error","setTimeout","scopedSlots","_u","fn","proxy","on","$event","preventDefault","copyLink","apply","arguments","async","api","generate","request","axios","info","showError","array","Uint8Array","self","crypto","getRandomValues","length","charAt","passwordSet","shareUrl","generateOcsUrl","_ref","shareType","publicUpload","_request$data","_error$response","_error$response$data","_error$response$data$","_error$response$data$2","errorMessage","response","meta","message","Notification","showTemporary","_request$data2","concat","_error$response2","_error$response2$data","_error$response2$data2","_error$response2$data3","properties","_request$data3","_error$response3","_error$response3$data","_error$response3$data2","_error$response3$data3","Error","NcSelect","mixins","ShareRequests","shares","Array","linkShares","reshare","canReshare","loading","query","recommendations","ShareSearch","OCA","Sharing","suggestions","externalResults","results","inputPlaceholder","allowRemoteSharing","isValidQuery","trim","noResultText","mounted","getRecommendations","handleOpen","emit","select","debounceGetSuggestions","search","lookup","query_lookup_default","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_CIRCLE","SHARE_TYPE_ROOM","SHARE_TYPE_GUEST","SHARE_TYPE_DECK","SHARE_TYPE_SCIENCEMESH","SHARE_TYPE_EMAIL","params","format","perPage","exact","rawExactSuggestions","values","reduce","arr","elem","rawSuggestions","exactSuggestions","filterOutExistingShares","map","share","formatForMultiselect","sort","a","b","lookupEntry","lookupEnabled","isNoUser","displayName","filter","result","condition","allSuggestions","nameCounts","item","desc","debounce","getSuggestions","rawRecommendations","getCurrentUser","uid","indexOf","sharesObj","obj","shareTypeToIcon","icon","iconTitle","_result$shareWithDisp","server","_result$shareWithDesc","shareWithDescription","user","uuid","$nextTick","$children","open","handler","$emit","debug","GeneratePassword","replace","createShare","sharePermissions","default_permissions","stringify","shareAttributes","newPassword","Promise","resolve","clear-search-on-blur","asyncFind","addShare","model","callback","$$v","expression","SharesRequests","_this$share","errors","saving","updateQueue","PQueue","concurrency","reactiveState","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","checkShare","expirationDate","isValid","parseDateString","_date$match","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","deleteShare","_len","propertyNames","_key","forEach","toString","add","updatedShare","updateShare","propertyName","onSyncError","property","propertyEl","focusable","querySelector","debounceQueueUpdate","NcActionButton","NcActionText","NcAvatar","SharesMixin","viaFileTargetUrl","fileid","viaFolderName","basename","initiator","folder","onDelete","SharingEntryInherited","loaded","showInheritedShares","showInheritedSharesIcon","mainTitle","subTitle","toggleTooltip","fullPath","watch","resetState","toggleInheritedShares","fetchInheritedShares","url","removeShare","index","findIndex","splice","stopPropagation","_l","action","is","_g","_b","tag","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","NcActionCheckbox","NcActionRadio","Tune","ChevronLeft","randomFormName","Math","random","substring","showCustomPermissionsForm","atomicPermissions","bundledPermissions","sharePermissionsSummary","permission","shareHasPermissions","permissionLabel","join","sharePermissionsIsBundle","bundle","sharePermissionEqual","isBundle","sharePermissionsSetIsValid","isFolder","fileHasCreatePermission","setSharePermissions","canToggleSharePermissions","permissionSet","canTogglePermissions","toggleSharePermissions","class","NcActionInput","NcActionTextEditable","NcActionSeparator","ExternalShareAction","SharePermissionsEditor","Number","pending","ExternalLegacyLinkActions","ExternalLinkActions","ExternalShareActions","isEmailShareType","hasExpirationDate","dateMaxEnforced","isPasswordProtected","Vue","expirationTime","moment","diff","fromNow","isTalkEnabled","appswebroots","spreed","isPasswordProtectedByTalkAvailable","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","hasUnsavedPassword","pendingPassword","pendingExpirationDate","shareLink","actionsTooltip","externalLegacyLinkActions","actions","externalLinkActions","includes","isPasswordPolicyEnabled","canChangeHideDownload","some","shareAttribute","shareDefaults","pushNewLinkShare","component","update","newShare","_data$response","_data$response$data","_data$response$data$o","_data$response$data$o2","onLabelChange","onLabelSubmit","newLabel","copyButton","onPasswordChange","onPasswordDisable","onPasswordSubmit","onPasswordProtectedByTalkChange","onMenuClose","onCancel","SharingEntryLink","onNewLinkShare","minLength","canLinkShare","hasLinkShares","SHARE_TYPE_LINK","hasShares","unshift","awaitForShare","find","permissionsEdit","permissionsCreate","permissionsDelete","permissionsRead","permissionsShare","tooltip","canHaveNote","isRemote","canSetEdit","canSetCreate","canCreate","canSetDelete","canSetReshare","canSetDownload","canDownload","checked","updatePermissions","isEditChecked","isCreateChecked","isDeleteChecked","isReshareChecked","isDownloadChecked","hasRead","hasStatus","isArray","allowDownloadText","isSetDownloadButtonVisible","SharingEntry","CollectionList","SharingEntryInternal","SharingInherited","SharingInput","SharingLinkList","SharingList","expirationInterval","sharedWithMe","sections","ShareTabSections","getSections","projectsEnabled","loadState","isSharedWithMe","keys","getShares","fetchShares","reshares","fetchSharedWithMe","shared_with_me","all","processSharedWithMe","processShares","clearInterval","updateExpirationSubtitle","unix","relativetime","Util","relativeModifiedDate","_ref2","group","escape","circle","conversation","shareWithTitle","setInterval","shareOwnerId","currentUser","shareOwner","listComponent","shareList","linkShareList","emptyContentWithSections","section","refInFor","assign","_state","addNewResult","registerAction","every","check","_sections","registerSection","n","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","el","context","$destroy","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","r","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/settings-vue-settings-admin-basic-settings.js b/dist/settings-vue-settings-admin-basic-settings.js index b7970cd07b0..4274dd5e981 100644 --- a/dist/settings-vue-settings-admin-basic-settings.js +++ b/dist/settings-vue-settings-admin-basic-settings.js @@ -1,3 +1,3 @@ /*! For license information please see settings-vue-settings-admin-basic-settings.js.LICENSE.txt */ -(()=>{var e,s={47684:(e,s,n)=>{"use strict";var o=n(20144),a=n(45994),r=n(79954),i=n(31352);n(36144);const c=(0,n(17499).IY)().setApp("settings").detectUser().build();var l=n(64024),d=n(4820),u=n(79753),A=n(10128);n(65509);const g=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",FEDIVERSE:"fediverse",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),b=Object.freeze({ADDRESS:(0,i.Iu)("settings","Location"),AVATAR:(0,i.Iu)("settings","Profile picture"),BIOGRAPHY:(0,i.Iu)("settings","About"),DISPLAYNAME:(0,i.Iu)("settings","Full name"),EMAIL_COLLECTION:(0,i.Iu)("settings","Additional email"),EMAIL:(0,i.Iu)("settings","Email"),HEADLINE:(0,i.Iu)("settings","Headline"),ORGANISATION:(0,i.Iu)("settings","Organisation"),PHONE:(0,i.Iu)("settings","Phone number"),PROFILE_ENABLED:(0,i.Iu)("settings","Profile"),ROLE:(0,i.Iu)("settings","Role"),TWITTER:(0,i.Iu)("settings","Twitter"),FEDIVERSE:(0,i.Iu)("settings","Fediverse (e.g. Mastodon)"),WEBSITE:(0,i.Iu)("settings","Website")}),E=(Object.freeze({[g.ADDRESS]:b.ADDRESS,[g.AVATAR]:b.AVATAR,[g.BIOGRAPHY]:b.BIOGRAPHY,[g.DISPLAYNAME]:b.DISPLAYNAME,[g.EMAIL_COLLECTION]:b.EMAIL_COLLECTION,[g.EMAIL]:b.EMAIL,[g.HEADLINE]:b.HEADLINE,[g.ORGANISATION]:b.ORGANISATION,[g.PHONE]:b.PHONE,[g.PROFILE_ENABLED]:b.PROFILE_ENABLED,[g.ROLE]:b.ROLE,[g.TWITTER]:b.TWITTER,[g.FEDIVERSE]:b.FEDIVERSE,[g.WEBSITE]:b.WEBSITE}),Object.freeze({PROFILE_VISIBILITY:(0,i.Iu)("settings","Profile visibility")}),Object.freeze({[b.ADDRESS]:g.ADDRESS,[b.AVATAR]:g.AVATAR,[b.BIOGRAPHY]:g.BIOGRAPHY,[b.DISPLAYNAME]:g.DISPLAYNAME,[b.EMAIL_COLLECTION]:g.EMAIL_COLLECTION,[b.EMAIL]:g.EMAIL,[b.HEADLINE]:g.HEADLINE,[b.ORGANISATION]:g.ORGANISATION,[b.PHONE]:g.PHONE,[b.PROFILE_ENABLED]:g.PROFILE_ENABLED,[b.ROLE]:g.ROLE,[b.TWITTER]:g.TWITTER,[b.FEDIVERSE]:g.FEDIVERSE,[b.WEBSITE]:g.WEBSITE}),Object.freeze({LANGUAGE:"language",LOCALE:"locale"}),Object.freeze({LANGUAGE:(0,i.Iu)("settings","Language"),LOCALE:(0,i.Iu)("settings","Locale")}),Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}));Object.freeze({[b.ADDRESS]:[E.LOCAL,E.PRIVATE],[b.AVATAR]:[E.LOCAL,E.PRIVATE],[b.BIOGRAPHY]:[E.LOCAL,E.PRIVATE],[b.DISPLAYNAME]:[E.LOCAL],[b.EMAIL_COLLECTION]:[E.LOCAL],[b.EMAIL]:[E.LOCAL],[b.HEADLINE]:[E.LOCAL,E.PRIVATE],[b.ORGANISATION]:[E.LOCAL,E.PRIVATE],[b.PHONE]:[E.LOCAL,E.PRIVATE],[b.PROFILE_ENABLED]:[E.LOCAL,E.PRIVATE],[b.ROLE]:[E.LOCAL,E.PRIVATE],[b.TWITTER]:[E.LOCAL,E.PRIVATE],[b.FEDIVERSE]:[E.LOCAL,E.PRIVATE],[b.WEBSITE]:[E.LOCAL,E.PRIVATE]}),Object.freeze([b.BIOGRAPHY,b.HEADLINE,b.ORGANISATION,b.ROLE]),Object.freeze({[E.PRIVATE]:{name:E.PRIVATE,displayName:(0,i.Iu)("settings","Private"),tooltip:(0,i.Iu)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,i.Iu)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"},[E.LOCAL]:{name:E.LOCAL,displayName:(0,i.Iu)("settings","Local"),tooltip:(0,i.Iu)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"},[E.FEDERATED]:{name:E.FEDERATED,displayName:(0,i.Iu)("settings","Federated"),tooltip:(0,i.Iu)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,i.Iu)("settings","Not available as federation has been disabled for your account, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"},[E.PUBLISHED]:{name:E.PUBLISHED,displayName:(0,i.Iu)("settings","Published"),tooltip:(0,i.Iu)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,i.Iu)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}}),E.LOCAL,Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2});var j=n(20571),p=n.n(j);const I=(0,r.j)("settings","profileEnabledByDefault",!0),m={name:"ProfileSettings",components:{NcCheckboxRadioSwitch:p()},data:()=>({initialProfileEnabledByDefault:I}),methods:{async onProfileDefaultChange(e){"boolean"==typeof e&&await this.updateProfileDefault(e)},async updateProfileDefault(e){try{var s,n;const t=await(async e=>{e=e?"1":"0";const t=(0,u.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"settings",key:"profile_enabled_by_default"});return await(0,A.confirmPassword)(),(await d.default.post(t,{value:e})).data})(e);this.handleResponse({isEnabled:e,status:null===(s=t.ocs)||void 0===s||null===(n=s.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update profile default setting"),error:e})}},handleResponse(e){let{isEnabled:t,status:s,errorMessage:n,error:o}=e;"ok"===s?this.initialProfileEnabledByDefault=t:((0,l.x2)(n),c.error(n,o))}}};var h=n(51900);const v=(0,h.Z)(m,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"section",attrs:{id:"profile-settings"}},[t("h2",{staticClass:"inlineblock"},[e._v("\n\t\t"+e._s(e.t("settings","Profile"))+"\n\t")]),e._v(" "),t("p",{staticClass:"settings-hint"},[e._v("\n\t\t"+e._s(e.t("settings","Enable or disable profile by default for new users."))+"\n\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:e.initialProfileEnabledByDefault},on:{"update:checked":[function(t){e.initialProfileEnabledByDefault=t},e.onProfileDefaultChange]}},[e._v("\n\t\t"+e._s(e.t("settings","Enable"))+"\n\t")])],1)}),[],!1,null,"5afdc030",null).exports;var f=n(13299),L=n.n(f),y=n(57290),C=n.n(y),O=n(80351),R=n.n(O),N=n(25108);const T=(0,r.j)("settings","lastCron"),k=(0,r.j)("settings","cronMaxAge",""),D=(0,r.j)("settings","backgroundJobsMode","cron"),P=(0,r.j)("settings","cliBasedCronPossible",!0),M=(0,r.j)("settings","cliBasedCronUser","www-data"),S=(0,r.j)("settings","backgroundJobsDocUrl"),x={name:"BackgroundJob",components:{NcCheckboxRadioSwitch:p(),NcSettingsSection:L(),NcNoteCard:C()},data:()=>({lastCron:T,cronMaxAge:k,backgroundJobsMode:D,cliBasedCronPossible:P,cliBasedCronUser:M,backgroundJobsDocUrl:S,relativeTime:R()(1e3*T).fromNow(),maxAgeRelativeTime:R()(1e3*k).fromNow()}),computed:{cronLabel(){let e=t("settings","Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances.");return this.cliBasedCronPossible&&(e+=" "+t("settings",'The cron.php needs to be executed by the system user "{user}".',{user:this.cliBasedCronUser})),e},oldExecution(){return Date.now()/1e3-this.lastCron>600},longExecutionNotCron(){return Date.now()/1e3-this.cronMaxAge>43200&&"cron"!==this.backgroundJobsMode},longExecutionCron(){return Date.now()/1e3-this.cronMaxAge>86400&&"cron"===this.backgroundJobsMode}},methods:{async onBackgroundJobModeChanged(e){const s=(0,u.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"core",key:"backgroundjobs_mode"});await(0,A.confirmPassword)();try{var n,o;const{data:t}=await d.default.post(s,{value:e});this.handleResponse({status:null===(n=t.ocs)||void 0===n||null===(o=n.meta)||void 0===o?void 0:o.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update background job mode"),error:e})}},async handleResponse(e){let{status:t,errorMessage:s,error:n}=e;"ok"===t?await this.deleteError():((0,l.x2)(s),N.error(s,n))},async deleteError(){const e=(0,u.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"core",key:"cronErrors"});await(0,A.confirmPassword)();try{await d.default.delete(e)}catch(e){N.error(e)}}}},w=x;var _=n(93379),B=n.n(_),z=n(7795),H=n.n(z),V=n(90569),F=n.n(V),G=n(3565),J=n.n(G),U=n(19216),W=n.n(U),Z=n(44589),Y=n.n(Z),q=n(63139),X={};X.styleTagTransform=Y(),X.setAttributes=J(),X.insert=F().bind(null,"head"),X.domAPI=H(),X.insertStyleElement=W(),B()(q.Z,X),q.Z&&q.Z.locals&&q.Z.locals;const Q=(0,h.Z)(w,(function(){var e=this,t=e._self._c;return t("NcSettingsSection",{attrs:{title:e.t("settings","Background jobs"),description:e.t("settings","For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information."),"doc-url":e.backgroundJobsDocUrl}},[0!==e.lastCron?[e.oldExecution?t("NcNoteCard",{attrs:{type:"error"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Last job execution ran {time}. Something seems wrong.",{time:e.relativeTime}))+"\n\t\t")]):e.longExecutionCron?t("NcNoteCard",{attrs:{type:"warning"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Some jobs have not been executed since {maxAgeRelativeTime}. Please consider increasing the execution frequency.",{maxAgeRelativeTime:e.maxAgeRelativeTime}))+"\n\t\t")]):e.longExecutionNotCron?t("NcNoteCard",{attrs:{type:"warning"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Some jobs have not been executed since {maxAgeRelativeTime}. Please consider switching to system cron.",{maxAgeRelativeTime:e.maxAgeRelativeTime}))+"\n\t\t")]):t("NcNoteCard",{attrs:{type:"success"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Last job ran {relativeTime}.",{relativeTime:e.relativeTime}))+"\n\t\t")])]:t("NcNoteCard",{attrs:{type:"error"}},[e._v("\n\t\t"+e._s(e.t("settings","Background job did not run yet!"))+"\n\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"ajaxSwitch",attrs:{type:"radio",checked:e.backgroundJobsMode,name:"backgroundJobsMode",value:"ajax"},on:{"update:checked":[function(t){e.backgroundJobsMode=t},e.onBackgroundJobModeChanged]}},[e._v("\n\t\t"+e._s(e.t("settings","AJAX"))+"\n\t")]),e._v(" "),t("em",[e._v(e._s(e.t("settings","Execute one task with each page loaded. Use case: Single user instance.")))]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:e.backgroundJobsMode,name:"backgroundJobsMode",value:"webcron"},on:{"update:checked":[function(t){e.backgroundJobsMode=t},e.onBackgroundJobModeChanged]}},[e._v("\n\t\t"+e._s(e.t("settings","Webcron"))+"\n\t")]),e._v(" "),t("em",[e._v(e._s(e.t("settings","cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).")))]),e._v(" "),e.cliBasedCronPossible?t("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:e.backgroundJobsMode,value:"cron",name:"backgroundJobsMode"},on:{"update:checked":[function(t){e.backgroundJobsMode=t},e.onBackgroundJobModeChanged]}},[e._v("\n\t\t"+e._s(e.t("settings","Cron (Recommended)"))+"\n\t")]):e._e(),e._v(" "),e.cliBasedCronPossible?t("em",[e._v(e._s(e.cronLabel))]):t("em",[e._v("\n\t\t{{ t('settings', 'To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.', {\n\t\t\tlinkstart: '"),t("a",{attrs:{href:"https://www.php.net/manual/en/book.posix.php"}},[e._v("',\n\t\t\tlinkend: '")]),e._v("',\n\t\t}) }}\n\t")])],2)}),[],!1,null,"35d90e04",null).exports;n.nc=btoa((0,a.IH)());const $=(0,r.j)("settings","profileEnabledGlobally",!0);o.default.mixin({props:{logger:c},methods:{t:i.Iu}}),(new(o.default.extend(Q))).$mount("#vue-admin-background-job"),$&&(new(o.default.extend(v))).$mount("#vue-admin-profile-settings")},63139:(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var n=s(87537),o=s.n(n),a=s(23645),r=s.n(a)()(o());r.push([e.id,".error[data-v-35d90e04]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-text);background-color:var(--color-error);width:initial}.warning[data-v-35d90e04]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-text);background-color:var(--color-warning);width:initial}.ajaxSwitch[data-v-35d90e04]{margin-top:1rem}","",{version:3,sources:["webpack://./apps/settings/src/components/BasicSettings/BackgroundJob.vue"],names:[],mappings:"AACA,wBACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,+BAAA,CACA,mCAAA,CACA,aAAA,CAED,0BACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,+BAAA,CACA,qCAAA,CACA,aAAA,CAED,6BACC,eAAA",sourcesContent:["\n.error {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-error);\n\twidth: initial;\n}\n.warning {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-warning);\n\twidth: initial;\n}\n.ajaxSwitch {\n\tmargin-top: 1rem;\n}\n"],sourceRoot:""}]);const i=r},46700:(e,t,s)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(e){var t=a(e);return s(t)}function a(e){if(!s.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=a,e.exports=o,o.id=46700},81490:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return s[e].call(a.exports,a,a.exports,o),a.loaded=!0,a.exports}o.m=s,e=[],o.O=(t,s,n,a)=>{if(!s){var r=1/0;for(d=0;d<e.length;d++){s=e[d][0],n=e[d][1],a=e[d][2];for(var i=!0,c=0;c<s.length;c++)(!1&a||r>=a)&&Object.keys(o.O).every((e=>o.O[e](s[c])))?s.splice(c--,1):(i=!1,a<r&&(r=a));if(i){e.splice(d--,1);var l=n();void 0!==l&&(t=l)}}return t}a=a||0;for(var d=e.length;d>0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[s,n,a]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var s in t)o.o(t,s)&&!o.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=6192,(()=>{o.b=document.baseURI||self.location.href;var e={6192:0};o.O.j=t=>0===e[t];var t=(t,s)=>{var n,a,r=s[0],i=s[1],c=s[2],l=0;if(r.some((t=>0!==e[t]))){for(n in i)o.o(i,n)&&(o.m[n]=i[n]);if(c)var d=c(o)}for(t&&t(s);l<r.length;l++)a=r[l],o.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return o.O(d)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),o.nc=void 0;var a=o.O(void 0,[7874],(()=>o(47684)));a=o.O(a)})(); -//# sourceMappingURL=settings-vue-settings-admin-basic-settings.js.map?v=66523871fe34ebcf1b41
\ No newline at end of file +(()=>{var e,s={96966:(e,s,n)=>{"use strict";var o=n(20144),a=n(45994),r=n(79954),i=n(31352);n(36144);const l=(0,n(17499).IY)().setApp("settings").detectUser().build();var c=n(64024),d=n(4820),u=n(79753),A=n(10128);n(65509);const g=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",FEDIVERSE:"fediverse",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),b=Object.freeze({ADDRESS:(0,i.Iu)("settings","Location"),AVATAR:(0,i.Iu)("settings","Profile picture"),BIOGRAPHY:(0,i.Iu)("settings","About"),DISPLAYNAME:(0,i.Iu)("settings","Full name"),EMAIL_COLLECTION:(0,i.Iu)("settings","Additional email"),EMAIL:(0,i.Iu)("settings","Email"),HEADLINE:(0,i.Iu)("settings","Headline"),ORGANISATION:(0,i.Iu)("settings","Organisation"),PHONE:(0,i.Iu)("settings","Phone number"),PROFILE_ENABLED:(0,i.Iu)("settings","Profile"),ROLE:(0,i.Iu)("settings","Role"),TWITTER:(0,i.Iu)("settings","Twitter"),FEDIVERSE:(0,i.Iu)("settings","Fediverse (e.g. Mastodon)"),WEBSITE:(0,i.Iu)("settings","Website")}),E=(Object.freeze({[g.ADDRESS]:b.ADDRESS,[g.AVATAR]:b.AVATAR,[g.BIOGRAPHY]:b.BIOGRAPHY,[g.DISPLAYNAME]:b.DISPLAYNAME,[g.EMAIL_COLLECTION]:b.EMAIL_COLLECTION,[g.EMAIL]:b.EMAIL,[g.HEADLINE]:b.HEADLINE,[g.ORGANISATION]:b.ORGANISATION,[g.PHONE]:b.PHONE,[g.PROFILE_ENABLED]:b.PROFILE_ENABLED,[g.ROLE]:b.ROLE,[g.TWITTER]:b.TWITTER,[g.FEDIVERSE]:b.FEDIVERSE,[g.WEBSITE]:b.WEBSITE}),Object.freeze({PROFILE_VISIBILITY:(0,i.Iu)("settings","Profile visibility")}),Object.freeze({[b.ADDRESS]:g.ADDRESS,[b.AVATAR]:g.AVATAR,[b.BIOGRAPHY]:g.BIOGRAPHY,[b.DISPLAYNAME]:g.DISPLAYNAME,[b.EMAIL_COLLECTION]:g.EMAIL_COLLECTION,[b.EMAIL]:g.EMAIL,[b.HEADLINE]:g.HEADLINE,[b.ORGANISATION]:g.ORGANISATION,[b.PHONE]:g.PHONE,[b.PROFILE_ENABLED]:g.PROFILE_ENABLED,[b.ROLE]:g.ROLE,[b.TWITTER]:g.TWITTER,[b.FEDIVERSE]:g.FEDIVERSE,[b.WEBSITE]:g.WEBSITE}),Object.freeze({LANGUAGE:"language",LOCALE:"locale"}),Object.freeze({LANGUAGE:(0,i.Iu)("settings","Language"),LOCALE:(0,i.Iu)("settings","Locale")}),Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}));Object.freeze({[b.ADDRESS]:[E.LOCAL,E.PRIVATE],[b.AVATAR]:[E.LOCAL,E.PRIVATE],[b.BIOGRAPHY]:[E.LOCAL,E.PRIVATE],[b.DISPLAYNAME]:[E.LOCAL],[b.EMAIL_COLLECTION]:[E.LOCAL],[b.EMAIL]:[E.LOCAL],[b.HEADLINE]:[E.LOCAL,E.PRIVATE],[b.ORGANISATION]:[E.LOCAL,E.PRIVATE],[b.PHONE]:[E.LOCAL,E.PRIVATE],[b.PROFILE_ENABLED]:[E.LOCAL,E.PRIVATE],[b.ROLE]:[E.LOCAL,E.PRIVATE],[b.TWITTER]:[E.LOCAL,E.PRIVATE],[b.FEDIVERSE]:[E.LOCAL,E.PRIVATE],[b.WEBSITE]:[E.LOCAL,E.PRIVATE]}),Object.freeze([b.BIOGRAPHY,b.HEADLINE,b.ORGANISATION,b.ROLE]),Object.freeze({[E.PRIVATE]:{name:E.PRIVATE,displayName:(0,i.Iu)("settings","Private"),tooltip:(0,i.Iu)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,i.Iu)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"},[E.LOCAL]:{name:E.LOCAL,displayName:(0,i.Iu)("settings","Local"),tooltip:(0,i.Iu)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"},[E.FEDERATED]:{name:E.FEDERATED,displayName:(0,i.Iu)("settings","Federated"),tooltip:(0,i.Iu)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,i.Iu)("settings","Not available as federation has been disabled for your account, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"},[E.PUBLISHED]:{name:E.PUBLISHED,displayName:(0,i.Iu)("settings","Published"),tooltip:(0,i.Iu)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,i.Iu)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}}),E.LOCAL,Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2});var j=n(20571),p=n.n(j);const I=(0,r.j)("settings","profileEnabledByDefault",!0),m={name:"ProfileSettings",components:{NcCheckboxRadioSwitch:p()},data:()=>({initialProfileEnabledByDefault:I}),methods:{async onProfileDefaultChange(e){"boolean"==typeof e&&await this.updateProfileDefault(e)},async updateProfileDefault(e){try{var s,n;const t=await(async e=>{e=e?"1":"0";const t=(0,u.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"settings",key:"profile_enabled_by_default"});return await(0,A.confirmPassword)(),(await d.default.post(t,{value:e})).data})(e);this.handleResponse({isEnabled:e,status:null===(s=t.ocs)||void 0===s||null===(n=s.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update profile default setting"),error:e})}},handleResponse(e){let{isEnabled:t,status:s,errorMessage:n,error:o}=e;"ok"===s?this.initialProfileEnabledByDefault=t:((0,c.x2)(n),l.error(n,o))}}};var h=n(51900);const v=(0,h.Z)(m,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"section",attrs:{id:"profile-settings"}},[t("h2",{staticClass:"inlineblock"},[e._v("\n\t\t"+e._s(e.t("settings","Profile"))+"\n\t")]),e._v(" "),t("p",{staticClass:"settings-hint"},[e._v("\n\t\t"+e._s(e.t("settings","Enable or disable profile by default for new users."))+"\n\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:e.initialProfileEnabledByDefault},on:{"update:checked":[function(t){e.initialProfileEnabledByDefault=t},e.onProfileDefaultChange]}},[e._v("\n\t\t"+e._s(e.t("settings","Enable"))+"\n\t")])],1)}),[],!1,null,"5afdc030",null).exports;var f=n(13299),L=n.n(f),y=n(57290),C=n.n(y),O=n(80351),R=n.n(O),N=n(25108);const T=(0,r.j)("settings","lastCron"),k=(0,r.j)("settings","cronMaxAge",""),D=(0,r.j)("settings","backgroundJobsMode","cron"),P=(0,r.j)("settings","cliBasedCronPossible",!0),M=(0,r.j)("settings","cliBasedCronUser","www-data"),S=(0,r.j)("settings","backgroundJobsDocUrl"),x={name:"BackgroundJob",components:{NcCheckboxRadioSwitch:p(),NcSettingsSection:L(),NcNoteCard:C()},data:()=>({lastCron:T,cronMaxAge:k,backgroundJobsMode:D,cliBasedCronPossible:P,cliBasedCronUser:M,backgroundJobsDocUrl:S,relativeTime:R()(1e3*T).fromNow(),maxAgeRelativeTime:R()(1e3*k).fromNow()}),computed:{cronLabel(){let e=t("settings","Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances.");return this.cliBasedCronPossible&&(e+=" "+t("settings",'The cron.php needs to be executed by the system user "{user}".',{user:this.cliBasedCronUser})),e},oldExecution(){return Date.now()/1e3-this.lastCron>600},longExecutionNotCron(){return Date.now()/1e3-this.cronMaxAge>43200&&"cron"!==this.backgroundJobsMode},longExecutionCron(){return Date.now()/1e3-this.cronMaxAge>86400&&"cron"===this.backgroundJobsMode}},methods:{async onBackgroundJobModeChanged(e){const s=(0,u.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"core",key:"backgroundjobs_mode"});await(0,A.confirmPassword)();try{var n,o;const{data:t}=await d.default.post(s,{value:e});this.handleResponse({status:null===(n=t.ocs)||void 0===n||null===(o=n.meta)||void 0===o?void 0:o.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update background job mode"),error:e})}},async handleResponse(e){let{status:t,errorMessage:s,error:n}=e;"ok"===t?await this.deleteError():((0,c.x2)(s),N.error(s,n))},async deleteError(){const e=(0,u.generateOcsUrl)("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"core",key:"cronErrors"});await(0,A.confirmPassword)();try{await d.default.delete(e)}catch(e){N.error(e)}}}},w=x;var _=n(93379),B=n.n(_),z=n(7795),H=n.n(z),V=n(90569),F=n.n(V),G=n(3565),J=n.n(G),U=n(19216),W=n.n(U),Z=n(44589),Y=n.n(Z),q=n(9673),X={};X.styleTagTransform=Y(),X.setAttributes=J(),X.insert=F().bind(null,"head"),X.domAPI=H(),X.insertStyleElement=W(),B()(q.Z,X),q.Z&&q.Z.locals&&q.Z.locals;const Q=(0,h.Z)(w,(function(){var e=this,t=e._self._c;return t("NcSettingsSection",{attrs:{title:e.t("settings","Background jobs"),description:e.t("settings","For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information."),"doc-url":e.backgroundJobsDocUrl}},[0!==e.lastCron?[e.oldExecution?t("NcNoteCard",{attrs:{type:"error"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Last job execution ran {time}. Something seems wrong.",{time:e.relativeTime}))+"\n\t\t")]):e.longExecutionCron?t("NcNoteCard",{attrs:{type:"warning"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Some jobs have not been executed since {maxAgeRelativeTime}. Please consider increasing the execution frequency.",{maxAgeRelativeTime:e.maxAgeRelativeTime}))+"\n\t\t")]):e.longExecutionNotCron?t("NcNoteCard",{attrs:{type:"warning"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Some jobs have not been executed since {maxAgeRelativeTime}. Please consider switching to system cron.",{maxAgeRelativeTime:e.maxAgeRelativeTime}))+"\n\t\t")]):t("NcNoteCard",{attrs:{type:"success"}},[e._v("\n\t\t\t"+e._s(e.t("settings","Last job ran {relativeTime}.",{relativeTime:e.relativeTime}))+"\n\t\t")])]:t("NcNoteCard",{attrs:{type:"error"}},[e._v("\n\t\t"+e._s(e.t("settings","Background job did not run yet!"))+"\n\t")]),e._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"ajaxSwitch",attrs:{type:"radio",checked:e.backgroundJobsMode,name:"backgroundJobsMode",value:"ajax"},on:{"update:checked":[function(t){e.backgroundJobsMode=t},e.onBackgroundJobModeChanged]}},[e._v("\n\t\t"+e._s(e.t("settings","AJAX"))+"\n\t")]),e._v(" "),t("em",[e._v(e._s(e.t("settings","Execute one task with each page loaded. Use case: Single user instance.")))]),e._v(" "),t("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:e.backgroundJobsMode,name:"backgroundJobsMode",value:"webcron"},on:{"update:checked":[function(t){e.backgroundJobsMode=t},e.onBackgroundJobModeChanged]}},[e._v("\n\t\t"+e._s(e.t("settings","Webcron"))+"\n\t")]),e._v(" "),t("em",[e._v(e._s(e.t("settings","cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).")))]),e._v(" "),e.cliBasedCronPossible?t("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:e.backgroundJobsMode,value:"cron",name:"backgroundJobsMode"},on:{"update:checked":[function(t){e.backgroundJobsMode=t},e.onBackgroundJobModeChanged]}},[e._v("\n\t\t"+e._s(e.t("settings","Cron (Recommended)"))+"\n\t")]):e._e(),e._v(" "),e.cliBasedCronPossible?t("em",[e._v(e._s(e.cronLabel))]):t("em",[e._v("\n\t\t{{ t('settings', 'To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.', {\n\t\t\tlinkstart: '"),t("a",{attrs:{href:"https://www.php.net/manual/en/book.posix.php"}},[e._v("',\n\t\t\tlinkend: '")]),e._v("',\n\t\t}) }}\n\t")])],2)}),[],!1,null,"6829f11e",null).exports;n.nc=btoa((0,a.IH)());const $=(0,r.j)("settings","profileEnabledGlobally",!0);o.default.mixin({props:{logger:l},methods:{t:i.Iu}}),(new(o.default.extend(Q))).$mount("#vue-admin-background-job"),$&&(new(o.default.extend(v))).$mount("#vue-admin-profile-settings")},9673:(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var n=s(87537),o=s.n(n),a=s(23645),r=s.n(a)()(o());r.push([e.id,".error[data-v-6829f11e]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-element-text);background-color:var(--color-error);width:initial}.warning[data-v-6829f11e]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-element-text);background-color:var(--color-warning);width:initial}.ajaxSwitch[data-v-6829f11e]{margin-top:1rem}","",{version:3,sources:["webpack://./apps/settings/src/components/BasicSettings/BackgroundJob.vue"],names:[],mappings:"AACA,wBACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,uCAAA,CACA,mCAAA,CACA,aAAA,CAED,0BACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,uCAAA,CACA,qCAAA,CACA,aAAA,CAED,6BACC,eAAA",sourcesContent:["\n.error {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-element-text);\n\tbackground-color: var(--color-error);\n\twidth: initial;\n}\n.warning {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-element-text);\n\tbackground-color: var(--color-warning);\n\twidth: initial;\n}\n.ajaxSwitch {\n\tmargin-top: 1rem;\n}\n"],sourceRoot:""}]);const i=r},46700:(e,t,s)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(e){var t=a(e);return s(t)}function a(e){if(!s.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}o.keys=function(){return Object.keys(n)},o.resolve=a,e.exports=o,o.id=46700},81490:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return s[e].call(a.exports,a,a.exports,o),a.loaded=!0,a.exports}o.m=s,e=[],o.O=(t,s,n,a)=>{if(!s){var r=1/0;for(d=0;d<e.length;d++){s=e[d][0],n=e[d][1],a=e[d][2];for(var i=!0,l=0;l<s.length;l++)(!1&a||r>=a)&&Object.keys(o.O).every((e=>o.O[e](s[l])))?s.splice(l--,1):(i=!1,a<r&&(r=a));if(i){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}a=a||0;for(var d=e.length;d>0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[s,n,a]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var s in t)o.o(t,s)&&!o.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=6192,(()=>{o.b=document.baseURI||self.location.href;var e={6192:0};o.O.j=t=>0===e[t];var t=(t,s)=>{var n,a,r=s[0],i=s[1],l=s[2],c=0;if(r.some((t=>0!==e[t]))){for(n in i)o.o(i,n)&&(o.m[n]=i[n]);if(l)var d=l(o)}for(t&&t(s);c<r.length;c++)a=r[c],o.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return o.O(d)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),o.nc=void 0;var a=o.O(void 0,[7874],(()=>o(96966)));a=o.O(a)})(); +//# sourceMappingURL=settings-vue-settings-admin-basic-settings.js.map?v=ee8214a713374eb1b62b
\ No newline at end of file diff --git a/dist/settings-vue-settings-admin-basic-settings.js.map b/dist/settings-vue-settings-admin-basic-settings.js.map index 8d35c77d580..33ea4b4a176 100644 --- a/dist/settings-vue-settings-admin-basic-settings.js.map +++ b/dist/settings-vue-settings-admin-basic-settings.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-admin-basic-settings.js?v=66523871fe34ebcf1b41","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack://nextcloud/./apps/settings/src/components/BasicSettings/ProfileSettings.vue?6932","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack://nextcloud/./apps/settings/src/components/BasicSettings/ProfileSettings.vue?cd3c","webpack://nextcloud/./apps/settings/src/components/BasicSettings/BackgroundJob.vue?6936","webpack:///nextcloud/apps/settings/src/components/BasicSettings/BackgroundJob.vue","webpack:///nextcloud/apps/settings/src/components/BasicSettings/BackgroundJob.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/BasicSettings/BackgroundJob.vue?f4c8","webpack://nextcloud/./apps/settings/src/components/BasicSettings/BackgroundJob.vue?e6cc","webpack:///nextcloud/apps/settings/src/main-admin-basic-settings.js","webpack:///nextcloud/apps/settings/src/components/BasicSettings/BackgroundJob.vue?vue&type=style&index=0&id=35d90e04&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"profile-settings\"}},[_c('h2',{staticClass:\"inlineblock\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Profile'))+\"\\n\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable or disable profile by default for new users.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.initialProfileEnabledByDefault},on:{\"update:checked\":[function($event){_vm.initialProfileEnabledByDefault=$event},_vm.onProfileDefaultChange]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tFEDIVERSE: 'fediverse',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Location'),\n\tAVATAR: t('settings', 'Profile picture'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tFEDIVERSE: t('settings', 'Fediverse (e.g. Mastodon)'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\nexport const NAME_READABLE_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n\tLOCALE: 'locale',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n\tLOCALE: t('settings', 'Locale'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as federation has been disabled for your account, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div id=\"profile-settings\"\n\t\tclass=\"section\">\n\t\t<h2 class=\"inlineblock\">\n\t\t\t{{ t('settings', 'Profile') }}\n\t\t</h2>\n\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Enable or disable profile by default for new users.') }}\n\t\t</p>\n\n\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"initialProfileEnabledByDefault\"\n\t\t\t@update:checked=\"onProfileDefaultChange\">\n\t\t\t{{ t('settings', 'Enable') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport { saveProfileDefault } from '../../service/ProfileService.js'\nimport { validateBoolean } from '../../utils/validate.js'\nimport logger from '../../logger.js'\n\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nconst profileEnabledByDefault = loadState('settings', 'profileEnabledByDefault', true)\n\nexport default {\n\tname: 'ProfileSettings',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabledByDefault: profileEnabledByDefault,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onProfileDefaultChange(isEnabled) {\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateProfileDefault(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateProfileDefault(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileDefault(isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile default setting'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialProfileEnabledByDefault = isEnabled\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tlogger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSettings.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the URL input\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateUrl(input) {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew URL(input)\n\t\treturn true\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate the locale input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLocale(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","import { render, staticRenderFns } from \"./ProfileSettings.vue?vue&type=template&id=5afdc030&scoped=true&\"\nimport script from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5afdc030\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcSettingsSection',{attrs:{\"title\":_vm.t('settings', 'Background jobs'),\"description\":_vm.t('settings', 'For the server to work properly, it\\'s important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information.'),\"doc-url\":_vm.backgroundJobsDocUrl}},[(_vm.lastCron !== 0)?[(_vm.oldExecution)?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Last job execution ran {time}. Something seems wrong.', {time: _vm.relativeTime}))+\"\\n\\t\\t\")]):(_vm.longExecutionCron)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider increasing the execution frequency.\", {maxAgeRelativeTime: _vm.maxAgeRelativeTime}))+\"\\n\\t\\t\")]):(_vm.longExecutionNotCron)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider switching to system cron.\", {maxAgeRelativeTime: _vm.maxAgeRelativeTime}))+\"\\n\\t\\t\")]):_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Last job ran {relativeTime}.', {relativeTime: _vm.relativeTime}))+\"\\n\\t\\t\")])]:_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Background job did not run yet!'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"ajaxSwitch\",attrs:{\"type\":\"radio\",\"checked\":_vm.backgroundJobsMode,\"name\":\"backgroundJobsMode\",\"value\":\"ajax\"},on:{\"update:checked\":[function($event){_vm.backgroundJobsMode=$event},_vm.onBackgroundJobModeChanged]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'AJAX'))+\"\\n\\t\")]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Execute one task with each page loaded. Use case: Single user instance.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.backgroundJobsMode,\"name\":\"backgroundJobsMode\",\"value\":\"webcron\"},on:{\"update:checked\":[function($event){_vm.backgroundJobsMode=$event},_vm.onBackgroundJobModeChanged]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Webcron'))+\"\\n\\t\")]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(_vm.t('settings', 'cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).')))]),_vm._v(\" \"),(_vm.cliBasedCronPossible)?_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.backgroundJobsMode,\"value\":\"cron\",\"name\":\"backgroundJobsMode\"},on:{\"update:checked\":[function($event){_vm.backgroundJobsMode=$event},_vm.onBackgroundJobModeChanged]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Cron (Recommended)'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.cliBasedCronPossible)?_c('em',[_vm._v(_vm._s(_vm.cronLabel))]):_c('em',[_vm._v(\"\\n\\t\\t{{ t('settings', 'To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.', {\\n\\t\\t\\tlinkstart: '\"),_c('a',{attrs:{\"href\":\"https://www.php.net/manual/en/book.posix.php\"}},[_vm._v(\"',\\n\\t\\t\\tlinkend: '\")]),_vm._v(\"',\\n\\t\\t}) }}\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n\t-\n\t- @author Carl Schwan <carl@carlschwan.eu>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcSettingsSection :title=\"t('settings', 'Background jobs')\"\n\t\t:description=\"t('settings', 'For the server to work properly, it\\'s important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information.')\"\n\t\t:doc-url=\"backgroundJobsDocUrl\">\n\t\t<template v-if=\"lastCron !== 0\">\n\t\t\t<NcNoteCard v-if=\"oldExecution\" type=\"error\">\n\t\t\t\t{{ t('settings', 'Last job execution ran {time}. Something seems wrong.', {time: relativeTime}) }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<NcNoteCard v-else-if=\"longExecutionCron\" type=\"warning\">\n\t\t\t\t{{ t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider increasing the execution frequency.\", {maxAgeRelativeTime}) }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<NcNoteCard v-else-if=\"longExecutionNotCron\" type=\"warning\">\n\t\t\t\t{{ t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider switching to system cron.\", {maxAgeRelativeTime}) }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<NcNoteCard v-else type=\"success\">\n\t\t\t\t{{ t('settings', 'Last job ran {relativeTime}.', {relativeTime}) }}\n\t\t\t</NcNoteCard>\n\t\t</template>\n\n\t\t<NcNoteCard v-else type=\"error\">\n\t\t\t{{ t('settings', 'Background job did not run yet!') }}\n\t\t</NcNoteCard>\n\n\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t:checked.sync=\"backgroundJobsMode\"\n\t\t\tname=\"backgroundJobsMode\"\n\t\t\tvalue=\"ajax\"\n\t\t\tclass=\"ajaxSwitch\"\n\t\t\t@update:checked=\"onBackgroundJobModeChanged\">\n\t\t\t{{ t('settings', 'AJAX') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<em>{{ t('settings', 'Execute one task with each page loaded. Use case: Single user instance.') }}</em>\n\n\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t:checked.sync=\"backgroundJobsMode\"\n\t\t\tname=\"backgroundJobsMode\"\n\t\t\tvalue=\"webcron\"\n\t\t\t@update:checked=\"onBackgroundJobModeChanged\">\n\t\t\t{{ t('settings', 'Webcron') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<em>{{ t('settings', 'cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).') }}</em>\n\n\t\t<NcCheckboxRadioSwitch v-if=\"cliBasedCronPossible\"\n\t\t\ttype=\"radio\"\n\t\t\t:checked.sync=\"backgroundJobsMode\"\n\t\t\tvalue=\"cron\"\n\t\t\tname=\"backgroundJobsMode\"\n\t\t\t@update:checked=\"onBackgroundJobModeChanged\">\n\t\t\t{{ t('settings', 'Cron (Recommended)') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<em v-if=\"cliBasedCronPossible\">{{ cronLabel }}</em>\n\t\t<em v-else>\n\t\t\t{{ t('settings', 'To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.', {\n\t\t\t\tlinkstart: '<a href=\"https://www.php.net/manual/en/book.posix.php\">',\n\t\t\t\tlinkend: '</a>',\n\t\t\t}) }}\n\t\t</em>\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\nimport moment from '@nextcloud/moment'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst lastCron = loadState('settings', 'lastCron')\nconst cronMaxAge = loadState('settings', 'cronMaxAge', '')\nconst backgroundJobsMode = loadState('settings', 'backgroundJobsMode', 'cron')\nconst cliBasedCronPossible = loadState('settings', 'cliBasedCronPossible', true)\nconst cliBasedCronUser = loadState('settings', 'cliBasedCronUser', 'www-data')\nconst backgroundJobsDocUrl = loadState('settings', 'backgroundJobsDocUrl')\n\nexport default {\n\tname: 'BackgroundJob',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlastCron,\n\t\t\tcronMaxAge,\n\t\t\tbackgroundJobsMode,\n\t\t\tcliBasedCronPossible,\n\t\t\tcliBasedCronUser,\n\t\t\tbackgroundJobsDocUrl,\n\t\t\trelativeTime: moment(lastCron * 1000).fromNow(),\n\t\t\tmaxAgeRelativeTime: moment(cronMaxAge * 1000).fromNow(),\n\t\t}\n\t},\n\tcomputed: {\n\t\tcronLabel() {\n\t\t\tlet desc = t('settings', 'Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances.')\n\t\t\tif (this.cliBasedCronPossible) {\n\t\t\t\tdesc += ' ' + t('settings', 'The cron.php needs to be executed by the system user \"{user}\".', { user: this.cliBasedCronUser })\n\t\t\t}\n\t\t\treturn desc\n\t\t},\n\t\toldExecution() {\n\t\t\treturn Date.now() / 1000 - this.lastCron > 600\n\t\t},\n\t\tlongExecutionNotCron() {\n\t\t\treturn Date.now() / 1000 - this.cronMaxAge > 12 * 3600 && this.backgroundJobsMode !== 'cron'\n\t\t},\n\t\tlongExecutionCron() {\n\t\t\treturn Date.now() / 1000 - this.cronMaxAge > 24 * 3600 && this.backgroundJobsMode === 'cron'\n\t\t},\n\t},\n\tmethods: {\n\t\tasync onBackgroundJobModeChanged(backgroundJobsMode) {\n\t\t\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\t\t\tappId: 'core',\n\t\t\t\tkey: 'backgroundjobs_mode',\n\t\t\t})\n\n\t\t\tawait confirmPassword()\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(url, {\n\t\t\t\t\tvalue: backgroundJobsMode,\n\t\t\t\t})\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tstatus: data.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update background job mode'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tasync handleResponse({ status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tawait this.deleteError()\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tconsole.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t\tasync deleteError() {\n\t\t\t// clear cron errors on background job mode change\n\t\t\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\t\t\tappId: 'core',\n\t\t\t\tkey: 'cronErrors',\n\t\t\t})\n\n\t\t\tawait confirmPassword()\n\n\t\t\ttry {\n\t\t\t\tawait axios.delete(url)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.error {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-error);\n\twidth: initial;\n}\n.warning {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-text);\n\tbackground-color: var(--color-warning);\n\twidth: initial;\n}\n.ajaxSwitch {\n\tmargin-top: 1rem;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=style&index=0&id=35d90e04&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=style&index=0&id=35d90e04&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundJob.vue?vue&type=template&id=35d90e04&scoped=true&\"\nimport script from \"./BackgroundJob.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundJob.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundJob.vue?vue&type=style&index=0&id=35d90e04&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35d90e04\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/dist/index.css'\n\nimport logger from './logger.js'\n\nimport ProfileSettings from './components/BasicSettings/ProfileSettings.vue'\nimport BackgroundJob from './components/BasicSettings/BackgroundJob.vue'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst BackgroundJobView = Vue.extend(BackgroundJob)\nnew BackgroundJobView().$mount('#vue-admin-background-job')\n\nif (profileEnabledGlobally) {\n\tconst ProfileSettingsView = Vue.extend(ProfileSettings)\n\tnew ProfileSettingsView().$mount('#vue-admin-profile-settings')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-35d90e04]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-text);background-color:var(--color-error);width:initial}.warning[data-v-35d90e04]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-text);background-color:var(--color-warning);width:initial}.ajaxSwitch[data-v-35d90e04]{margin-top:1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/BasicSettings/BackgroundJob.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,+BAAA,CACA,mCAAA,CACA,aAAA,CAED,0BACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,+BAAA,CACA,qCAAA,CACA,aAAA,CAED,6BACC,eAAA\",\"sourcesContent\":[\"\\n.error {\\n\\tmargin-top: 8px;\\n\\tpadding: 5px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-primary-text);\\n\\tbackground-color: var(--color-error);\\n\\twidth: initial;\\n}\\n.warning {\\n\\tmargin-top: 8px;\\n\\tpadding: 5px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-primary-text);\\n\\tbackground-color: var(--color-warning);\\n\\twidth: initial;\\n}\\n.ajaxSwitch {\\n\\tmargin-top: 1rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6192;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6192: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(47684)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","FEDIVERSE","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","SCOPE_ENUM","PROFILE_VISIBILITY","LANGUAGE","LOCALE","PRIVATE","LOCAL","FEDERATED","PUBLISHED","name","displayName","tooltip","tooltipDisabled","iconClass","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","profileEnabledByDefault","loadState","components","NcCheckboxRadioSwitch","data","initialProfileEnabledByDefault","methods","isEnabled","updateProfileDefault","_responseData$ocs","_responseData$ocs$met","responseData","async","url","generateOcsUrl","appId","key","confirmPassword","axios","value","saveProfileDefault","handleResponse","status","ocs","meta","e","errorMessage","error","_ref","showError","logger","_vm","this","_c","_self","staticClass","attrs","_v","_s","on","$event","onProfileDefaultChange","lastCron","cronMaxAge","backgroundJobsMode","cliBasedCronPossible","cliBasedCronUser","backgroundJobsDocUrl","NcSettingsSection","NcNoteCard","relativeTime","moment","fromNow","maxAgeRelativeTime","computed","cronLabel","desc","user","oldExecution","Date","now","longExecutionNotCron","longExecutionCron","_data$ocs","_data$ocs$meta","deleteError","console","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","time","onBackgroundJobModeChanged","_e","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","Vue","props","BackgroundJob","$mount","ProfileSettings","___CSS_LOADER_EXPORT___","push","module","id","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-vue-settings-admin-basic-settings.js?v=ee8214a713374eb1b62b","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/logger.js","webpack://nextcloud/./apps/settings/src/components/BasicSettings/ProfileSettings.vue?6932","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue","webpack:///nextcloud/apps/settings/src/components/BasicSettings/ProfileSettings.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack://nextcloud/./apps/settings/src/components/BasicSettings/ProfileSettings.vue?cd3c","webpack://nextcloud/./apps/settings/src/components/BasicSettings/BackgroundJob.vue?6936","webpack:///nextcloud/apps/settings/src/components/BasicSettings/BackgroundJob.vue","webpack:///nextcloud/apps/settings/src/components/BasicSettings/BackgroundJob.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/BasicSettings/BackgroundJob.vue?9004","webpack://nextcloud/./apps/settings/src/components/BasicSettings/BackgroundJob.vue?e6cc","webpack:///nextcloud/apps/settings/src/main-admin-basic-settings.js","webpack:///nextcloud/apps/settings/src/components/BasicSettings/BackgroundJob.vue?vue&type=style&index=0&id=6829f11e&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"section\",attrs:{\"id\":\"profile-settings\"}},[_c('h2',{staticClass:\"inlineblock\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Profile'))+\"\\n\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"settings-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable or disable profile by default for new users.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.initialProfileEnabledByDefault},on:{\"update:checked\":[function($event){_vm.initialProfileEnabledByDefault=$event},_vm.onProfileDefaultChange]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tFEDIVERSE: 'fediverse',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Location'),\n\tAVATAR: t('settings', 'Profile picture'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tFEDIVERSE: t('settings', 'Fediverse (e.g. Mastodon)'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\nexport const NAME_READABLE_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n\tLOCALE: 'locale',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n\tLOCALE: t('settings', 'Locale'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as federation has been disabled for your account, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div id=\"profile-settings\"\n\t\tclass=\"section\">\n\t\t<h2 class=\"inlineblock\">\n\t\t\t{{ t('settings', 'Profile') }}\n\t\t</h2>\n\n\t\t<p class=\"settings-hint\">\n\t\t\t{{ t('settings', 'Enable or disable profile by default for new users.') }}\n\t\t</p>\n\n\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"initialProfileEnabledByDefault\"\n\t\t\t@update:checked=\"onProfileDefaultChange\">\n\t\t\t{{ t('settings', 'Enable') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\n\nimport { saveProfileDefault } from '../../service/ProfileService.js'\nimport { validateBoolean } from '../../utils/validate.js'\nimport logger from '../../logger.js'\n\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nconst profileEnabledByDefault = loadState('settings', 'profileEnabledByDefault', true)\n\nexport default {\n\tname: 'ProfileSettings',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialProfileEnabledByDefault: profileEnabledByDefault,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync onProfileDefaultChange(isEnabled) {\n\t\t\tif (validateBoolean(isEnabled)) {\n\t\t\t\tawait this.updateProfileDefault(isEnabled)\n\t\t\t}\n\t\t},\n\n\t\tasync updateProfileDefault(isEnabled) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileDefault(isEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile default setting'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialProfileEnabledByDefault = isEnabled\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tlogger.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSettings.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the URL input\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateUrl(input) {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew URL(input)\n\t\treturn true\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate the locale input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLocale(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","import { render, staticRenderFns } from \"./ProfileSettings.vue?vue&type=template&id=5afdc030&scoped=true&\"\nimport script from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSettings.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5afdc030\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcSettingsSection',{attrs:{\"title\":_vm.t('settings', 'Background jobs'),\"description\":_vm.t('settings', 'For the server to work properly, it\\'s important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information.'),\"doc-url\":_vm.backgroundJobsDocUrl}},[(_vm.lastCron !== 0)?[(_vm.oldExecution)?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Last job execution ran {time}. Something seems wrong.', {time: _vm.relativeTime}))+\"\\n\\t\\t\")]):(_vm.longExecutionCron)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider increasing the execution frequency.\", {maxAgeRelativeTime: _vm.maxAgeRelativeTime}))+\"\\n\\t\\t\")]):(_vm.longExecutionNotCron)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider switching to system cron.\", {maxAgeRelativeTime: _vm.maxAgeRelativeTime}))+\"\\n\\t\\t\")]):_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Last job ran {relativeTime}.', {relativeTime: _vm.relativeTime}))+\"\\n\\t\\t\")])]:_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Background job did not run yet!'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"ajaxSwitch\",attrs:{\"type\":\"radio\",\"checked\":_vm.backgroundJobsMode,\"name\":\"backgroundJobsMode\",\"value\":\"ajax\"},on:{\"update:checked\":[function($event){_vm.backgroundJobsMode=$event},_vm.onBackgroundJobModeChanged]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'AJAX'))+\"\\n\\t\")]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Execute one task with each page loaded. Use case: Single user instance.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.backgroundJobsMode,\"name\":\"backgroundJobsMode\",\"value\":\"webcron\"},on:{\"update:checked\":[function($event){_vm.backgroundJobsMode=$event},_vm.onBackgroundJobModeChanged]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Webcron'))+\"\\n\\t\")]),_vm._v(\" \"),_c('em',[_vm._v(_vm._s(_vm.t('settings', 'cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).')))]),_vm._v(\" \"),(_vm.cliBasedCronPossible)?_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.backgroundJobsMode,\"value\":\"cron\",\"name\":\"backgroundJobsMode\"},on:{\"update:checked\":[function($event){_vm.backgroundJobsMode=$event},_vm.onBackgroundJobModeChanged]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Cron (Recommended)'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.cliBasedCronPossible)?_c('em',[_vm._v(_vm._s(_vm.cronLabel))]):_c('em',[_vm._v(\"\\n\\t\\t{{ t('settings', 'To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.', {\\n\\t\\t\\tlinkstart: '\"),_c('a',{attrs:{\"href\":\"https://www.php.net/manual/en/book.posix.php\"}},[_vm._v(\"',\\n\\t\\t\\tlinkend: '\")]),_vm._v(\"',\\n\\t\\t}) }}\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n\t-\n\t- @author Carl Schwan <carl@carlschwan.eu>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcSettingsSection :title=\"t('settings', 'Background jobs')\"\n\t\t:description=\"t('settings', 'For the server to work properly, it\\'s important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information.')\"\n\t\t:doc-url=\"backgroundJobsDocUrl\">\n\t\t<template v-if=\"lastCron !== 0\">\n\t\t\t<NcNoteCard v-if=\"oldExecution\" type=\"error\">\n\t\t\t\t{{ t('settings', 'Last job execution ran {time}. Something seems wrong.', {time: relativeTime}) }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<NcNoteCard v-else-if=\"longExecutionCron\" type=\"warning\">\n\t\t\t\t{{ t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider increasing the execution frequency.\", {maxAgeRelativeTime}) }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<NcNoteCard v-else-if=\"longExecutionNotCron\" type=\"warning\">\n\t\t\t\t{{ t('settings', \"Some jobs have not been executed since {maxAgeRelativeTime}. Please consider switching to system cron.\", {maxAgeRelativeTime}) }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<NcNoteCard v-else type=\"success\">\n\t\t\t\t{{ t('settings', 'Last job ran {relativeTime}.', {relativeTime}) }}\n\t\t\t</NcNoteCard>\n\t\t</template>\n\n\t\t<NcNoteCard v-else type=\"error\">\n\t\t\t{{ t('settings', 'Background job did not run yet!') }}\n\t\t</NcNoteCard>\n\n\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t:checked.sync=\"backgroundJobsMode\"\n\t\t\tname=\"backgroundJobsMode\"\n\t\t\tvalue=\"ajax\"\n\t\t\tclass=\"ajaxSwitch\"\n\t\t\t@update:checked=\"onBackgroundJobModeChanged\">\n\t\t\t{{ t('settings', 'AJAX') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<em>{{ t('settings', 'Execute one task with each page loaded. Use case: Single user instance.') }}</em>\n\n\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t:checked.sync=\"backgroundJobsMode\"\n\t\t\tname=\"backgroundJobsMode\"\n\t\t\tvalue=\"webcron\"\n\t\t\t@update:checked=\"onBackgroundJobModeChanged\">\n\t\t\t{{ t('settings', 'Webcron') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<em>{{ t('settings', 'cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage).') }}</em>\n\n\t\t<NcCheckboxRadioSwitch v-if=\"cliBasedCronPossible\"\n\t\t\ttype=\"radio\"\n\t\t\t:checked.sync=\"backgroundJobsMode\"\n\t\t\tvalue=\"cron\"\n\t\t\tname=\"backgroundJobsMode\"\n\t\t\t@update:checked=\"onBackgroundJobModeChanged\">\n\t\t\t{{ t('settings', 'Cron (Recommended)') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<em v-if=\"cliBasedCronPossible\">{{ cronLabel }}</em>\n\t\t<em v-else>\n\t\t\t{{ t('settings', 'To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details.', {\n\t\t\t\tlinkstart: '<a href=\"https://www.php.net/manual/en/book.posix.php\">',\n\t\t\t\tlinkend: '</a>',\n\t\t\t}) }}\n\t\t</em>\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { showError } from '@nextcloud/dialogs'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\nimport moment from '@nextcloud/moment'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst lastCron = loadState('settings', 'lastCron')\nconst cronMaxAge = loadState('settings', 'cronMaxAge', '')\nconst backgroundJobsMode = loadState('settings', 'backgroundJobsMode', 'cron')\nconst cliBasedCronPossible = loadState('settings', 'cliBasedCronPossible', true)\nconst cliBasedCronUser = loadState('settings', 'cliBasedCronUser', 'www-data')\nconst backgroundJobsDocUrl = loadState('settings', 'backgroundJobsDocUrl')\n\nexport default {\n\tname: 'BackgroundJob',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlastCron,\n\t\t\tcronMaxAge,\n\t\t\tbackgroundJobsMode,\n\t\t\tcliBasedCronPossible,\n\t\t\tcliBasedCronUser,\n\t\t\tbackgroundJobsDocUrl,\n\t\t\trelativeTime: moment(lastCron * 1000).fromNow(),\n\t\t\tmaxAgeRelativeTime: moment(cronMaxAge * 1000).fromNow(),\n\t\t}\n\t},\n\tcomputed: {\n\t\tcronLabel() {\n\t\t\tlet desc = t('settings', 'Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances.')\n\t\t\tif (this.cliBasedCronPossible) {\n\t\t\t\tdesc += ' ' + t('settings', 'The cron.php needs to be executed by the system user \"{user}\".', { user: this.cliBasedCronUser })\n\t\t\t}\n\t\t\treturn desc\n\t\t},\n\t\toldExecution() {\n\t\t\treturn Date.now() / 1000 - this.lastCron > 600\n\t\t},\n\t\tlongExecutionNotCron() {\n\t\t\treturn Date.now() / 1000 - this.cronMaxAge > 12 * 3600 && this.backgroundJobsMode !== 'cron'\n\t\t},\n\t\tlongExecutionCron() {\n\t\t\treturn Date.now() / 1000 - this.cronMaxAge > 24 * 3600 && this.backgroundJobsMode === 'cron'\n\t\t},\n\t},\n\tmethods: {\n\t\tasync onBackgroundJobModeChanged(backgroundJobsMode) {\n\t\t\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\t\t\tappId: 'core',\n\t\t\t\tkey: 'backgroundjobs_mode',\n\t\t\t})\n\n\t\t\tawait confirmPassword()\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(url, {\n\t\t\t\t\tvalue: backgroundJobsMode,\n\t\t\t\t})\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tstatus: data.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update background job mode'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tasync handleResponse({ status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tawait this.deleteError()\n\t\t\t} else {\n\t\t\t\tshowError(errorMessage)\n\t\t\t\tconsole.error(errorMessage, error)\n\t\t\t}\n\t\t},\n\t\tasync deleteError() {\n\t\t\t// clear cron errors on background job mode change\n\t\t\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\t\t\tappId: 'core',\n\t\t\t\tkey: 'cronErrors',\n\t\t\t})\n\n\t\t\tawait confirmPassword()\n\n\t\t\ttry {\n\t\t\t\tawait axios.delete(url)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.error {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-element-text);\n\tbackground-color: var(--color-error);\n\twidth: initial;\n}\n.warning {\n\tmargin-top: 8px;\n\tpadding: 5px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-primary-element-text);\n\tbackground-color: var(--color-warning);\n\twidth: initial;\n}\n.ajaxSwitch {\n\tmargin-top: 1rem;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=style&index=0&id=6829f11e&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundJob.vue?vue&type=style&index=0&id=6829f11e&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundJob.vue?vue&type=template&id=6829f11e&scoped=true&\"\nimport script from \"./BackgroundJob.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundJob.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundJob.vue?vue&type=style&index=0&id=6829f11e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6829f11e\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/dist/index.css'\n\nimport logger from './logger.js'\n\nimport ProfileSettings from './components/BasicSettings/ProfileSettings.vue'\nimport BackgroundJob from './components/BasicSettings/BackgroundJob.vue'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tprops: {\n\t\tlogger,\n\t},\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst BackgroundJobView = Vue.extend(BackgroundJob)\nnew BackgroundJobView().$mount('#vue-admin-background-job')\n\nif (profileEnabledGlobally) {\n\tconst ProfileSettingsView = Vue.extend(ProfileSettings)\n\tnew ProfileSettingsView().$mount('#vue-admin-profile-settings')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-6829f11e]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-element-text);background-color:var(--color-error);width:initial}.warning[data-v-6829f11e]{margin-top:8px;padding:5px;border-radius:var(--border-radius);color:var(--color-primary-element-text);background-color:var(--color-warning);width:initial}.ajaxSwitch[data-v-6829f11e]{margin-top:1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/BasicSettings/BackgroundJob.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,uCAAA,CACA,mCAAA,CACA,aAAA,CAED,0BACC,cAAA,CACA,WAAA,CACA,kCAAA,CACA,uCAAA,CACA,qCAAA,CACA,aAAA,CAED,6BACC,eAAA\",\"sourcesContent\":[\"\\n.error {\\n\\tmargin-top: 8px;\\n\\tpadding: 5px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-primary-element-text);\\n\\tbackground-color: var(--color-error);\\n\\twidth: initial;\\n}\\n.warning {\\n\\tmargin-top: 8px;\\n\\tpadding: 5px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-primary-element-text);\\n\\tbackground-color: var(--color-warning);\\n\\twidth: initial;\\n}\\n.ajaxSwitch {\\n\\tmargin-top: 1rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6192;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6192: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(96966)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","FEDIVERSE","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","SCOPE_ENUM","PROFILE_VISIBILITY","LANGUAGE","LOCALE","PRIVATE","LOCAL","FEDERATED","PUBLISHED","name","displayName","tooltip","tooltipDisabled","iconClass","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","profileEnabledByDefault","loadState","components","NcCheckboxRadioSwitch","data","initialProfileEnabledByDefault","methods","isEnabled","updateProfileDefault","_responseData$ocs","_responseData$ocs$met","responseData","async","url","generateOcsUrl","appId","key","confirmPassword","axios","value","saveProfileDefault","handleResponse","status","ocs","meta","e","errorMessage","error","_ref","showError","logger","_vm","this","_c","_self","staticClass","attrs","_v","_s","on","$event","onProfileDefaultChange","lastCron","cronMaxAge","backgroundJobsMode","cliBasedCronPossible","cliBasedCronUser","backgroundJobsDocUrl","NcSettingsSection","NcNoteCard","relativeTime","moment","fromNow","maxAgeRelativeTime","computed","cronLabel","desc","user","oldExecution","Date","now","longExecutionNotCron","longExecutionCron","_data$ocs","_data$ocs$meta","deleteError","console","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","time","onBackgroundJobModeChanged","_e","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","Vue","props","BackgroundJob","$mount","ProfileSettings","___CSS_LOADER_EXPORT___","push","module","id","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/settings-vue-settings-personal-info.js b/dist/settings-vue-settings-personal-info.js index 9ac0a12b6af..8b045f24886 100644 --- a/dist/settings-vue-settings-personal-info.js +++ b/dist/settings-vue-settings-personal-info.js @@ -1,3 +1,3 @@ /*! For license information please see settings-vue-settings-personal-info.js.LICENSE.txt */ -(()=>{var e,a={82170:(e,a,n)=>{"use strict";var i=n(20144),o=n(45994),s=n(79954),r=n(31352),l=(n(36144),n(4820)),d=n(79753),c=n(64024),p=n(78595),A=n(75925),u=n.n(A),m=n(10861),h=n.n(m),g=n(17652),v=(n(74063),n(75762)),C=n(34829),f=n(57612),y=n(61149),b=n(12945),x=n.n(b),E=n(45400);const _={name:"FederationControlAction",components:{NcActionButton:n.n(E)()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:()=>{}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope(){this.handleScopeChange(this.name)}}};var w=n(93379),I=n.n(w),S=n(7795),P=n.n(S),L=n(90569),j=n.n(L),B=n(3565),k=n.n(B),D=n(19216),O=n.n(D),N=n(44589),R=n.n(N),T=n(69205),Z={};Z.styleTagTransform=R(),Z.setAttributes=k(),Z.insert=j().bind(null,"head"),Z.domAPI=P(),Z.insertStyleElement=O(),I()(T.Z,Z),T.Z&&T.Z.locals&&T.Z.locals;var M=n(51900);const U=(0,M.Z)(_,(function(){var t=this;return(0,t._self._c)("NcActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":t.activeScope===t.name},attrs:{"aria-label":t.isSupportedScope?t.tooltip:t.tooltipDisabled,"close-after-click":!0,disabled:!t.isSupportedScope,icon:t.iconClass,title:t.displayName},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.updateScope.apply(null,arguments)}}},[t._v("\n\t"+t._s(t.isSupportedScope?t.tooltip:t.tooltipDisabled)+"\n")])}),[],!1,null,"404f7a30",null).exports,F=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",FEDIVERSE:"fediverse",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),z=Object.freeze({ADDRESS:(0,r.Iu)("settings","Location"),AVATAR:(0,r.Iu)("settings","Profile picture"),BIOGRAPHY:(0,r.Iu)("settings","About"),DISPLAYNAME:(0,r.Iu)("settings","Full name"),EMAIL_COLLECTION:(0,r.Iu)("settings","Additional email"),EMAIL:(0,r.Iu)("settings","Email"),HEADLINE:(0,r.Iu)("settings","Headline"),ORGANISATION:(0,r.Iu)("settings","Organisation"),PHONE:(0,r.Iu)("settings","Phone number"),PROFILE_ENABLED:(0,r.Iu)("settings","Profile"),ROLE:(0,r.Iu)("settings","Role"),TWITTER:(0,r.Iu)("settings","Twitter"),FEDIVERSE:(0,r.Iu)("settings","Fediverse (e.g. Mastodon)"),WEBSITE:(0,r.Iu)("settings","Website")}),V=Object.freeze({[F.ADDRESS]:z.ADDRESS,[F.AVATAR]:z.AVATAR,[F.BIOGRAPHY]:z.BIOGRAPHY,[F.DISPLAYNAME]:z.DISPLAYNAME,[F.EMAIL_COLLECTION]:z.EMAIL_COLLECTION,[F.EMAIL]:z.EMAIL,[F.HEADLINE]:z.HEADLINE,[F.ORGANISATION]:z.ORGANISATION,[F.PHONE]:z.PHONE,[F.PROFILE_ENABLED]:z.PROFILE_ENABLED,[F.ROLE]:z.ROLE,[F.TWITTER]:z.TWITTER,[F.FEDIVERSE]:z.FEDIVERSE,[F.WEBSITE]:z.WEBSITE}),H=Object.freeze({PROFILE_VISIBILITY:(0,r.Iu)("settings","Profile visibility")}),G=Object.freeze({[z.ADDRESS]:F.ADDRESS,[z.AVATAR]:F.AVATAR,[z.BIOGRAPHY]:F.BIOGRAPHY,[z.DISPLAYNAME]:F.DISPLAYNAME,[z.EMAIL_COLLECTION]:F.EMAIL_COLLECTION,[z.EMAIL]:F.EMAIL,[z.HEADLINE]:F.HEADLINE,[z.ORGANISATION]:F.ORGANISATION,[z.PHONE]:F.PHONE,[z.PROFILE_ENABLED]:F.PROFILE_ENABLED,[z.ROLE]:F.ROLE,[z.TWITTER]:F.TWITTER,[z.FEDIVERSE]:F.FEDIVERSE,[z.WEBSITE]:F.WEBSITE}),q=Object.freeze({LANGUAGE:"language",LOCALE:"locale"}),Y=Object.freeze({LANGUAGE:(0,r.Iu)("settings","Language"),LOCALE:(0,r.Iu)("settings","Locale")}),$=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),W=Object.freeze({[z.ADDRESS]:[$.LOCAL,$.PRIVATE],[z.AVATAR]:[$.LOCAL,$.PRIVATE],[z.BIOGRAPHY]:[$.LOCAL,$.PRIVATE],[z.DISPLAYNAME]:[$.LOCAL],[z.EMAIL_COLLECTION]:[$.LOCAL],[z.EMAIL]:[$.LOCAL],[z.HEADLINE]:[$.LOCAL,$.PRIVATE],[z.ORGANISATION]:[$.LOCAL,$.PRIVATE],[z.PHONE]:[$.LOCAL,$.PRIVATE],[z.PROFILE_ENABLED]:[$.LOCAL,$.PRIVATE],[z.ROLE]:[$.LOCAL,$.PRIVATE],[z.TWITTER]:[$.LOCAL,$.PRIVATE],[z.FEDIVERSE]:[$.LOCAL,$.PRIVATE],[z.WEBSITE]:[$.LOCAL,$.PRIVATE]}),K=Object.freeze([z.BIOGRAPHY,z.HEADLINE,z.ORGANISATION,z.ROLE]),Q="Scope",J=Object.freeze({[$.PRIVATE]:{name:$.PRIVATE,displayName:(0,r.Iu)("settings","Private"),tooltip:(0,r.Iu)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,r.Iu)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"},[$.LOCAL]:{name:$.LOCAL,displayName:(0,r.Iu)("settings","Local"),tooltip:(0,r.Iu)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"},[$.FEDERATED]:{name:$.FEDERATED,displayName:(0,r.Iu)("settings","Federated"),tooltip:(0,r.Iu)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,r.Iu)("settings","Not available as federation has been disabled for your account, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"},[$.PUBLISHED]:{name:$.PUBLISHED,displayName:(0,r.Iu)("settings","Published"),tooltip:(0,r.Iu)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,r.Iu)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}}),X=$.LOCAL,tt=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),et=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i;var at=n(10128);n(65509);const nt=async(t,e)=>{"boolean"==typeof e&&(e=e?"1":"0");const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data},it=(0,n(17499).IY)().setApp("settings").detectUser().build(),ot=(t,e)=>{var a;let n="";e&&(n+=e),429===(null===(a=t.response)||void 0===a?void 0:a.status)&&(n&&(n+="\n"),n+=(0,r.Iu)("settings","There were too many requests from your network. Retry later or contact your administrator if this is an error.")),(0,c.x2)(n),it.error(n||(0,r.Iu)("Error"),t)},{federationEnabled:st,lookupServerUploadEnabled:rt}=(0,s.j)("settings","accountParameters",{}),lt={name:"FederationControl",components:{NcActions:x(),FederationControlAction:U},props:{readable:{type:String,required:!0,validator:t=>Object.values(z).includes(t)||Object.values(Y).includes(t)||t===H.PROFILE_VISIBILITY},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data(){return{readableLowerCase:this.readable.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel(){return t("settings","Change scope level of {property}, current scope is {scope}",{property:this.readableLowerCase,scope:this.scopeDisplayNameLowerCase})},scopeDisplayNameLowerCase(){return J[this.scope].displayName.toLocaleLowerCase()},scopeIcon(){return J[this.scope].iconClass},federationScopes:()=>Object.values(J),supportedScopes(){const t=W[this.readable];return K.includes(this.readable)||(st&&t.push($.FEDERATED),rt&&t.push($.PUBLISHED)),t}},methods:{async changeScope(t){this.$emit("update:scope",t),this.additional?await this.updateAdditionalScope(t):await this.updatePrimaryScope(t)},async updatePrimaryScope(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:"".concat(t).concat(Q),value:e})).data})(G[this.readable],e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {property}",{property:this.readableLowerCase}),error:e})}},async updateAdditionalScope(e){try{var a,n;const t=await this.handleAdditionalScopeChange(this.additionalValue,e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {property}",{property:this.readableLowerCase}),error:e})}},handleResponse(t){let{scope:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialScope=e:(this.$emit("update:scope",this.initialScope),ot(i,n))}}},dt=lt;var ct=n(14036),pt={};pt.styleTagTransform=R(),pt.setAttributes=k(),pt.insert=j().bind(null,"head"),pt.domAPI=P(),pt.insertStyleElement=O(),I()(ct.Z,pt),ct.Z&&ct.Z.locals&&ct.Z.locals;const At=(0,M.Z)(dt,(function(){var t=this,e=t._self._c;return e("NcActions",{class:{"federation-actions":!t.additional,"federation-actions--additional":t.additional},attrs:{"aria-label":t.ariaLabel,"default-icon":t.scopeIcon,disabled:t.disabled}},t._l(t.federationScopes,(function(a){return e("FederationControlAction",{key:a.name,attrs:{"active-scope":t.scope,"display-name":a.displayName,"handle-scope-change":t.changeScope,"icon-class":a.iconClass,"is-supported-scope":t.supportedScopes.includes(a.name),name:a.name,"tooltip-disabled":a.tooltipDisabled,tooltip:a.tooltip,"aria-label":a.tooltip}})})),1)}),[],!1,null,"4ea07669",null).exports,ut={name:"HeaderBar",components:{FederationControl:At,NcButton:h(),Plus:y.Z},props:{scope:{type:String,default:null},readable:{type:String,required:!0},inputId:{type:String,default:null},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!0},isHeading:{type:Boolean,default:!1}},data(){return{localScope:this.scope}},computed:{isProfileProperty(){return this.readable===z.PROFILE_ENABLED},isSettingProperty(){return!Object.values(z).includes(this.readable)&&!Object.values(H).includes(this.readable)}},methods:{onAddAdditional(){this.$emit("add-additional")},onScopeChange(t){this.$emit("update:scope",t)}}};var mt=n(90564),ht={};ht.styleTagTransform=R(),ht.setAttributes=k(),ht.insert=j().bind(null,"head"),ht.domAPI=P(),ht.insertStyleElement=O(),I()(mt.Z,ht),mt.Z&&mt.Z.locals&&mt.Z.locals;const gt=(0,M.Z)(ut,(function(){var t=this,e=t._self._c;return e(t.isHeading?"h3":"div",{tag:"component",staticClass:"headerbar-label",class:{"setting-property":t.isSettingProperty,"profile-property":t.isProfileProperty}},[t.isHeading?e("span",[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]):e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]),t._v(" "),t.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{readable:t.readable,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})]:t._e(),t._v(" "),t.isEditable&&t.isMultiValueSupported?[e("NcButton",{attrs:{type:"tertiary",disabled:!t.isValidSection,"aria-label":t.t("settings","Add additional email")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.onAddAdditional.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[t._v("\n\t\t\t"+t._s(t.t("settings","Add"))+"\n\t\t")])]:t._e()],2)}),[],!1,null,"b43fcc0c",null).exports,{avatar:vt}=(0,s.j)("settings","personalInfoParameters",{}),{avatarChangeSupported:Ct}=(0,s.j)("settings","accountParameters",{}),ft=["image/png","image/jpeg"],yt=(0,c.fn)(t("settings","Choose your profile picture")).setMultiSelect(!1).setMimeTypeFilter(ft).setModal(!0).setType(1).allowDirectories(!1).build(),bt={name:"AvatarSection",components:{Delete:f.Z,Folder:C.default,HeaderBar:gt,NcAvatar:u(),NcButton:h(),Upload:v.Z,VueCropper:g.Z},data:()=>({avatar:{...vt,readable:V[vt.name]},avatarChangeSupported:Ct,showCropper:!1,loading:!1,userId:(0,o.ts)().uid,displayName:(0,o.ts)().displayName,version:oc_userconfig.avatar.version,isGenerated:oc_userconfig.avatar.generated,validMimeTypes:ft,cropperOptions:{aspectRatio:1,viewMode:1,guides:!1,center:!1,highlight:!1,autoCropArea:1,minContainerWidth:300,minContainerHeight:300}}),computed:{inputId(){return"account-property-".concat(this.avatar.name)}},created(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate)},methods:{activateLocalFilePicker(){this.$refs.input.value=null,this.$refs.input.click()},onChange(e){this.loading=!0;const a=e.target.files[0];if(!this.validMimeTypes.includes(a.type))return(0,c.x2)(t("settings","Please select a valid png or jpg file")),void this.cancel();const n=new FileReader;n.onload=t=>{this.$refs.cropper.replace(t.target.result),this.showCropper=!0},n.readAsDataURL(a)},async openFilePicker(){const e=await yt.pick();this.loading=!0;try{const{data:t}=await l.default.post((0,d.generateUrl)("/avatar"),{path:e});if("success"===t.status)this.handleAvatarUpdate(!1);else if("notsquare"===t.data){const t=(0,d.generateUrl)("/avatar/tmp")+"?requesttoken="+encodeURIComponent(OC.requestToken)+"#"+Math.floor(1e3*Math.random());this.$refs.cropper.replace(t),this.showCropper=!0}else(0,c.x2)(t.data.message),this.cancel()}catch(e){(0,c.x2)(t("settings","Error setting profile picture")),this.cancel()}},saveAvatar(){this.showCropper=!1,this.loading=!0;const e=this.$refs.cropper.getCroppedCanvas(),a=e.width>512?512/e.width:1;this.$refs.cropper.scale(a,a).getCroppedCanvas().toBlob((async e=>{if(null===e)return(0,c.x2)(t("settings","Error cropping profile picture")),void this.cancel();const a=new FormData;a.append("files[]",e);try{await l.default.post((0,d.generateUrl)("/avatar"),a),this.handleAvatarUpdate(!1)}catch(e){(0,c.x2)(t("settings","Error saving profile picture")),this.handleAvatarUpdate(this.isGenerated)}}))},async removeAvatar(){this.loading=!0;try{await l.default.delete((0,d.generateUrl)("/avatar")),this.handleAvatarUpdate(!0)}catch(e){(0,c.x2)(t("settings","Error removing profile picture")),this.handleAvatarUpdate(this.isGenerated)}},cancel(){this.showCropper=!1,this.loading=!1},handleAvatarUpdate(t){this.version=oc_userconfig.avatar.version=Date.now(),this.isGenerated=oc_userconfig.avatar.generated=t,this.loading=!1,(0,p.j8)("settings:avatar:updated",oc_userconfig.avatar.version)},handleDisplayNameUpdate(){this.version=oc_userconfig.avatar.version}}};var xt=n(31246),Et={};Et.styleTagTransform=R(),Et.setAttributes=k(),Et.insert=j().bind(null,"head"),Et.domAPI=P(),Et.insertStyleElement=O(),I()(xt.Z,Et),xt.Z&&xt.Z.locals&&xt.Z.locals;const _t=(0,M.Z)(bt,(function(){var t=this,e=t._self._c;return e("section",{attrs:{id:"vue-avatar-section"}},[e("h3",{staticClass:"hidden-visually"},[t._v(" "+t._s(t.t("settings","Your profile information"))+" ")]),t._v(" "),e("HeaderBar",{attrs:{"input-id":t.avatarChangeSupported?t.inputId:null,readable:t.avatar.readable,scope:t.avatar.scope},on:{"update:scope":function(e){return t.$set(t.avatar,"scope",e)}}}),t._v(" "),t.showCropper?t._e():e("div",{staticClass:"avatar__container"},[e("div",{staticClass:"avatar__preview"},[t.loading?e("div",{staticClass:"icon-loading"}):e("NcAvatar",{key:t.version,attrs:{user:t.userId,"aria-label":t.t("settings","Your profile picture"),"disabled-menu":!0,"disabled-tooltip":!0,"show-user-status":!1,size:180}})],1),t._v(" "),t.avatarChangeSupported?[e("div",{staticClass:"avatar__buttons"},[e("NcButton",{attrs:{"aria-label":t.t("settings","Upload profile picture")},on:{click:t.activateLocalFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Upload",{attrs:{size:20}})]},proxy:!0}],null,!1,1329850251)}),t._v(" "),e("NcButton",{attrs:{"aria-label":t.t("settings","Choose profile picture from Files")},on:{click:t.openFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Folder",{attrs:{size:20}})]},proxy:!0}],null,!1,4270628382)}),t._v(" "),t.isGenerated?t._e():e("NcButton",{attrs:{"aria-label":t.t("settings","Remove profile picture")},on:{click:t.removeAvatar},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)})],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","The file must be a PNG or JPG")))]),t._v(" "),e("input",{ref:"input",attrs:{id:t.inputId,type:"file",accept:t.validMimeTypes.join(",")},on:{change:t.onChange}})]:e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Picture provided by original account"))+"\n\t\t")])],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.showCropper,expression:"showCropper"}],staticClass:"avatar__container"},[e("VueCropper",t._b({ref:"cropper",staticClass:"avatar__cropper"},"VueCropper",t.cropperOptions,!1)),t._v(" "),e("div",{staticClass:"avatar__cropper-buttons"},[e("NcButton",{on:{click:t.cancel}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.saveAvatar}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set as profile picture"))+"\n\t\t\t")])],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","Please note that it can take up to 24 hours for your profile picture to be updated everywhere.")))])],1)],1)}),[],!1,null,"022fd5d4",null).exports;var wt=n(48959),It=n.n(wt),St=n(86158),Pt=n(34046);const{groups:Lt,quota:jt,totalSpace:Bt,usage:kt,usageRelative:Dt}=(0,s.j)("settings","personalInfoParameters",{}),Ot={name:"DetailsSection",components:{Account:St.Z,CircleSlice:Pt.Z,HeaderBar:gt,NcProgressBar:It()},computed:{quotaText:()=>-3===jt?t("settings","You are using <strong>{usage}</strong>",{usage:kt}):t("settings","You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",{usage:kt,totalSpace:Bt,usageRelative:Dt})},data:()=>({groups:Lt,usageRelative:Dt})};var Nt=n(18118),Rt={};Rt.styleTagTransform=R(),Rt.setAttributes=k(),Rt.insert=j().bind(null,"head"),Rt.domAPI=P(),Rt.insertStyleElement=O(),I()(Nt.Z,Rt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;const Tt=(0,M.Z)(Ot,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.t("settings","Details")}}),t._v(" "),e("div",{staticClass:"details"},[e("div",{staticClass:"details__groups"},[e("Account",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__groups-info"},[e("p",[t._v(t._s(t.t("settings","You are a member of the following groups:")))]),t._v(" "),e("p",{staticClass:"details__groups-list"},[t._v(t._s(t.groups.join(", ")))])])],1),t._v(" "),e("div",{staticClass:"details__quota"},[e("CircleSlice",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__quota-info"},[e("p",{staticClass:"details__quota-text",domProps:{innerHTML:t._s(t.quotaText)}}),t._v(" "),e("NcProgressBar",{attrs:{size:"medium",value:t.usageRelative,error:t.usageRelative>80}})],1)],1)])],1)}),[],!1,null,"1ab46e68",null).exports;var Zt=n(20296),Mt=n.n(Zt),Ut=n(94603),Ft=n(31974),zt=n(80419);const Vt={name:"AccountPropertySection",components:{AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,HeaderBar:gt},props:{name:{type:String,required:!0},value:{type:String,required:!0},scope:{type:String,required:!0},readable:{type:String,required:!0},placeholder:{type:String,required:!0},type:{type:String,default:"text"},isEditable:{type:Boolean,default:!0},multiLine:{type:Boolean,default:!1},onValidate:{type:Function,default:null},onSave:{type:Function,default:null},autocomplete:{type:String,default:null}},data(){return{initialValue:this.value,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{inputId(){return"account-property-".concat(this.name)}},methods:{onPropertyChange(t){this.$emit("update:value",t.target.value),this.debouncePropertyChange(t.target.value.trim())},debouncePropertyChange:Mt()((async function(t){this.helperText=null,this.$refs.input&&this.$refs.input.validationMessage?this.helperText=this.$refs.input.validationMessage:this.onValidate&&!this.onValidate(t)||await this.updateProperty(t)}),500),async updateProperty(e){try{var a,n;const t=await nt(this.name,e);this.handleResponse({value:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update {property}",{property:this.readable.toLocaleLowerCase()}),error:e})}},handleResponse(t){let{value:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(this.initialValue=e,this.onSave&&this.onSave(e),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(this.$emit("update:value",this.initialValue),ot(i,n),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))}}};var Ht=n(49237),Gt={};Gt.styleTagTransform=R(),Gt.setAttributes=k(),Gt.insert=j().bind(null,"head"),Gt.domAPI=P(),Gt.insertStyleElement=O(),I()(Ht.Z,Gt),Ht.Z&&Ht.Z.locals&&Ht.Z.locals;const qt=(0,M.Z)(Vt,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{scope:t.scope,readable:t.readable,"input-id":t.inputId,"is-editable":t.isEditable},on:{"update:scope":function(e){t.scope=e},"update:readable":function(e){t.readable=e}}}),t._v(" "),t.isEditable?e("div",{staticClass:"property"},[t.multiLine?e("textarea",{attrs:{id:t.inputId,placeholder:t.placeholder,rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:t.value},on:{input:t.onPropertyChange}}):e("input",{ref:"input",attrs:{id:t.inputId,placeholder:t.placeholder,type:t.type,"aria-describedby":t.helperText?"".concat(t.name,"-helper-text"):"",autocapitalize:"none",autocorrect:"off",autocomplete:t.autocomplete},domProps:{value:t.value},on:{input:t.onPropertyChange}}),t._v(" "),e("div",{staticClass:"property__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1)],1)]):e("span",[t._v("\n\t\t"+t._s(t.value||t.t("settings","No {property} set",{property:t.readable.toLocaleLowerCase()}))+"\n\t")]),t._v(" "),t.helperText?e("p",{staticClass:"property__helper-text-message property__helper-text-message--error",attrs:{id:"".concat(t.name,"-helper-text")}},[e("AlertCircle",{staticClass:"property__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e()],1)}),[],!1,null,"400ac7dc",null).exports,{displayName:Yt}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:$t}=(0,s.j)("settings","accountParameters",{}),Wt={name:"DisplayNameSection",components:{AccountPropertySection:qt},data:()=>({displayName:{...Yt,readable:V[Yt.name]},displayNameChangeSupported:$t}),methods:{onValidate:t=>""!==t,onSave(t){oc_userconfig.avatar.generated&&(oc_userconfig.avatar.version=Date.now()),(0,p.j8)("settings:display-name:updated",t)}}},Kt=(0,M.Z)(Wt,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your full name"),autocomplete:"username","is-editable":t.displayNameChangeSupported,"on-validate":t.onValidate,"on-save":t.onSave}},"AccountPropertySection",t.displayName,!1,!0))}),[],!1,null,null,null).exports;var Qt=n(15961);const Jt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL,value:t})).data},Xt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:t,value:""})).data},te=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:"".concat(F.EMAIL).concat(Q),value:t})).data},ee=async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(F.EMAIL_COLLECTION).concat(Q)});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data};function ae(t){return"string"==typeof t&&et.test(t)&&"\n"!==t.slice(-1)&&t.length<=320&&encodeURIComponent(t).replace(/%../g,"x").length<=320}const ne={name:"Email",components:{NcActions:Qt.O3,NcActionButton:Qt.Js,AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,FederationControl:At},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:tt.NOT_VERIFIED}},data(){return{propertyReadable:z.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:ee,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled(){return!this.primary&&this.localVerificationState!==tt.VERIFIED},setNotificationMailLabel(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===tt.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled(){return!this.initialEmail},inputId(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted(){this.primary||""!==this.initialEmail||this.$nextTick((()=>{var t;return null===(t=this.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange(t){this.$emit("update:email",t.target.value),this.debounceEmailChange(t.target.value.trim())},debounceEmailChange:Mt()((async function(t){var e;this.helperText=null,null!==(e=this.$refs.email)&&void 0!==e&&e.validationMessage?this.helperText=this.$refs.email.validationMessage:(ae(t)||""===t)&&(this.primary?await this.updatePrimaryEmail(t):t&&(""===this.initialEmail?await this.addAdditionalEmail(t):await this.updateAdditionalEmail(t)))}),500),async deleteEmail(){this.primary?(this.$emit("update:email",""),await this.updatePrimaryEmail("")):await this.deleteAdditionalEmail()},async updatePrimaryEmail(e){try{var a,n;const t=await Jt(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(a){""===e?this.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a}):this.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a})}},async addAdditionalEmail(e){try{var a,n;const t=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL_COLLECTION,value:t})).data})(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:e})}},async setNotificationMail(){try{var t,e;const a=this.primary||this.isNotificationEmail?"":this.initialEmail,n=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.NOTIFICATION_EMAIL,value:t})).data})(a);this.handleResponse({notificationEmail:a,status:null===(t=n.ocs)||void 0===t||null===(e=t.meta)||void 0===e?void 0:e.status})}catch(t){this.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t})}},async updateAdditionalEmail(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data})(this.initialEmail,e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:e})}},async deleteAdditionalEmail(){try{var e,a;const t=await Xt(this.initialEmail);this.handleDeleteAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e})}},handleDeleteAdditionalEmail(e){"ok"===e?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse(t){let{email:e,notificationEmail:a,status:n,errorMessage:i,error:o}=t;"ok"===n?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(ot(o,i),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))},onScopeChange(t){this.$emit("update:scope",t)}}},ie=ne;var oe=n(21395),se={};se.styleTagTransform=R(),se.setAttributes=k(),se.insert=j().bind(null,"head"),se.domAPI=P(),se.insertStyleElement=O(),I()(oe.Z,se),oe.Z&&oe.Z.locals&&oe.Z.locals;const re=(0,M.Z)(ie,(function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:t.inputId,type:"email",autocomplete:"email",placeholder:t.inputPlaceholder,"aria-describedby":t.helperText?"".concat(t.inputId,"-helper-text"):"",autocapitalize:"none",autocorrect:"off"},domProps:{value:t.email},on:{input:t.onEmailChange}}),t._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1),t._v(" "),t.primary?t._e():[e("FederationControl",{attrs:{readable:t.propertyReadable,additional:!0,"additional-value":t.email,disabled:t.federationDisabled,"handle-additional-scope-change":t.saveAdditionalEmailScope,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})],t._v(" "),e("NcActions",{staticClass:"email__actions",attrs:{"aria-label":t.t("settings","Email options"),"force-menu":!0}},[e("NcActionButton",{attrs:{"aria-label":t.deleteEmailLabel,"close-after-click":!0,disabled:t.deleteDisabled,icon:"icon-delete"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.deleteEmail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.deleteEmailLabel)+"\n\t\t\t\t")]),t._v(" "),t.primary&&t.isNotificationEmail?t._e():e("NcActionButton",{attrs:{"aria-label":t.setNotificationMailLabel,"close-after-click":!0,disabled:t.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.setNotificationMail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),t._v(" "),t.helperText?e("p",{staticClass:"email__helper-text-message email__helper-text-message--error",attrs:{id:"".concat(t.inputId,"-helper-text")}},[e("AlertCircle",{staticClass:"email__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e(),t._v(" "),t.isNotificationEmail?e("em",[t._v("\n\t\t"+t._s(t.t("settings","Primary email for password reset and notifications"))+"\n\t")]):t._e()])}),[],!1,null,"3b4a1ecf",null).exports,{emailMap:{additionalEmails:le,primaryEmail:de,notificationEmail:ce}}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:pe}=(0,s.j)("settings","accountParameters",{}),Ae={name:"EmailSection",components:{HeaderBar:gt,Email:re},data(){return{accountProperty:z.EMAIL,additionalEmails:le.map((t=>({...t,key:this.generateUniqueKey()}))),displayNameChangeSupported:pe,primaryEmail:{...de,readable:V[de.name]},savePrimaryEmailScope:te,notificationEmail:ce}},computed:{firstAdditionalEmail(){return this.additionalEmails.length?this.additionalEmails[0].value:null},inputId(){return"account-property-".concat(this.primaryEmail.name)},isValidSection(){return ae(this.primaryEmail.value)&&this.additionalEmails.map((t=>{let{value:e}=t;return e})).every(ae)},primaryEmailValue:{get(){return this.primaryEmail.value},set(t){this.primaryEmail.value=t}}},methods:{onAddAdditionalEmail(){this.isValidSection&&this.additionalEmails.push({value:"",scope:X,key:this.generateUniqueKey()})},onDeleteAdditionalEmail(t){this.$delete(this.additionalEmails,t)},async onUpdateEmail(){if(""===this.primaryEmailValue&&this.firstAdditionalEmail){const t=this.firstAdditionalEmail;await this.deleteFirstAdditionalEmail(),this.primaryEmailValue=t,await this.updatePrimaryEmail()}},async onUpdateNotificationEmail(t){this.notificationEmail=t},async updatePrimaryEmail(){try{var e,a;const t=await Jt(this.primaryEmailValue);this.handleResponse(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to update primary email address"),e)}},async deleteFirstAdditionalEmail(){try{var e,a;const t=await Xt(this.firstAdditionalEmail);this.handleDeleteFirstAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to delete additional email address"),e)}},handleDeleteFirstAdditionalEmail(e){"ok"===e?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse(t,e,a){"ok"!==t&&ot(a,e)},generateUniqueKey:()=>Math.random().toString(36).substring(2)}};var ue=n(73070),me={};me.styleTagTransform=R(),me.setAttributes=k(),me.insert=j().bind(null,"head"),me.domAPI=P(),me.insertStyleElement=O(),I()(ue.Z,me),ue.Z&&ue.Z.locals&&ue.Z.locals;const he=(0,M.Z)(Ae,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.primaryEmail.readable,"handle-scope-change":t.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":t.isValidSection,scope:t.primaryEmail.scope},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"add-additional":t.onAddAdditionalEmail}}),t._v(" "),t.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:t.primaryEmail.scope,email:t.primaryEmail.value,"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"update:email":[function(e){return t.$set(t.primaryEmail,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail}})]:e("span",[t._v("\n\t\t"+t._s(t.primaryEmail.value||t.t("settings","No email address set"))+"\n\t")]),t._v(" "),t.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[t._v(t._s(t.t("settings","Additional emails")))]),t._v(" "),t._l(t.additionalEmails,(function(a,n){return e("Email",{key:a.key,attrs:{index:n,scope:a.scope,email:a.value,"local-verification-state":parseInt(a.locallyVerified,10),"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(a,"scope",e)},"update:email":[function(e){return t.$set(a,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail,"delete-additional-email":function(e){return t.onDeleteAdditionalEmail(n)}}})}))]:t._e()],2)}),[],!1,null,"46c7eb7e",null).exports;var ge=n(45004);const{defaultPhoneRegion:ve,phone:Ce}=(0,s.j)("settings","personalInfoParameters",{}),fe={name:"PhoneSection",components:{AccountPropertySection:qt},data:()=>({phone:{...Ce,readable:V[Ce.name]}}),methods:{onValidate:t=>ve?(0,ge.y)(t,ve):(0,ge.y)(t)}},ye=(0,M.Z)(fe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your phone number"),autocomplete:"tel",type:"tel","on-validate":t.onValidate}},"AccountPropertySection",t.phone,!1,!0))}),[],!1,null,null,null).exports,{location:be}=(0,s.j)("settings","personalInfoParameters",{}),xe={name:"LocationSection",components:{AccountPropertySection:qt},data:()=>({location:{...be,readable:V[be.name]}})},Ee=(0,M.Z)(xe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{autocomplete:"address-level1",placeholder:t.t("settings","Your location")}},"AccountPropertySection",t.location,!1,!0))}),[],!1,null,null,null).exports,{website:_e}=(0,s.j)("settings","personalInfoParameters",{}),we={name:"WebsiteSection",components:{AccountPropertySection:qt},data:()=>({website:{..._e,readable:V[_e.name]}}),methods:{onValidate:t=>function(t){try{return new URL(t),!0}catch(t){return!1}}(t)}},Ie=(0,M.Z)(we,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your website"),autocomplete:"url",type:"url","on-validate":t.onValidate}},"AccountPropertySection",t.website,!1,!0))}),[],!1,null,null,null).exports,{twitter:Se}=(0,s.j)("settings","personalInfoParameters",{}),Pe={name:"TwitterSection",components:{AccountPropertySection:qt},data:()=>({twitter:{...Se,readable:V[Se.name]}})},Le=(0,M.Z)(Pe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your Twitter handle")}},"AccountPropertySection",t.twitter,!1,!0))}),[],!1,null,null,null).exports,{fediverse:je}=(0,s.j)("settings","personalInfoParameters",{}),Be={name:"FediverseSection",components:{AccountPropertySection:qt},data:()=>({fediverse:{...je,readable:V[je.name]}})},ke=(0,M.Z)(Be,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your handle")}},"AccountPropertySection",t.fediverse,!1,!0))}),[],!1,null,null,null).exports,De={name:"Language",props:{inputId:{type:String,default:null},commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data(){return{initialLanguage:this.language}},computed:{allLanguages(){return Object.freeze([...this.commonLanguages,...this.otherLanguages].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},methods:{async onLanguageChange(t){const e=this.constructLanguage(t.target.value);var a;this.$emit("update:language",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLanguage(e)},async updateLanguage(e){try{var a,n;const t=await nt(q.LANGUAGE,e.code);this.handleResponse({language:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update language"),error:e})}},constructLanguage(t){return{code:t,name:this.allLanguages[t]}},handleResponse(t){let{language:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLanguage=e:ot(i,n)},reloadPage(){location.reload()}}};var Oe=n(42569),Ne={};Ne.styleTagTransform=R(),Ne.setAttributes=k(),Ne.insert=j().bind(null,"head"),Ne.domAPI=P(),Ne.insertStyleElement=O(),I()(Oe.Z,Ne),Oe.Z&&Oe.Z.locals&&Oe.Z.locals;const Re=(0,M.Z)(De,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"language"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Language")},on:{change:t.onLanguageChange}},[t._l(t.commonLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[t._v(t._s(t.t("settings","Help translate")))])])])}),[],!1,null,"5c847b3a",null).exports,{languageMap:{activeLanguage:Te,commonLanguages:Ze,otherLanguages:Me}}=(0,s.j)("settings","personalInfoParameters",{}),Ue={name:"LanguageSection",components:{Language:Re,HeaderBar:gt},data:()=>({propertyReadable:Y.LANGUAGE,commonLanguages:Ze,otherLanguages:Me,language:Te}),computed:{inputId:()=>"account-setting-".concat(q.LANGUAGE),isEditable(){return Boolean(this.language)}}};var Fe=n(12531),ze={};ze.styleTagTransform=R(),ze.setAttributes=k(),ze.insert=j().bind(null,"head"),ze.domAPI=P(),ze.insertStyleElement=O(),I()(Fe.Z,ze),Fe.Z&&Fe.Z.locals&&Fe.Z.locals;const Ve=(0,M.Z)(Ue,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Language",{attrs:{"input-id":t.inputId,"common-languages":t.commonLanguages,"other-languages":t.otherLanguages,language:t.language},on:{"update:language":function(e){t.language=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"92685b76",null).exports;var He=n(80351),Ge=n.n(He);const qe={name:"Locale",components:{Web:n(97859).default},props:{inputId:{type:String,default:null},locale:{type:Object,required:!0},localesForLanguage:{type:Array,required:!0},otherLocales:{type:Array,required:!0}},data(){return{initialLocale:this.locale,example:{date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}}},computed:{allLocales(){return Object.freeze([...this.localesForLanguage,...this.otherLocales].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},created(){setInterval(this.refreshExample,1e3)},methods:{async onLocaleChange(t){const e=this.constructLocale(t.target.value);var a;this.$emit("update:locale",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLocale(e)},async updateLocale(e){try{var a,n;const t=await nt(q.LOCALE,e.code);this.handleResponse({locale:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update locale"),error:e})}},constructLocale(t){return{code:t,name:this.allLocales[t]}},handleResponse(t){let{locale:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLocale=e:(this.$emit("update:locale",this.initialLocale),ot(i,n))},refreshExample(){this.example={date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}},reloadPage(){location.reload()}}};var Ye=n(87229),$e={};$e.styleTagTransform=R(),$e.setAttributes=k(),$e.insert=j().bind(null,"head"),$e.domAPI=P(),$e.insertStyleElement=O(),I()(Ye.Z,$e),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;const We=(0,M.Z)(qe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"locale"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Locale")},on:{change:t.onLocaleChange}},[t._l(t.localesForLanguage,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLocales,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("div",{staticClass:"example"},[e("Web",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"example__text"},[e("p",[e("span",[t._v(t._s(t.example.date))]),t._v(" "),e("span",[t._v(t._s(t.example.time))])]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("settings","Week starts on {firstDayOfWeek}",{firstDayOfWeek:this.example.firstDayOfWeek}))+"\n\t\t\t")])])],1)])}),[],!1,null,"1ac456dc",null).exports,{localeMap:{activeLocale:Ke,localesForLanguage:Qe,otherLocales:Je}}=(0,s.j)("settings","personalInfoParameters",{}),Xe={name:"LocaleSection",components:{Locale:We,HeaderBar:gt},data:()=>({propertyReadable:Y.LOCALE,localesForLanguage:Qe,otherLocales:Je,locale:Ke}),computed:{inputId:()=>"account-setting-".concat(q.LOCALE),isEditable(){return Boolean(this.locale)}}};var ta=n(682),ea={};ea.styleTagTransform=R(),ea.setAttributes=k(),ea.insert=j().bind(null,"head"),ea.domAPI=P(),ea.insertStyleElement=O(),I()(ta.Z,ea),ta.Z&&ta.Z.locals&&ta.Z.locals;const aa=(0,M.Z)(Xe,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Locale",{attrs:{"input-id":t.inputId,"locales-for-language":t.localesForLanguage,"other-locales":t.otherLocales,locale:t.locale},on:{"update:locale":function(e){t.locale=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No locale set"))+"\n\t")])],2)}),[],!1,null,"84fca724",null).exports,na={name:"EditProfileAnchorLink",components:{ChevronDownIcon:n(41622).default},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled(){return!this.profileEnabled}}};var ia=n(15043),oa={};oa.styleTagTransform=R(),oa.setAttributes=k(),oa.insert=j().bind(null,"head"),oa.domAPI=P(),oa.insertStyleElement=O(),I()(ia.Z,oa),ia.Z&&ia.Z.locals&&ia.Z.locals;var sa=n(9142),ra={};ra.styleTagTransform=R(),ra.setAttributes=k(),ra.insert=j().bind(null,"head"),ra.domAPI=P(),ra.insertStyleElement=O(),I()(sa.Z,ra),sa.Z&&sa.Z.locals&&sa.Z.locals;const la=(0,M.Z)(na,(function(){var t=this,e=t._self._c;return e("a",t._g({class:{disabled:t.disabled},attrs:{href:"#profile-visibility"}},t.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{size:22}}),t._v("\n\t"+t._s(t.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"7539c74a",null).exports;var da=n(20571);const ca={name:"ProfileCheckbox",components:{NcCheckboxRadioSwitch:n.n(da)()},props:{profileEnabled:{type:Boolean,required:!0}},data(){return{isProfileEnabled:this.profileEnabled,loading:!1}},methods:{async saveEnableProfile(){this.loading=!0;try{var e,a;const t=await nt(F.PROFILE_ENABLED,this.isProfileEnabled);this.handleResponse({isProfileEnabled:this.isProfileEnabled,status:null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:e})}},handleResponse(t){let{isProfileEnabled:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(0,p.j8)("settings:profile-enabled:updated",e):ot(i,n),this.loading=!1}}},pa=(0,M.Z)(ca,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"checkbox-container"},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.isProfileEnabled,loading:t.loading},on:{"update:checked":[function(e){t.isProfileEnabled=e},t.saveEnableProfile]}},[t._v("\n\t\t"+t._s(t.t("settings","Enable Profile"))+"\n\t")])],1)}),[],!1,null,null,null).exports,Aa={name:"ProfilePreviewCard",components:{NcAvatar:u()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled(){return!this.profileEnabled},profilePageLink(){return this.profileEnabled?(0,d.generateUrl)("/u/{userId}",{userId:(0,o.ts)().uid}):null}}};var ua=n(80507),ma={};ma.styleTagTransform=R(),ma.setAttributes=k(),ma.insert=j().bind(null,"head"),ma.domAPI=P(),ma.insertStyleElement=O(),I()(ua.Z,ma),ua.Z&&ua.Z.locals&&ua.Z.locals;const ha=(0,M.Z)(Aa,(function(){var t=this,e=t._self._c;return e("a",{staticClass:"preview-card",class:{disabled:t.disabled},attrs:{href:t.profilePageLink}},[e("NcAvatar",{staticClass:"preview-card__avatar",attrs:{user:t.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),t._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[t._v(t._s(t.displayName))])]),t._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[t._v(t._s(t.organisation))])])],1)}),[],!1,null,"61586aa5",null).exports,{organisation:{value:ga},displayName:{value:va},profileEnabled:Ca,userId:fa}=(0,s.j)("settings","personalInfoParameters",{}),ya={name:"ProfileSection",components:{EditProfileAnchorLink:la,HeaderBar:gt,ProfileCheckbox:pa,ProfilePreviewCard:ha},data:()=>({propertyReadable:z.PROFILE_ENABLED,organisation:ga,displayName:va,profileEnabled:Ca,userId:fa}),mounted(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.Ld)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.r1)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate(t){this.displayName=t},handleOrganisationUpdate(t){this.organisation=t}}},ba=ya;var xa=n(90552),Ea={};Ea.styleTagTransform=R(),Ea.setAttributes=k(),Ea.insert=j().bind(null,"head"),Ea.domAPI=P(),Ea.insertStyleElement=O(),I()(xa.Z,Ea),xa.Z&&xa.Z.locals&&xa.Z.locals;const _a=(0,M.Z)(ba,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{readable:t.propertyReadable}}),t._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":t.profileEnabled},on:{"update:profileEnabled":function(e){t.profileEnabled=e},"update:profile-enabled":function(e){t.profileEnabled=e}}}),t._v(" "),e("ProfilePreviewCard",{attrs:{organisation:t.organisation,"display-name":t.displayName,"profile-enabled":t.profileEnabled,"user-id":t.userId}}),t._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":t.profileEnabled}})],1)}),[],!1,null,"cf64d964",null).exports,{organisation:wa}=(0,s.j)("settings","personalInfoParameters",{}),Ia={name:"OrganisationSection",components:{AccountPropertySection:qt},data:()=>({organisation:{...wa,readable:V[wa.name]}})},Sa=(0,M.Z)(Ia,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{autocomplete:"organization",placeholder:t.t("settings","Your organisation")}},"AccountPropertySection",t.organisation,!1,!0))}),[],!1,null,null,null).exports,{role:Pa}=(0,s.j)("settings","personalInfoParameters",{}),La={name:"RoleSection",components:{AccountPropertySection:qt},data:()=>({role:{...Pa,readable:V[Pa.name]}})},ja=(0,M.Z)(La,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{autocomplete:"organization-title",placeholder:t.t("settings","Your role")}},"AccountPropertySection",t.role,!1,!0))}),[],!1,null,null,null).exports,{headline:Ba}=(0,s.j)("settings","personalInfoParameters",{}),ka={name:"HeadlineSection",components:{AccountPropertySection:qt},data:()=>({headline:{...Ba,readable:V[Ba.name]}})},Da=(0,M.Z)(ka,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your headline")}},"AccountPropertySection",t.headline,!1,!0))}),[],!1,null,null,null).exports,{biography:Oa}=(0,s.j)("settings","personalInfoParameters",{}),Na={name:"BiographySection",components:{AccountPropertySection:qt},data:()=>({biography:{...Oa,readable:V[Oa.name]}})},Ra=(0,M.Z)(Na,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your biography"),"multi-line":!0}},"AccountPropertySection",t.biography,!1,!0))}),[],!1,null,null,null).exports;var Ta=n(36456),Za=n.n(Ta);const Ma=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),Ua=Object.freeze({[Ma.SHOW]:{name:Ma.SHOW,label:t("settings","Show to everyone")},[Ma.SHOW_USERS_ONLY]:{name:Ma.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")},[Ma.HIDE]:{name:Ma.HIDE,label:t("settings","Hide")}}),{profileEnabled:Fa}=(0,s.j)("settings","personalInfoParameters",!1),za={name:"VisibilityDropdown",components:{NcSelect:Za()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data(){return{initialVisibility:this.visibility,profileEnabled:Fa}},computed:{disabled(){return!this.profileEnabled},inputId(){return"profile-visibility-".concat(this.paramId)},visibilityObject(){return Ua[this.visibility]},visibilityOptions:()=>Object.values(Ua)},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{async onVisibilityChange(t){if(null!==t){const{name:e}=t;this.$emit("update:visibility",e),""!==e&&await this.updateVisibility(e)}},async updateVisibility(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("/profile/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{paramId:t,visibility:e})).data})(this.paramId,e);this.handleResponse({visibility:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:this.displayId}),error:e})}},handleResponse(t){let{visibility:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialVisibility=e:ot(i,n)},handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Va=za;var Ha=n(63019),Ga={};Ga.styleTagTransform=R(),Ga.setAttributes=k(),Ga.insert=j().bind(null,"head"),Ga.domAPI=P(),Ga.insertStyleElement=O(),I()(Ha.Z,Ga),Ha.Z&&Ha.Z.locals&&Ha.Z.locals;const qa=(0,M.Z)(Va,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"visibility-container",class:{disabled:t.disabled}},[e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.displayId)+"\n\t")]),t._v(" "),e("NcSelect",{staticClass:"visibility-container__select",attrs:{"input-id":t.inputId,clearable:!1,options:t.visibilityOptions,value:t.visibilityObject},on:{"option:selected":t.onVisibilityChange}})],1)}),[],!1,null,"b13d20da",null).exports,{profileConfig:Ya}=(0,s.j)("settings","profileParameters",{}),{profileEnabled:$a}=(0,s.j)("settings","personalInfoParameters",!1),Wa=(t,e)=>t.appId===e.appId||"core"!==t.appId&&"core"!==e.appId?t.displayId.localeCompare(e.displayId):"core"===t.appId?1:-1,Ka={name:"ProfileVisibilitySection",components:{HeaderBar:gt,VisibilityDropdown:qa},data:()=>({heading:H.PROFILE_VISIBILITY,profileEnabled:$a,visibilityParams:Object.entries(Ya).map((t=>{let[e,{appId:a,displayId:n,visibility:i}]=t;return{id:e,appId:a,displayId:n,visibility:i}})).sort(Wa),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}),computed:{disabled(){return!this.profileEnabled},rows(){return Math.ceil(this.visibilityParams.length/2)}},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=()=>{this.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Qa=Ka;var Ja=n(45386),Xa={};Xa.styleTagTransform=R(),Xa.setAttributes=k(),Xa.insert=j().bind(null,"head"),Xa.domAPI=P(),Xa.insertStyleElement=O(),I()(Ja.Z,Xa),Ja.Z&&Ja.Z.locals&&Ja.Z.locals;const tn=(0,M.Z)(Qa,(function(){var t=this,e=t._self._c;return e("section",{style:{marginLeft:t.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.heading}}),t._v(" "),e("em",{class:{disabled:t.disabled}},[t._v("\n\t\t"+t._s(t.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),t._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat(".concat(t.rows,", 44px)")}},t._l(t.visibilityParams,(function(a){return e("VisibilityDropdown",{key:a.id,attrs:{"param-id":a.id,"display-id":a.displayId,visibility:a.visibility},on:{"update:visibility":function(e){return t.$set(a,"visibility",e)}}})})),1)],1)}),[],!1,null,"a07dbf96",null).exports;n.nc=btoa((0,o.IH)());const en=(0,s.j)("settings","profileEnabledGlobally",!0);i.default.mixin({methods:{t:r.Iu}});const an=i.default.extend(_t),nn=i.default.extend(Tt),on=i.default.extend(Kt),sn=i.default.extend(he),rn=i.default.extend(ye),ln=i.default.extend(Ee),dn=i.default.extend(Ie),cn=i.default.extend(Le),pn=i.default.extend(ke),An=i.default.extend(Ve),un=i.default.extend(aa);if((new an).$mount("#vue-avatar-section"),(new nn).$mount("#vue-details-section"),(new on).$mount("#vue-displayname-section"),(new sn).$mount("#vue-email-section"),(new rn).$mount("#vue-phone-section"),(new ln).$mount("#vue-location-section"),(new dn).$mount("#vue-website-section"),(new cn).$mount("#vue-twitter-section"),(new pn).$mount("#vue-fediverse-section"),(new An).$mount("#vue-language-section"),(new un).$mount("#vue-locale-section"),en){const t=i.default.extend(_a),e=i.default.extend(Sa),a=i.default.extend(ja),n=i.default.extend(Da),o=i.default.extend(Ra),s=i.default.extend(tn);(new t).$mount("#vue-profile-section"),(new e).$mount("#vue-organisation-section"),(new a).$mount("#vue-role-section"),(new n).$mount("#vue-headline-section"),(new o).$mount("#vue-biography-section"),(new s).$mount("#vue-profile-visibility-section")}},31246:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA",sourcesContent:['\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type="file"] {\n\tdisplay: none;\n}\n'],sourceRoot:""}]);const r=s},18118:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA",sourcesContent:["\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},21395:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".email[data-v-3b4a1ecf]{display:grid;align-items:center}.email input[data-v-3b4a1ecf]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-3b4a1ecf]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-3b4a1ecf]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf]:hover,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:focus,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-3b4a1ecf]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-3b4a1ecf]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-3b4a1ecf]{color:var(--color-error)}.fade-enter[data-v-3b4a1ecf],.fade-leave-to[data-v-3b4a1ecf]{opacity:0}.fade-enter-active[data-v-3b4a1ecf]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3b4a1ecf]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]);const r=s},73070:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},42569:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",sourcesContent:["\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]);const r=s},12531:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},87229:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA",sourcesContent:["\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},682:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},15043:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA",sourcesContent:["\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]);const r=s},9142:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"a[data-v-7539c74a]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-7539c74a]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-7539c74a]:hover,a[data-v-7539c74a]:focus,a[data-v-7539c74a]:active{color:var(--color-main-text);background-color:var(--color-background-dark)}a.disabled[data-v-7539c74a]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,mCAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,4BAAA,CACA,6CAAA,CAGD,4BACC,mBAAA",sourcesContent:["\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-text-maxcontrast);\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]);const r=s},80507:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".preview-card[data-v-61586aa5]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:hover,.preview-card[data-v-61586aa5]:focus,.preview-card[data-v-61586aa5]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-61586aa5]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-61586aa5],.preview-card.disabled[data-v-61586aa5] *{cursor:default}.preview-card__avatar[data-v-61586aa5]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-61586aa5]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-61586aa5],.preview-card__footer[data-v-61586aa5]{position:relative;width:auto}.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-61586aa5]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-61586aa5]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-61586aa5]{height:46px}.preview-card__footer span[data-v-61586aa5]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,qCAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},90552:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},45386:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA",sourcesContent:["\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},63019:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA",sourcesContent:["\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]);const r=s},49237:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-400ac7dc]{padding:10px 10px}section[data-v-400ac7dc] button:disabled{cursor:default}section .property[data-v-400ac7dc]{display:grid;align-items:center}section .property textarea[data-v-400ac7dc]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-400ac7dc]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-400ac7dc]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-400ac7dc]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-400ac7dc]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-400ac7dc]{color:var(--color-error)}section .fade-enter[data-v-400ac7dc],section .fade-leave-to[data-v-400ac7dc]{opacity:0}section .fade-enter-active[data-v-400ac7dc]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-400ac7dc]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n"],sourceRoot:""}]);const r=s},14036:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",sourcesContent:["\n.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]);const r=s},69205:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions__btn[data-v-404f7a30] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-404f7a30]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA",sourcesContent:["\n.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n}\n"],sourceRoot:""}]);const r=s},90564:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA",sourcesContent:["\n.headerbar-label {\n\tfont-weight: normal;\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tgap: 8px;\n\talign-items: center;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 44px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: 0;\n}\n\n.button-vue {\n\tmargin: 0 0 0 auto !important;\n}\n"],sourceRoot:""}]);const r=s},46700:(t,e,a)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=o(t);return a(e)}function o(t){if(!a.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}i.keys=function(){return Object.keys(n)},i.resolve=o,t.exports=i,i.id=46700},8738:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC"},81490:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},n={};function i(t){var e=n[t];if(void 0!==e)return e.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return a[t].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=a,e=[],i.O=(t,a,n,o)=>{if(!a){var s=1/0;for(c=0;c<e.length;c++){a=e[c][0],n=e[c][1],o=e[c][2];for(var r=!0,l=0;l<a.length;l++)(!1&o||s>=o)&&Object.keys(i.O).every((t=>i.O[t](a[l])))?a.splice(l--,1):(r=!1,o<s&&(s=o));if(r){e.splice(c--,1);var d=n();void 0!==d&&(t=d)}}return t}o=o||0;for(var c=e.length;c>0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[a,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var a in e)i.o(e,a)&&!i.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=4418,(()=>{i.b=document.baseURI||self.location.href;var t={4418:0};i.O.j=e=>0===t[e];var e=(e,a)=>{var n,o,s=a[0],r=a[1],l=a[2],d=0;if(s.some((e=>0!==t[e]))){for(n in r)i.o(r,n)&&(i.m[n]=r[n]);if(l)var c=l(i)}for(e&&e(a);d<s.length;d++)o=s[d],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(c)},a=self.webpackChunknextcloud=self.webpackChunknextcloud||[];a.forEach(e.bind(null,0)),a.push=e.bind(null,a.push.bind(a))})(),i.nc=void 0;var o=i.O(void 0,[7874],(()=>i(82170)));o=i.O(o)})(); -//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=fc362aa3275b2d78e74f
\ No newline at end of file +(()=>{var e,a={95766:(e,a,n)=>{"use strict";var i=n(20144),o=n(45994),s=n(79954),r=n(31352),l=(n(36144),n(4820)),d=n(79753),c=n(64024),p=n(78595),A=n(75925),u=n.n(A),m=n(10861),h=n.n(m),g=n(17652),v=(n(74063),n(75762)),C=n(34829),f=n(57612),y=n(61149),b=n(12945),x=n.n(b),E=n(45400);const _={name:"FederationControlAction",components:{NcActionButton:n.n(E)()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:()=>{}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope(){this.handleScopeChange(this.name)}}};var w=n(93379),I=n.n(w),S=n(7795),P=n.n(S),L=n(90569),j=n.n(L),B=n(3565),k=n.n(B),D=n(19216),O=n.n(D),N=n(44589),R=n.n(N),T=n(30253),Z={};Z.styleTagTransform=R(),Z.setAttributes=k(),Z.insert=j().bind(null,"head"),Z.domAPI=P(),Z.insertStyleElement=O(),I()(T.Z,Z),T.Z&&T.Z.locals&&T.Z.locals;var M=n(51900);const U=(0,M.Z)(_,(function(){var t=this;return(0,t._self._c)("NcActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":t.activeScope===t.name},attrs:{"aria-label":t.isSupportedScope?t.tooltip:t.tooltipDisabled,"close-after-click":!0,disabled:!t.isSupportedScope,icon:t.iconClass,title:t.displayName},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.updateScope.apply(null,arguments)}}},[t._v("\n\t"+t._s(t.isSupportedScope?t.tooltip:t.tooltipDisabled)+"\n")])}),[],!1,null,"2ef553c8",null).exports,F=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",FEDIVERSE:"fediverse",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),z=Object.freeze({ADDRESS:(0,r.Iu)("settings","Location"),AVATAR:(0,r.Iu)("settings","Profile picture"),BIOGRAPHY:(0,r.Iu)("settings","About"),DISPLAYNAME:(0,r.Iu)("settings","Full name"),EMAIL_COLLECTION:(0,r.Iu)("settings","Additional email"),EMAIL:(0,r.Iu)("settings","Email"),HEADLINE:(0,r.Iu)("settings","Headline"),ORGANISATION:(0,r.Iu)("settings","Organisation"),PHONE:(0,r.Iu)("settings","Phone number"),PROFILE_ENABLED:(0,r.Iu)("settings","Profile"),ROLE:(0,r.Iu)("settings","Role"),TWITTER:(0,r.Iu)("settings","Twitter"),FEDIVERSE:(0,r.Iu)("settings","Fediverse (e.g. Mastodon)"),WEBSITE:(0,r.Iu)("settings","Website")}),V=Object.freeze({[F.ADDRESS]:z.ADDRESS,[F.AVATAR]:z.AVATAR,[F.BIOGRAPHY]:z.BIOGRAPHY,[F.DISPLAYNAME]:z.DISPLAYNAME,[F.EMAIL_COLLECTION]:z.EMAIL_COLLECTION,[F.EMAIL]:z.EMAIL,[F.HEADLINE]:z.HEADLINE,[F.ORGANISATION]:z.ORGANISATION,[F.PHONE]:z.PHONE,[F.PROFILE_ENABLED]:z.PROFILE_ENABLED,[F.ROLE]:z.ROLE,[F.TWITTER]:z.TWITTER,[F.FEDIVERSE]:z.FEDIVERSE,[F.WEBSITE]:z.WEBSITE}),H=Object.freeze({PROFILE_VISIBILITY:(0,r.Iu)("settings","Profile visibility")}),G=Object.freeze({[z.ADDRESS]:F.ADDRESS,[z.AVATAR]:F.AVATAR,[z.BIOGRAPHY]:F.BIOGRAPHY,[z.DISPLAYNAME]:F.DISPLAYNAME,[z.EMAIL_COLLECTION]:F.EMAIL_COLLECTION,[z.EMAIL]:F.EMAIL,[z.HEADLINE]:F.HEADLINE,[z.ORGANISATION]:F.ORGANISATION,[z.PHONE]:F.PHONE,[z.PROFILE_ENABLED]:F.PROFILE_ENABLED,[z.ROLE]:F.ROLE,[z.TWITTER]:F.TWITTER,[z.FEDIVERSE]:F.FEDIVERSE,[z.WEBSITE]:F.WEBSITE}),q=Object.freeze({LANGUAGE:"language",LOCALE:"locale"}),Y=Object.freeze({LANGUAGE:(0,r.Iu)("settings","Language"),LOCALE:(0,r.Iu)("settings","Locale")}),$=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),W=Object.freeze({[z.ADDRESS]:[$.LOCAL,$.PRIVATE],[z.AVATAR]:[$.LOCAL,$.PRIVATE],[z.BIOGRAPHY]:[$.LOCAL,$.PRIVATE],[z.DISPLAYNAME]:[$.LOCAL],[z.EMAIL_COLLECTION]:[$.LOCAL],[z.EMAIL]:[$.LOCAL],[z.HEADLINE]:[$.LOCAL,$.PRIVATE],[z.ORGANISATION]:[$.LOCAL,$.PRIVATE],[z.PHONE]:[$.LOCAL,$.PRIVATE],[z.PROFILE_ENABLED]:[$.LOCAL,$.PRIVATE],[z.ROLE]:[$.LOCAL,$.PRIVATE],[z.TWITTER]:[$.LOCAL,$.PRIVATE],[z.FEDIVERSE]:[$.LOCAL,$.PRIVATE],[z.WEBSITE]:[$.LOCAL,$.PRIVATE]}),K=Object.freeze([z.BIOGRAPHY,z.HEADLINE,z.ORGANISATION,z.ROLE]),Q="Scope",J=Object.freeze({[$.PRIVATE]:{name:$.PRIVATE,displayName:(0,r.Iu)("settings","Private"),tooltip:(0,r.Iu)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,r.Iu)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"},[$.LOCAL]:{name:$.LOCAL,displayName:(0,r.Iu)("settings","Local"),tooltip:(0,r.Iu)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"},[$.FEDERATED]:{name:$.FEDERATED,displayName:(0,r.Iu)("settings","Federated"),tooltip:(0,r.Iu)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,r.Iu)("settings","Not available as federation has been disabled for your account, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"},[$.PUBLISHED]:{name:$.PUBLISHED,displayName:(0,r.Iu)("settings","Published"),tooltip:(0,r.Iu)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,r.Iu)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}}),X=$.LOCAL,tt=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),et=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i;var at=n(10128);n(65509);const nt=async(t,e)=>{"boolean"==typeof e&&(e=e?"1":"0");const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data},it=(0,n(17499).IY)().setApp("settings").detectUser().build(),ot=(t,e)=>{var a;let n="";e&&(n+=e),429===(null===(a=t.response)||void 0===a?void 0:a.status)&&(n&&(n+="\n"),n+=(0,r.Iu)("settings","There were too many requests from your network. Retry later or contact your administrator if this is an error.")),(0,c.x2)(n),it.error(n||(0,r.Iu)("Error"),t)},{federationEnabled:st,lookupServerUploadEnabled:rt}=(0,s.j)("settings","accountParameters",{}),lt={name:"FederationControl",components:{NcActions:x(),FederationControlAction:U},props:{readable:{type:String,required:!0,validator:t=>Object.values(z).includes(t)||Object.values(Y).includes(t)||t===H.PROFILE_VISIBILITY},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data(){return{readableLowerCase:this.readable.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel(){return t("settings","Change scope level of {property}, current scope is {scope}",{property:this.readableLowerCase,scope:this.scopeDisplayNameLowerCase})},scopeDisplayNameLowerCase(){return J[this.scope].displayName.toLocaleLowerCase()},scopeIcon(){return J[this.scope].iconClass},federationScopes:()=>Object.values(J),supportedScopes(){const t=W[this.readable];return K.includes(this.readable)||(st&&t.push($.FEDERATED),rt&&t.push($.PUBLISHED)),t}},methods:{async changeScope(t){this.$emit("update:scope",t),this.additional?await this.updateAdditionalScope(t):await this.updatePrimaryScope(t)},async updatePrimaryScope(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:"".concat(t).concat(Q),value:e})).data})(G[this.readable],e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {property}",{property:this.readableLowerCase}),error:e})}},async updateAdditionalScope(e){try{var a,n;const t=await this.handleAdditionalScopeChange(this.additionalValue,e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {property}",{property:this.readableLowerCase}),error:e})}},handleResponse(t){let{scope:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialScope=e:(this.$emit("update:scope",this.initialScope),ot(i,n))}}},dt=lt;var ct=n(14036),pt={};pt.styleTagTransform=R(),pt.setAttributes=k(),pt.insert=j().bind(null,"head"),pt.domAPI=P(),pt.insertStyleElement=O(),I()(ct.Z,pt),ct.Z&&ct.Z.locals&&ct.Z.locals;const At=(0,M.Z)(dt,(function(){var t=this,e=t._self._c;return e("NcActions",{class:{"federation-actions":!t.additional,"federation-actions--additional":t.additional},attrs:{"aria-label":t.ariaLabel,"default-icon":t.scopeIcon,disabled:t.disabled}},t._l(t.federationScopes,(function(a){return e("FederationControlAction",{key:a.name,attrs:{"active-scope":t.scope,"display-name":a.displayName,"handle-scope-change":t.changeScope,"icon-class":a.iconClass,"is-supported-scope":t.supportedScopes.includes(a.name),name:a.name,"tooltip-disabled":a.tooltipDisabled,tooltip:a.tooltip,"aria-label":a.tooltip}})})),1)}),[],!1,null,"4ea07669",null).exports,ut={name:"HeaderBar",components:{FederationControl:At,NcButton:h(),Plus:y.Z},props:{scope:{type:String,default:null},readable:{type:String,required:!0},inputId:{type:String,default:null},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!0},isHeading:{type:Boolean,default:!1}},data(){return{localScope:this.scope}},computed:{isProfileProperty(){return this.readable===z.PROFILE_ENABLED},isSettingProperty(){return!Object.values(z).includes(this.readable)&&!Object.values(H).includes(this.readable)}},methods:{onAddAdditional(){this.$emit("add-additional")},onScopeChange(t){this.$emit("update:scope",t)}}};var mt=n(90564),ht={};ht.styleTagTransform=R(),ht.setAttributes=k(),ht.insert=j().bind(null,"head"),ht.domAPI=P(),ht.insertStyleElement=O(),I()(mt.Z,ht),mt.Z&&mt.Z.locals&&mt.Z.locals;const gt=(0,M.Z)(ut,(function(){var t=this,e=t._self._c;return e(t.isHeading?"h3":"div",{tag:"component",staticClass:"headerbar-label",class:{"setting-property":t.isSettingProperty,"profile-property":t.isProfileProperty}},[t.isHeading?e("span",[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]):e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]),t._v(" "),t.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{readable:t.readable,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})]:t._e(),t._v(" "),t.isEditable&&t.isMultiValueSupported?[e("NcButton",{attrs:{type:"tertiary",disabled:!t.isValidSection,"aria-label":t.t("settings","Add additional email")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.onAddAdditional.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[t._v("\n\t\t\t"+t._s(t.t("settings","Add"))+"\n\t\t")])]:t._e()],2)}),[],!1,null,"b43fcc0c",null).exports,{avatar:vt}=(0,s.j)("settings","personalInfoParameters",{}),{avatarChangeSupported:Ct}=(0,s.j)("settings","accountParameters",{}),ft=["image/png","image/jpeg"],yt=(0,c.fn)(t("settings","Choose your profile picture")).setMultiSelect(!1).setMimeTypeFilter(ft).setModal(!0).setType(1).allowDirectories(!1).build(),bt={name:"AvatarSection",components:{Delete:f.Z,Folder:C.default,HeaderBar:gt,NcAvatar:u(),NcButton:h(),Upload:v.Z,VueCropper:g.Z},data:()=>({avatar:{...vt,readable:V[vt.name]},avatarChangeSupported:Ct,showCropper:!1,loading:!1,userId:(0,o.ts)().uid,displayName:(0,o.ts)().displayName,version:oc_userconfig.avatar.version,isGenerated:oc_userconfig.avatar.generated,validMimeTypes:ft,cropperOptions:{aspectRatio:1,viewMode:1,guides:!1,center:!1,highlight:!1,autoCropArea:1,minContainerWidth:300,minContainerHeight:300}}),computed:{inputId(){return"account-property-".concat(this.avatar.name)}},created(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate)},methods:{activateLocalFilePicker(){this.$refs.input.value=null,this.$refs.input.click()},onChange(e){this.loading=!0;const a=e.target.files[0];if(!this.validMimeTypes.includes(a.type))return(0,c.x2)(t("settings","Please select a valid png or jpg file")),void this.cancel();const n=new FileReader;n.onload=t=>{this.$refs.cropper.replace(t.target.result),this.showCropper=!0},n.readAsDataURL(a)},async openFilePicker(){const e=await yt.pick();this.loading=!0;try{const{data:t}=await l.default.post((0,d.generateUrl)("/avatar"),{path:e});if("success"===t.status)this.handleAvatarUpdate(!1);else if("notsquare"===t.data){const t=(0,d.generateUrl)("/avatar/tmp")+"?requesttoken="+encodeURIComponent(OC.requestToken)+"#"+Math.floor(1e3*Math.random());this.$refs.cropper.replace(t),this.showCropper=!0}else(0,c.x2)(t.data.message),this.cancel()}catch(e){(0,c.x2)(t("settings","Error setting profile picture")),this.cancel()}},saveAvatar(){this.showCropper=!1,this.loading=!0;const e=this.$refs.cropper.getCroppedCanvas(),a=e.width>512?512/e.width:1;this.$refs.cropper.scale(a,a).getCroppedCanvas().toBlob((async e=>{if(null===e)return(0,c.x2)(t("settings","Error cropping profile picture")),void this.cancel();const a=new FormData;a.append("files[]",e);try{await l.default.post((0,d.generateUrl)("/avatar"),a),this.handleAvatarUpdate(!1)}catch(e){(0,c.x2)(t("settings","Error saving profile picture")),this.handleAvatarUpdate(this.isGenerated)}}))},async removeAvatar(){this.loading=!0;try{await l.default.delete((0,d.generateUrl)("/avatar")),this.handleAvatarUpdate(!0)}catch(e){(0,c.x2)(t("settings","Error removing profile picture")),this.handleAvatarUpdate(this.isGenerated)}},cancel(){this.showCropper=!1,this.loading=!1},handleAvatarUpdate(t){this.version=oc_userconfig.avatar.version=Date.now(),this.isGenerated=oc_userconfig.avatar.generated=t,this.loading=!1,(0,p.j8)("settings:avatar:updated",oc_userconfig.avatar.version)},handleDisplayNameUpdate(){this.version=oc_userconfig.avatar.version}}};var xt=n(31246),Et={};Et.styleTagTransform=R(),Et.setAttributes=k(),Et.insert=j().bind(null,"head"),Et.domAPI=P(),Et.insertStyleElement=O(),I()(xt.Z,Et),xt.Z&&xt.Z.locals&&xt.Z.locals;const _t=(0,M.Z)(bt,(function(){var t=this,e=t._self._c;return e("section",{attrs:{id:"vue-avatar-section"}},[e("h3",{staticClass:"hidden-visually"},[t._v(" "+t._s(t.t("settings","Your profile information"))+" ")]),t._v(" "),e("HeaderBar",{attrs:{"input-id":t.avatarChangeSupported?t.inputId:null,readable:t.avatar.readable,scope:t.avatar.scope},on:{"update:scope":function(e){return t.$set(t.avatar,"scope",e)}}}),t._v(" "),t.showCropper?t._e():e("div",{staticClass:"avatar__container"},[e("div",{staticClass:"avatar__preview"},[t.loading?e("div",{staticClass:"icon-loading"}):e("NcAvatar",{key:t.version,attrs:{user:t.userId,"aria-label":t.t("settings","Your profile picture"),"disabled-menu":!0,"disabled-tooltip":!0,"show-user-status":!1,size:180}})],1),t._v(" "),t.avatarChangeSupported?[e("div",{staticClass:"avatar__buttons"},[e("NcButton",{attrs:{"aria-label":t.t("settings","Upload profile picture")},on:{click:t.activateLocalFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Upload",{attrs:{size:20}})]},proxy:!0}],null,!1,1329850251)}),t._v(" "),e("NcButton",{attrs:{"aria-label":t.t("settings","Choose profile picture from Files")},on:{click:t.openFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Folder",{attrs:{size:20}})]},proxy:!0}],null,!1,4270628382)}),t._v(" "),t.isGenerated?t._e():e("NcButton",{attrs:{"aria-label":t.t("settings","Remove profile picture")},on:{click:t.removeAvatar},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)})],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","The file must be a PNG or JPG")))]),t._v(" "),e("input",{ref:"input",attrs:{id:t.inputId,type:"file",accept:t.validMimeTypes.join(",")},on:{change:t.onChange}})]:e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Picture provided by original account"))+"\n\t\t")])],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.showCropper,expression:"showCropper"}],staticClass:"avatar__container"},[e("VueCropper",t._b({ref:"cropper",staticClass:"avatar__cropper"},"VueCropper",t.cropperOptions,!1)),t._v(" "),e("div",{staticClass:"avatar__cropper-buttons"},[e("NcButton",{on:{click:t.cancel}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.saveAvatar}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set as profile picture"))+"\n\t\t\t")])],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","Please note that it can take up to 24 hours for your profile picture to be updated everywhere.")))])],1)],1)}),[],!1,null,"022fd5d4",null).exports;var wt=n(48959),It=n.n(wt),St=n(86158),Pt=n(34046);const{groups:Lt,quota:jt,totalSpace:Bt,usage:kt,usageRelative:Dt}=(0,s.j)("settings","personalInfoParameters",{}),Ot={name:"DetailsSection",components:{Account:St.Z,CircleSlice:Pt.Z,HeaderBar:gt,NcProgressBar:It()},computed:{quotaText:()=>-3===jt?t("settings","You are using <strong>{usage}</strong>",{usage:kt}):t("settings","You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",{usage:kt,totalSpace:Bt,usageRelative:Dt})},data:()=>({groups:Lt,usageRelative:Dt})};var Nt=n(18118),Rt={};Rt.styleTagTransform=R(),Rt.setAttributes=k(),Rt.insert=j().bind(null,"head"),Rt.domAPI=P(),Rt.insertStyleElement=O(),I()(Nt.Z,Rt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;const Tt=(0,M.Z)(Ot,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.t("settings","Details")}}),t._v(" "),e("div",{staticClass:"details"},[e("div",{staticClass:"details__groups"},[e("Account",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__groups-info"},[e("p",[t._v(t._s(t.t("settings","You are a member of the following groups:")))]),t._v(" "),e("p",{staticClass:"details__groups-list"},[t._v(t._s(t.groups.join(", ")))])])],1),t._v(" "),e("div",{staticClass:"details__quota"},[e("CircleSlice",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__quota-info"},[e("p",{staticClass:"details__quota-text",domProps:{innerHTML:t._s(t.quotaText)}}),t._v(" "),e("NcProgressBar",{attrs:{size:"medium",value:t.usageRelative,error:t.usageRelative>80}})],1)],1)])],1)}),[],!1,null,"1ab46e68",null).exports;var Zt=n(20296),Mt=n.n(Zt),Ut=n(94603),Ft=n(31974),zt=n(80419);const Vt={name:"AccountPropertySection",components:{AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,HeaderBar:gt},props:{name:{type:String,required:!0},value:{type:String,required:!0},scope:{type:String,required:!0},readable:{type:String,required:!0},placeholder:{type:String,required:!0},type:{type:String,default:"text"},isEditable:{type:Boolean,default:!0},multiLine:{type:Boolean,default:!1},onValidate:{type:Function,default:null},onSave:{type:Function,default:null},autocomplete:{type:String,default:null}},data(){return{initialValue:this.value,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{inputId(){return"account-property-".concat(this.name)}},methods:{onPropertyChange(t){this.$emit("update:value",t.target.value),this.debouncePropertyChange(t.target.value.trim())},debouncePropertyChange:Mt()((async function(t){this.helperText=null,this.$refs.input&&this.$refs.input.validationMessage?this.helperText=this.$refs.input.validationMessage:this.onValidate&&!this.onValidate(t)||await this.updateProperty(t)}),500),async updateProperty(e){try{var a,n;const t=await nt(this.name,e);this.handleResponse({value:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update {property}",{property:this.readable.toLocaleLowerCase()}),error:e})}},handleResponse(t){let{value:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(this.initialValue=e,this.onSave&&this.onSave(e),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(this.$emit("update:value",this.initialValue),ot(i,n),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))}}};var Ht=n(49237),Gt={};Gt.styleTagTransform=R(),Gt.setAttributes=k(),Gt.insert=j().bind(null,"head"),Gt.domAPI=P(),Gt.insertStyleElement=O(),I()(Ht.Z,Gt),Ht.Z&&Ht.Z.locals&&Ht.Z.locals;const qt=(0,M.Z)(Vt,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{scope:t.scope,readable:t.readable,"input-id":t.inputId,"is-editable":t.isEditable},on:{"update:scope":function(e){t.scope=e},"update:readable":function(e){t.readable=e}}}),t._v(" "),t.isEditable?e("div",{staticClass:"property"},[t.multiLine?e("textarea",{attrs:{id:t.inputId,placeholder:t.placeholder,rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:t.value},on:{input:t.onPropertyChange}}):e("input",{ref:"input",attrs:{id:t.inputId,placeholder:t.placeholder,type:t.type,"aria-describedby":t.helperText?"".concat(t.name,"-helper-text"):"",autocapitalize:"none",autocorrect:"off",autocomplete:t.autocomplete},domProps:{value:t.value},on:{input:t.onPropertyChange}}),t._v(" "),e("div",{staticClass:"property__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1)],1)]):e("span",[t._v("\n\t\t"+t._s(t.value||t.t("settings","No {property} set",{property:t.readable.toLocaleLowerCase()}))+"\n\t")]),t._v(" "),t.helperText?e("p",{staticClass:"property__helper-text-message property__helper-text-message--error",attrs:{id:"".concat(t.name,"-helper-text")}},[e("AlertCircle",{staticClass:"property__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e()],1)}),[],!1,null,"400ac7dc",null).exports,{displayName:Yt}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:$t}=(0,s.j)("settings","accountParameters",{}),Wt={name:"DisplayNameSection",components:{AccountPropertySection:qt},data:()=>({displayName:{...Yt,readable:V[Yt.name]},displayNameChangeSupported:$t}),methods:{onValidate:t=>""!==t,onSave(t){oc_userconfig.avatar.generated&&(oc_userconfig.avatar.version=Date.now()),(0,p.j8)("settings:display-name:updated",t)}}},Kt=(0,M.Z)(Wt,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your full name"),autocomplete:"username","is-editable":t.displayNameChangeSupported,"on-validate":t.onValidate,"on-save":t.onSave}},"AccountPropertySection",t.displayName,!1,!0))}),[],!1,null,null,null).exports;var Qt=n(15961);const Jt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL,value:t})).data},Xt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:t,value:""})).data},te=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:"".concat(F.EMAIL).concat(Q),value:t})).data},ee=async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(F.EMAIL_COLLECTION).concat(Q)});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data};function ae(t){return"string"==typeof t&&et.test(t)&&"\n"!==t.slice(-1)&&t.length<=320&&encodeURIComponent(t).replace(/%../g,"x").length<=320}const ne={name:"Email",components:{NcActions:Qt.O3,NcActionButton:Qt.Js,AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,FederationControl:At},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:tt.NOT_VERIFIED}},data(){return{propertyReadable:z.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:ee,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled(){return!this.primary&&this.localVerificationState!==tt.VERIFIED},setNotificationMailLabel(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===tt.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled(){return!this.initialEmail},inputId(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted(){this.primary||""!==this.initialEmail||this.$nextTick((()=>{var t;return null===(t=this.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange(t){this.$emit("update:email",t.target.value),this.debounceEmailChange(t.target.value.trim())},debounceEmailChange:Mt()((async function(t){var e;this.helperText=null,null!==(e=this.$refs.email)&&void 0!==e&&e.validationMessage?this.helperText=this.$refs.email.validationMessage:(ae(t)||""===t)&&(this.primary?await this.updatePrimaryEmail(t):t&&(""===this.initialEmail?await this.addAdditionalEmail(t):await this.updateAdditionalEmail(t)))}),500),async deleteEmail(){this.primary?(this.$emit("update:email",""),await this.updatePrimaryEmail("")):await this.deleteAdditionalEmail()},async updatePrimaryEmail(e){try{var a,n;const t=await Jt(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(a){""===e?this.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a}):this.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a})}},async addAdditionalEmail(e){try{var a,n;const t=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL_COLLECTION,value:t})).data})(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:e})}},async setNotificationMail(){try{var t,e;const a=this.primary||this.isNotificationEmail?"":this.initialEmail,n=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.NOTIFICATION_EMAIL,value:t})).data})(a);this.handleResponse({notificationEmail:a,status:null===(t=n.ocs)||void 0===t||null===(e=t.meta)||void 0===e?void 0:e.status})}catch(t){this.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t})}},async updateAdditionalEmail(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data})(this.initialEmail,e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:e})}},async deleteAdditionalEmail(){try{var e,a;const t=await Xt(this.initialEmail);this.handleDeleteAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e})}},handleDeleteAdditionalEmail(e){"ok"===e?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse(t){let{email:e,notificationEmail:a,status:n,errorMessage:i,error:o}=t;"ok"===n?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(ot(o,i),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))},onScopeChange(t){this.$emit("update:scope",t)}}},ie=ne;var oe=n(21395),se={};se.styleTagTransform=R(),se.setAttributes=k(),se.insert=j().bind(null,"head"),se.domAPI=P(),se.insertStyleElement=O(),I()(oe.Z,se),oe.Z&&oe.Z.locals&&oe.Z.locals;const re=(0,M.Z)(ie,(function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:t.inputId,type:"email",autocomplete:"email",placeholder:t.inputPlaceholder,"aria-describedby":t.helperText?"".concat(t.inputId,"-helper-text"):"",autocapitalize:"none",autocorrect:"off"},domProps:{value:t.email},on:{input:t.onEmailChange}}),t._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1),t._v(" "),t.primary?t._e():[e("FederationControl",{attrs:{readable:t.propertyReadable,additional:!0,"additional-value":t.email,disabled:t.federationDisabled,"handle-additional-scope-change":t.saveAdditionalEmailScope,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})],t._v(" "),e("NcActions",{staticClass:"email__actions",attrs:{"aria-label":t.t("settings","Email options"),"force-menu":!0}},[e("NcActionButton",{attrs:{"aria-label":t.deleteEmailLabel,"close-after-click":!0,disabled:t.deleteDisabled,icon:"icon-delete"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.deleteEmail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.deleteEmailLabel)+"\n\t\t\t\t")]),t._v(" "),t.primary&&t.isNotificationEmail?t._e():e("NcActionButton",{attrs:{"aria-label":t.setNotificationMailLabel,"close-after-click":!0,disabled:t.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.setNotificationMail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),t._v(" "),t.helperText?e("p",{staticClass:"email__helper-text-message email__helper-text-message--error",attrs:{id:"".concat(t.inputId,"-helper-text")}},[e("AlertCircle",{staticClass:"email__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e(),t._v(" "),t.isNotificationEmail?e("em",[t._v("\n\t\t"+t._s(t.t("settings","Primary email for password reset and notifications"))+"\n\t")]):t._e()])}),[],!1,null,"3b4a1ecf",null).exports,{emailMap:{additionalEmails:le,primaryEmail:de,notificationEmail:ce}}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:pe}=(0,s.j)("settings","accountParameters",{}),Ae={name:"EmailSection",components:{HeaderBar:gt,Email:re},data(){return{accountProperty:z.EMAIL,additionalEmails:le.map((t=>({...t,key:this.generateUniqueKey()}))),displayNameChangeSupported:pe,primaryEmail:{...de,readable:V[de.name]},savePrimaryEmailScope:te,notificationEmail:ce}},computed:{firstAdditionalEmail(){return this.additionalEmails.length?this.additionalEmails[0].value:null},inputId(){return"account-property-".concat(this.primaryEmail.name)},isValidSection(){return ae(this.primaryEmail.value)&&this.additionalEmails.map((t=>{let{value:e}=t;return e})).every(ae)},primaryEmailValue:{get(){return this.primaryEmail.value},set(t){this.primaryEmail.value=t}}},methods:{onAddAdditionalEmail(){this.isValidSection&&this.additionalEmails.push({value:"",scope:X,key:this.generateUniqueKey()})},onDeleteAdditionalEmail(t){this.$delete(this.additionalEmails,t)},async onUpdateEmail(){if(""===this.primaryEmailValue&&this.firstAdditionalEmail){const t=this.firstAdditionalEmail;await this.deleteFirstAdditionalEmail(),this.primaryEmailValue=t,await this.updatePrimaryEmail()}},async onUpdateNotificationEmail(t){this.notificationEmail=t},async updatePrimaryEmail(){try{var e,a;const t=await Jt(this.primaryEmailValue);this.handleResponse(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to update primary email address"),e)}},async deleteFirstAdditionalEmail(){try{var e,a;const t=await Xt(this.firstAdditionalEmail);this.handleDeleteFirstAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to delete additional email address"),e)}},handleDeleteFirstAdditionalEmail(e){"ok"===e?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse(t,e,a){"ok"!==t&&ot(a,e)},generateUniqueKey:()=>Math.random().toString(36).substring(2)}};var ue=n(73070),me={};me.styleTagTransform=R(),me.setAttributes=k(),me.insert=j().bind(null,"head"),me.domAPI=P(),me.insertStyleElement=O(),I()(ue.Z,me),ue.Z&&ue.Z.locals&&ue.Z.locals;const he=(0,M.Z)(Ae,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.primaryEmail.readable,"handle-scope-change":t.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":t.isValidSection,scope:t.primaryEmail.scope},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"add-additional":t.onAddAdditionalEmail}}),t._v(" "),t.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:t.primaryEmail.scope,email:t.primaryEmail.value,"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"update:email":[function(e){return t.$set(t.primaryEmail,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail}})]:e("span",[t._v("\n\t\t"+t._s(t.primaryEmail.value||t.t("settings","No email address set"))+"\n\t")]),t._v(" "),t.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[t._v(t._s(t.t("settings","Additional emails")))]),t._v(" "),t._l(t.additionalEmails,(function(a,n){return e("Email",{key:a.key,attrs:{index:n,scope:a.scope,email:a.value,"local-verification-state":parseInt(a.locallyVerified,10),"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(a,"scope",e)},"update:email":[function(e){return t.$set(a,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail,"delete-additional-email":function(e){return t.onDeleteAdditionalEmail(n)}}})}))]:t._e()],2)}),[],!1,null,"46c7eb7e",null).exports;var ge=n(45004);const{defaultPhoneRegion:ve,phone:Ce}=(0,s.j)("settings","personalInfoParameters",{}),fe={name:"PhoneSection",components:{AccountPropertySection:qt},data:()=>({phone:{...Ce,readable:V[Ce.name]}}),methods:{onValidate:t=>ve?(0,ge.y)(t,ve):(0,ge.y)(t)}},ye=(0,M.Z)(fe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your phone number"),autocomplete:"tel",type:"tel","on-validate":t.onValidate}},"AccountPropertySection",t.phone,!1,!0))}),[],!1,null,null,null).exports,{location:be}=(0,s.j)("settings","personalInfoParameters",{}),xe={name:"LocationSection",components:{AccountPropertySection:qt},data:()=>({location:{...be,readable:V[be.name]}})},Ee=(0,M.Z)(xe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{autocomplete:"address-level1",placeholder:t.t("settings","Your location")}},"AccountPropertySection",t.location,!1,!0))}),[],!1,null,null,null).exports,{website:_e}=(0,s.j)("settings","personalInfoParameters",{}),we={name:"WebsiteSection",components:{AccountPropertySection:qt},data:()=>({website:{..._e,readable:V[_e.name]}}),methods:{onValidate:t=>function(t){try{return new URL(t),!0}catch(t){return!1}}(t)}},Ie=(0,M.Z)(we,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your website"),autocomplete:"url",type:"url","on-validate":t.onValidate}},"AccountPropertySection",t.website,!1,!0))}),[],!1,null,null,null).exports,{twitter:Se}=(0,s.j)("settings","personalInfoParameters",{}),Pe={name:"TwitterSection",components:{AccountPropertySection:qt},data:()=>({twitter:{...Se,readable:V[Se.name]}})},Le=(0,M.Z)(Pe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your Twitter handle")}},"AccountPropertySection",t.twitter,!1,!0))}),[],!1,null,null,null).exports,{fediverse:je}=(0,s.j)("settings","personalInfoParameters",{}),Be={name:"FediverseSection",components:{AccountPropertySection:qt},data:()=>({fediverse:{...je,readable:V[je.name]}})},ke=(0,M.Z)(Be,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your handle")}},"AccountPropertySection",t.fediverse,!1,!0))}),[],!1,null,null,null).exports,De={name:"Language",props:{inputId:{type:String,default:null},commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data(){return{initialLanguage:this.language}},computed:{allLanguages(){return Object.freeze([...this.commonLanguages,...this.otherLanguages].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},methods:{async onLanguageChange(t){const e=this.constructLanguage(t.target.value);var a;this.$emit("update:language",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLanguage(e)},async updateLanguage(e){try{var a,n;const t=await nt(q.LANGUAGE,e.code);this.handleResponse({language:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update language"),error:e})}},constructLanguage(t){return{code:t,name:this.allLanguages[t]}},handleResponse(t){let{language:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLanguage=e:ot(i,n)},reloadPage(){location.reload()}}};var Oe=n(42569),Ne={};Ne.styleTagTransform=R(),Ne.setAttributes=k(),Ne.insert=j().bind(null,"head"),Ne.domAPI=P(),Ne.insertStyleElement=O(),I()(Oe.Z,Ne),Oe.Z&&Oe.Z.locals&&Oe.Z.locals;const Re=(0,M.Z)(De,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"language"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Language")},on:{change:t.onLanguageChange}},[t._l(t.commonLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[t._v(t._s(t.t("settings","Help translate")))])])])}),[],!1,null,"5c847b3a",null).exports,{languageMap:{activeLanguage:Te,commonLanguages:Ze,otherLanguages:Me}}=(0,s.j)("settings","personalInfoParameters",{}),Ue={name:"LanguageSection",components:{Language:Re,HeaderBar:gt},data:()=>({propertyReadable:Y.LANGUAGE,commonLanguages:Ze,otherLanguages:Me,language:Te}),computed:{inputId:()=>"account-setting-".concat(q.LANGUAGE),isEditable(){return Boolean(this.language)}}};var Fe=n(12531),ze={};ze.styleTagTransform=R(),ze.setAttributes=k(),ze.insert=j().bind(null,"head"),ze.domAPI=P(),ze.insertStyleElement=O(),I()(Fe.Z,ze),Fe.Z&&Fe.Z.locals&&Fe.Z.locals;const Ve=(0,M.Z)(Ue,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Language",{attrs:{"input-id":t.inputId,"common-languages":t.commonLanguages,"other-languages":t.otherLanguages,language:t.language},on:{"update:language":function(e){t.language=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"92685b76",null).exports;var He=n(80351),Ge=n.n(He);const qe={name:"Locale",components:{Web:n(97859).default},props:{inputId:{type:String,default:null},locale:{type:Object,required:!0},localesForLanguage:{type:Array,required:!0},otherLocales:{type:Array,required:!0}},data(){return{initialLocale:this.locale,example:{date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}}},computed:{allLocales(){return Object.freeze([...this.localesForLanguage,...this.otherLocales].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},created(){setInterval(this.refreshExample,1e3)},methods:{async onLocaleChange(t){const e=this.constructLocale(t.target.value);var a;this.$emit("update:locale",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLocale(e)},async updateLocale(e){try{var a,n;const t=await nt(q.LOCALE,e.code);this.handleResponse({locale:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update locale"),error:e})}},constructLocale(t){return{code:t,name:this.allLocales[t]}},handleResponse(t){let{locale:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLocale=e:(this.$emit("update:locale",this.initialLocale),ot(i,n))},refreshExample(){this.example={date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}},reloadPage(){location.reload()}}};var Ye=n(87229),$e={};$e.styleTagTransform=R(),$e.setAttributes=k(),$e.insert=j().bind(null,"head"),$e.domAPI=P(),$e.insertStyleElement=O(),I()(Ye.Z,$e),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;const We=(0,M.Z)(qe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"locale"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Locale")},on:{change:t.onLocaleChange}},[t._l(t.localesForLanguage,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLocales,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("div",{staticClass:"example"},[e("Web",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"example__text"},[e("p",[e("span",[t._v(t._s(t.example.date))]),t._v(" "),e("span",[t._v(t._s(t.example.time))])]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("settings","Week starts on {firstDayOfWeek}",{firstDayOfWeek:this.example.firstDayOfWeek}))+"\n\t\t\t")])])],1)])}),[],!1,null,"1ac456dc",null).exports,{localeMap:{activeLocale:Ke,localesForLanguage:Qe,otherLocales:Je}}=(0,s.j)("settings","personalInfoParameters",{}),Xe={name:"LocaleSection",components:{Locale:We,HeaderBar:gt},data:()=>({propertyReadable:Y.LOCALE,localesForLanguage:Qe,otherLocales:Je,locale:Ke}),computed:{inputId:()=>"account-setting-".concat(q.LOCALE),isEditable(){return Boolean(this.locale)}}};var ta=n(682),ea={};ea.styleTagTransform=R(),ea.setAttributes=k(),ea.insert=j().bind(null,"head"),ea.domAPI=P(),ea.insertStyleElement=O(),I()(ta.Z,ea),ta.Z&&ta.Z.locals&&ta.Z.locals;const aa=(0,M.Z)(Xe,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Locale",{attrs:{"input-id":t.inputId,"locales-for-language":t.localesForLanguage,"other-locales":t.otherLocales,locale:t.locale},on:{"update:locale":function(e){t.locale=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No locale set"))+"\n\t")])],2)}),[],!1,null,"84fca724",null).exports,na={name:"EditProfileAnchorLink",components:{ChevronDownIcon:n(41622).default},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled(){return!this.profileEnabled}}};var ia=n(15043),oa={};oa.styleTagTransform=R(),oa.setAttributes=k(),oa.insert=j().bind(null,"head"),oa.domAPI=P(),oa.insertStyleElement=O(),I()(ia.Z,oa),ia.Z&&ia.Z.locals&&ia.Z.locals;var sa=n(9142),ra={};ra.styleTagTransform=R(),ra.setAttributes=k(),ra.insert=j().bind(null,"head"),ra.domAPI=P(),ra.insertStyleElement=O(),I()(sa.Z,ra),sa.Z&&sa.Z.locals&&sa.Z.locals;const la=(0,M.Z)(na,(function(){var t=this,e=t._self._c;return e("a",t._g({class:{disabled:t.disabled},attrs:{href:"#profile-visibility"}},t.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{size:22}}),t._v("\n\t"+t._s(t.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"7539c74a",null).exports;var da=n(20571);const ca={name:"ProfileCheckbox",components:{NcCheckboxRadioSwitch:n.n(da)()},props:{profileEnabled:{type:Boolean,required:!0}},data(){return{isProfileEnabled:this.profileEnabled,loading:!1}},methods:{async saveEnableProfile(){this.loading=!0;try{var e,a;const t=await nt(F.PROFILE_ENABLED,this.isProfileEnabled);this.handleResponse({isProfileEnabled:this.isProfileEnabled,status:null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:e})}},handleResponse(t){let{isProfileEnabled:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(0,p.j8)("settings:profile-enabled:updated",e):ot(i,n),this.loading=!1}}},pa=(0,M.Z)(ca,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"checkbox-container"},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.isProfileEnabled,loading:t.loading},on:{"update:checked":[function(e){t.isProfileEnabled=e},t.saveEnableProfile]}},[t._v("\n\t\t"+t._s(t.t("settings","Enable Profile"))+"\n\t")])],1)}),[],!1,null,null,null).exports,Aa={name:"ProfilePreviewCard",components:{NcAvatar:u()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled(){return!this.profileEnabled},profilePageLink(){return this.profileEnabled?(0,d.generateUrl)("/u/{userId}",{userId:(0,o.ts)().uid}):null}}};var ua=n(5348),ma={};ma.styleTagTransform=R(),ma.setAttributes=k(),ma.insert=j().bind(null,"head"),ma.domAPI=P(),ma.insertStyleElement=O(),I()(ua.Z,ma),ua.Z&&ua.Z.locals&&ua.Z.locals;const ha=(0,M.Z)(Aa,(function(){var t=this,e=t._self._c;return e("a",{staticClass:"preview-card",class:{disabled:t.disabled},attrs:{href:t.profilePageLink}},[e("NcAvatar",{staticClass:"preview-card__avatar",attrs:{user:t.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),t._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[t._v(t._s(t.displayName))])]),t._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[t._v(t._s(t.organisation))])])],1)}),[],!1,null,"05581203",null).exports,{organisation:{value:ga},displayName:{value:va},profileEnabled:Ca,userId:fa}=(0,s.j)("settings","personalInfoParameters",{}),ya={name:"ProfileSection",components:{EditProfileAnchorLink:la,HeaderBar:gt,ProfileCheckbox:pa,ProfilePreviewCard:ha},data:()=>({propertyReadable:z.PROFILE_ENABLED,organisation:ga,displayName:va,profileEnabled:Ca,userId:fa}),mounted(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.Ld)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.r1)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate(t){this.displayName=t},handleOrganisationUpdate(t){this.organisation=t}}},ba=ya;var xa=n(90552),Ea={};Ea.styleTagTransform=R(),Ea.setAttributes=k(),Ea.insert=j().bind(null,"head"),Ea.domAPI=P(),Ea.insertStyleElement=O(),I()(xa.Z,Ea),xa.Z&&xa.Z.locals&&xa.Z.locals;const _a=(0,M.Z)(ba,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{readable:t.propertyReadable}}),t._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":t.profileEnabled},on:{"update:profileEnabled":function(e){t.profileEnabled=e},"update:profile-enabled":function(e){t.profileEnabled=e}}}),t._v(" "),e("ProfilePreviewCard",{attrs:{organisation:t.organisation,"display-name":t.displayName,"profile-enabled":t.profileEnabled,"user-id":t.userId}}),t._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":t.profileEnabled}})],1)}),[],!1,null,"cf64d964",null).exports,{organisation:wa}=(0,s.j)("settings","personalInfoParameters",{}),Ia={name:"OrganisationSection",components:{AccountPropertySection:qt},data:()=>({organisation:{...wa,readable:V[wa.name]}})},Sa=(0,M.Z)(Ia,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{autocomplete:"organization",placeholder:t.t("settings","Your organisation")}},"AccountPropertySection",t.organisation,!1,!0))}),[],!1,null,null,null).exports,{role:Pa}=(0,s.j)("settings","personalInfoParameters",{}),La={name:"RoleSection",components:{AccountPropertySection:qt},data:()=>({role:{...Pa,readable:V[Pa.name]}})},ja=(0,M.Z)(La,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{autocomplete:"organization-title",placeholder:t.t("settings","Your role")}},"AccountPropertySection",t.role,!1,!0))}),[],!1,null,null,null).exports,{headline:Ba}=(0,s.j)("settings","personalInfoParameters",{}),ka={name:"HeadlineSection",components:{AccountPropertySection:qt},data:()=>({headline:{...Ba,readable:V[Ba.name]}})},Da=(0,M.Z)(ka,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your headline")}},"AccountPropertySection",t.headline,!1,!0))}),[],!1,null,null,null).exports,{biography:Oa}=(0,s.j)("settings","personalInfoParameters",{}),Na={name:"BiographySection",components:{AccountPropertySection:qt},data:()=>({biography:{...Oa,readable:V[Oa.name]}})},Ra=(0,M.Z)(Na,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your biography"),"multi-line":!0}},"AccountPropertySection",t.biography,!1,!0))}),[],!1,null,null,null).exports;var Ta=n(36456),Za=n.n(Ta);const Ma=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),Ua=Object.freeze({[Ma.SHOW]:{name:Ma.SHOW,label:t("settings","Show to everyone")},[Ma.SHOW_USERS_ONLY]:{name:Ma.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")},[Ma.HIDE]:{name:Ma.HIDE,label:t("settings","Hide")}}),{profileEnabled:Fa}=(0,s.j)("settings","personalInfoParameters",!1),za={name:"VisibilityDropdown",components:{NcSelect:Za()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data(){return{initialVisibility:this.visibility,profileEnabled:Fa}},computed:{disabled(){return!this.profileEnabled},inputId(){return"profile-visibility-".concat(this.paramId)},visibilityObject(){return Ua[this.visibility]},visibilityOptions:()=>Object.values(Ua)},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{async onVisibilityChange(t){if(null!==t){const{name:e}=t;this.$emit("update:visibility",e),""!==e&&await this.updateVisibility(e)}},async updateVisibility(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("/profile/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{paramId:t,visibility:e})).data})(this.paramId,e);this.handleResponse({visibility:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:this.displayId}),error:e})}},handleResponse(t){let{visibility:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialVisibility=e:ot(i,n)},handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Va=za;var Ha=n(63019),Ga={};Ga.styleTagTransform=R(),Ga.setAttributes=k(),Ga.insert=j().bind(null,"head"),Ga.domAPI=P(),Ga.insertStyleElement=O(),I()(Ha.Z,Ga),Ha.Z&&Ha.Z.locals&&Ha.Z.locals;const qa=(0,M.Z)(Va,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"visibility-container",class:{disabled:t.disabled}},[e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.displayId)+"\n\t")]),t._v(" "),e("NcSelect",{staticClass:"visibility-container__select",attrs:{"input-id":t.inputId,clearable:!1,options:t.visibilityOptions,value:t.visibilityObject},on:{"option:selected":t.onVisibilityChange}})],1)}),[],!1,null,"b13d20da",null).exports,{profileConfig:Ya}=(0,s.j)("settings","profileParameters",{}),{profileEnabled:$a}=(0,s.j)("settings","personalInfoParameters",!1),Wa=(t,e)=>t.appId===e.appId||"core"!==t.appId&&"core"!==e.appId?t.displayId.localeCompare(e.displayId):"core"===t.appId?1:-1,Ka={name:"ProfileVisibilitySection",components:{HeaderBar:gt,VisibilityDropdown:qa},data:()=>({heading:H.PROFILE_VISIBILITY,profileEnabled:$a,visibilityParams:Object.entries(Ya).map((t=>{let[e,{appId:a,displayId:n,visibility:i}]=t;return{id:e,appId:a,displayId:n,visibility:i}})).sort(Wa),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}),computed:{disabled(){return!this.profileEnabled},rows(){return Math.ceil(this.visibilityParams.length/2)}},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=()=>{this.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Qa=Ka;var Ja=n(45386),Xa={};Xa.styleTagTransform=R(),Xa.setAttributes=k(),Xa.insert=j().bind(null,"head"),Xa.domAPI=P(),Xa.insertStyleElement=O(),I()(Ja.Z,Xa),Ja.Z&&Ja.Z.locals&&Ja.Z.locals;const tn=(0,M.Z)(Qa,(function(){var t=this,e=t._self._c;return e("section",{style:{marginLeft:t.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.heading}}),t._v(" "),e("em",{class:{disabled:t.disabled}},[t._v("\n\t\t"+t._s(t.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),t._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat(".concat(t.rows,", 44px)")}},t._l(t.visibilityParams,(function(a){return e("VisibilityDropdown",{key:a.id,attrs:{"param-id":a.id,"display-id":a.displayId,visibility:a.visibility},on:{"update:visibility":function(e){return t.$set(a,"visibility",e)}}})})),1)],1)}),[],!1,null,"a07dbf96",null).exports;n.nc=btoa((0,o.IH)());const en=(0,s.j)("settings","profileEnabledGlobally",!0);i.default.mixin({methods:{t:r.Iu}});const an=i.default.extend(_t),nn=i.default.extend(Tt),on=i.default.extend(Kt),sn=i.default.extend(he),rn=i.default.extend(ye),ln=i.default.extend(Ee),dn=i.default.extend(Ie),cn=i.default.extend(Le),pn=i.default.extend(ke),An=i.default.extend(Ve),un=i.default.extend(aa);if((new an).$mount("#vue-avatar-section"),(new nn).$mount("#vue-details-section"),(new on).$mount("#vue-displayname-section"),(new sn).$mount("#vue-email-section"),(new rn).$mount("#vue-phone-section"),(new ln).$mount("#vue-location-section"),(new dn).$mount("#vue-website-section"),(new cn).$mount("#vue-twitter-section"),(new pn).$mount("#vue-fediverse-section"),(new An).$mount("#vue-language-section"),(new un).$mount("#vue-locale-section"),en){const t=i.default.extend(_a),e=i.default.extend(Sa),a=i.default.extend(ja),n=i.default.extend(Da),o=i.default.extend(Ra),s=i.default.extend(tn);(new t).$mount("#vue-profile-section"),(new e).$mount("#vue-organisation-section"),(new a).$mount("#vue-role-section"),(new n).$mount("#vue-headline-section"),(new o).$mount("#vue-biography-section"),(new s).$mount("#vue-profile-visibility-section")}},31246:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA",sourcesContent:['\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type="file"] {\n\tdisplay: none;\n}\n'],sourceRoot:""}]);const r=s},18118:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA",sourcesContent:["\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},21395:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".email[data-v-3b4a1ecf]{display:grid;align-items:center}.email input[data-v-3b4a1ecf]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-3b4a1ecf]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-3b4a1ecf]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf]:hover,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:focus,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-3b4a1ecf]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-3b4a1ecf]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-3b4a1ecf]{color:var(--color-error)}.fade-enter[data-v-3b4a1ecf],.fade-leave-to[data-v-3b4a1ecf]{opacity:0}.fade-enter-active[data-v-3b4a1ecf]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3b4a1ecf]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]);const r=s},73070:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},42569:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",sourcesContent:["\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]);const r=s},12531:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},87229:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA",sourcesContent:["\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},682:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},15043:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA",sourcesContent:["\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]);const r=s},9142:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"a[data-v-7539c74a]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-7539c74a]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-7539c74a]:hover,a[data-v-7539c74a]:focus,a[data-v-7539c74a]:active{color:var(--color-main-text);background-color:var(--color-background-dark)}a.disabled[data-v-7539c74a]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,mCAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,4BAAA,CACA,6CAAA,CAGD,4BACC,mBAAA",sourcesContent:["\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-text-maxcontrast);\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]);const r=s},5348:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".preview-card[data-v-05581203]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-05581203]:hover,.preview-card[data-v-05581203]:focus,.preview-card[data-v-05581203]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-05581203]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-05581203]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-05581203],.preview-card.disabled[data-v-05581203] *{cursor:default}.preview-card__avatar[data-v-05581203]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-05581203]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-05581203],.preview-card__footer[data-v-05581203]{position:relative;width:auto}.preview-card__header span[data-v-05581203],.preview-card__footer span[data-v-05581203]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-05581203],.preview-card__footer span[data-v-05581203]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-05581203]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary-element);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-05581203]{bottom:0;color:var(--color-primary-element-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-05581203]{height:46px}.preview-card__footer span[data-v-05581203]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,6CAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,uCAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary-element);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},90552:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},45386:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA",sourcesContent:["\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},63019:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA",sourcesContent:["\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]);const r=s},49237:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-400ac7dc]{padding:10px 10px}section[data-v-400ac7dc] button:disabled{cursor:default}section .property[data-v-400ac7dc]{display:grid;align-items:center}section .property textarea[data-v-400ac7dc]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-400ac7dc]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-400ac7dc]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-400ac7dc]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-400ac7dc]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-400ac7dc]{color:var(--color-error)}section .fade-enter[data-v-400ac7dc],section .fade-leave-to[data-v-400ac7dc]{opacity:0}section .fade-enter-active[data-v-400ac7dc]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-400ac7dc]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n"],sourceRoot:""}]);const r=s},14036:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",sourcesContent:["\n.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]);const r=s},30253:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions__btn[data-v-2ef553c8] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-2ef553c8]{background-color:var(--color-primary-element-light) !important;box-shadow:inset 2px 0 var(--color-primary-element) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,8DAAA,CACA,8DAAA",sourcesContent:["\n.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-element-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary-element) !important;\n}\n"],sourceRoot:""}]);const r=s},90564:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA",sourcesContent:["\n.headerbar-label {\n\tfont-weight: normal;\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tgap: 8px;\n\talign-items: center;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 44px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: 0;\n}\n\n.button-vue {\n\tmargin: 0 0 0 auto !important;\n}\n"],sourceRoot:""}]);const r=s},46700:(t,e,a)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=o(t);return a(e)}function o(t){if(!a.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}i.keys=function(){return Object.keys(n)},i.resolve=o,t.exports=i,i.id=46700},8738:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC"},81490:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},n={};function i(t){var e=n[t];if(void 0!==e)return e.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return a[t].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=a,e=[],i.O=(t,a,n,o)=>{if(!a){var s=1/0;for(c=0;c<e.length;c++){a=e[c][0],n=e[c][1],o=e[c][2];for(var r=!0,l=0;l<a.length;l++)(!1&o||s>=o)&&Object.keys(i.O).every((t=>i.O[t](a[l])))?a.splice(l--,1):(r=!1,o<s&&(s=o));if(r){e.splice(c--,1);var d=n();void 0!==d&&(t=d)}}return t}o=o||0;for(var c=e.length;c>0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[a,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var a in e)i.o(e,a)&&!i.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=4418,(()=>{i.b=document.baseURI||self.location.href;var t={4418:0};i.O.j=e=>0===t[e];var e=(e,a)=>{var n,o,s=a[0],r=a[1],l=a[2],d=0;if(s.some((e=>0!==t[e]))){for(n in r)i.o(r,n)&&(i.m[n]=r[n]);if(l)var c=l(i)}for(e&&e(a);d<s.length;d++)o=s[d],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(c)},a=self.webpackChunknextcloud=self.webpackChunknextcloud||[];a.forEach(e.bind(null,0)),a.push=e.bind(null,a.push.bind(a))})(),i.nc=void 0;var o=i.O(void 0,[7874],(()=>i(95766)));o=i.O(o)})(); +//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=ca1932d6d5e3f07fe459
\ No newline at end of file diff --git a/dist/settings-vue-settings-personal-info.js.map b/dist/settings-vue-settings-personal-info.js.map index 311bdd81608..fb9294483f2 100644 --- a/dist/settings-vue-settings-personal-info.js.map +++ b/dist/settings-vue-settings-personal-info.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-personal-info.js?v=fc362aa3275b2d78e74f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?7c57","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?02db","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/utils/handlers.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?b9f2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?d068","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?c843","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?e65f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?a960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5014","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5282","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?08e9","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?e7aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?295f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?3162","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?5c2e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?ac46","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?d38d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?bde5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?3dd6","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?1fbf","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?04df","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?b77b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?8b50","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?d5e3","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?fdc7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?414f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?897b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?4b20","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?7e82","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?8ae2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?e202","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?4a92","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?22ad","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?94ab","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?6762","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?41aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?6463","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?16dc","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?9b6c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?8511","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?1e8d","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?fafb","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?8e0c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?6676","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?253f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?9b34","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?2aa0","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?564e","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?accf","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?3f25","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?5684","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?adaf","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?a7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?49db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?9d73","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?d565","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?a6b2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?7384","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d7f0","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?1509","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?5e5d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?1d28","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"displayName\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</NcActionButton>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=404f7a30&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"404f7a30\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.displayName},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tFEDIVERSE: 'fediverse',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Location'),\n\tAVATAR: t('settings', 'Profile picture'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tFEDIVERSE: t('settings', 'Fediverse (e.g. Mastodon)'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\nexport const NAME_READABLE_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n\tLOCALE: 'locale',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n\tLOCALE: t('settings', 'Locale'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as federation has been disabled for your account, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport logger from '../logger.js'\n\n/**\n * @param {import('axios').AxiosError} error the error\n * @param {string?} message the message to display\n */\nexport const handleError = (error, message) => {\n\tlet fullMessage = ''\n\n\tif (message) {\n\t\tfullMessage += message\n\t}\n\n\tif (error.response?.status === 429) {\n\t\tif (fullMessage) {\n\t\t\tfullMessage += '\\n'\n\t\t}\n\t\tfullMessage += t('settings', 'There were too many requests from your network. Retry later or contact your administrator if this is an error.')\n\t}\n\n\tshowError(fullMessage)\n\tlogger.error(fullMessage || t('Error'), error)\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\"\n\t\t\t:aria-label=\"federationScope.tooltip\" />\n\t</NcActions>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport FederationControlAction from './FederationControlAction.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tACCOUNT_SETTING_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst {\n\tfederationEnabled,\n\tlookupServerUploadEnabled,\n} = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\treadableLowerCase: this.readable.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {property}, current scope is {scope}', { property: this.readableLowerCase, scope: this.scopeDisplayNameLowerCase })\n\t\t},\n\n\t\tscopeDisplayNameLowerCase() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].displayName.toLocaleLowerCase()\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tconst scopes = PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable]\n\n\t\t\tif (UNPUBLISHED_READABLE_PROPERTIES.includes(this.readable)) {\n\t\t\t\treturn scopes\n\t\t\t}\n\n\t\t\tif (federationEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.FEDERATED)\n\t\t\t}\n\n\t\t\tif (lookupServerUploadEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.PUBLISHED)\n\t\t\t}\n\n\t\t\treturn scopes\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.readable], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=4ea07669&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ea07669\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip,\"aria-label\":federationScope.tooltip}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<component :is=\"isHeading ? `h3` : `div`\" class=\"headerbar-label\" :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<span v-if=\"isHeading\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</span>\n\t\t<label v-else :for=\"inputId\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:readable=\"readable\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</component>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Plus from 'vue-material-design-icons/Plus.vue'\n\nimport FederationControl from './FederationControl.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n} from '../../../constants/AccountPropertyConstants.js'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tNcButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHeading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.readable === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn !Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(this.readable) && !Object.values(PROFILE_READABLE_ENUM).includes(this.readable)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.headerbar-label {\n\t\tfont-weight: normal;\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tgap: 8px;\n\t\talign-items: center;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 44px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: 0;\n\t}\n\n\t.button-vue {\n\t\tmargin: 0 0 0 auto !important;\n\t}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=b43fcc0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b43fcc0c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.isHeading ? `h3` : `div`,{tag:\"component\",staticClass:\"headerbar-label\",class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[(_vm.isHeading)?_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]):_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"readable\":_vm.readable,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section id=\"vue-avatar-section\">\n\t\t<h3 class=\"hidden-visually\"> {{ t('settings', 'Your profile information') }} </h3>\n\t\t<HeaderBar :input-id=\"avatarChangeSupported ? inputId : null\"\n\t\t\t:readable=\"avatar.readable\"\n\t\t\t:scope.sync=\"avatar.scope\" />\n\n\t\t<div v-if=\"!showCropper\" class=\"avatar__container\">\n\t\t\t<div class=\"avatar__preview\">\n\t\t\t\t<NcAvatar v-if=\"!loading\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Your profile picture')\"\n\t\t\t\t\t:disabled-menu=\"true\"\n\t\t\t\t\t:disabled-tooltip=\"true\"\n\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:key=\"version\" />\n\t\t\t\t<div v-else class=\"icon-loading\" />\n\t\t\t</div>\n\t\t\t<template v-if=\"avatarChangeSupported\">\n\t\t\t\t<div class=\"avatar__buttons\">\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Upload profile picture')\"\n\t\t\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Choose profile picture from Files')\"\n\t\t\t\t\t\t@click=\"openFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Folder :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton v-if=\"!isGenerated\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Remove profile picture')\"\n\t\t\t\t\t\t@click=\"removeAvatar\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<span>{{ t('settings', 'The file must be a PNG or JPG') }}</span>\n\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t:id=\"inputId\"\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t:accept=\"validMimeTypes.join(',')\"\n\t\t\t\t\t@change=\"onChange\">\n\t\t\t</template>\n\t\t\t<span v-else>\n\t\t\t\t{{ t('settings', 'Picture provided by original account') }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<!-- Use v-show to ensure early cropper ref availability -->\n\t\t<div v-show=\"showCropper\" class=\"avatar__container\">\n\t\t\t<VueCropper ref=\"cropper\"\n\t\t\t\tclass=\"avatar__cropper\"\n\t\t\t\tv-bind=\"cropperOptions\" />\n\t\t\t<div class=\"avatar__cropper-buttons\">\n\t\t\t\t<NcButton @click=\"cancel\">\n\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t@click=\"saveAvatar\">\n\t\t\t\t\t{{ t('settings', 'Set as profile picture') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<span>{{ t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.') }}</span>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport VueCropper from 'vue-cropperjs'\n// eslint-disable-next-line n/no-extraneous-import\nimport 'cropperjs/dist/cropper.css'\n\nimport Upload from 'vue-material-design-icons/Upload.vue'\nimport Folder from 'vue-material-design-icons/Folder.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { avatar } = loadState('settings', 'personalInfoParameters', {})\nconst { avatarChangeSupported } = loadState('settings', 'accountParameters', {})\n\nconst VALID_MIME_TYPES = ['image/png', 'image/jpeg']\n\nconst picker = getFilePickerBuilder(t('settings', 'Choose your profile picture'))\n\t.setMultiSelect(false)\n\t.setMimeTypeFilter(VALID_MIME_TYPES)\n\t.setModal(true)\n\t.setType(1)\n\t.allowDirectories(false)\n\t.build()\n\nexport default {\n\tname: 'AvatarSection',\n\n\tcomponents: {\n\t\tDelete,\n\t\tFolder,\n\t\tHeaderBar,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tUpload,\n\t\tVueCropper,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavatar: { ...avatar, readable: NAME_READABLE_ENUM[avatar.name] },\n\t\t\tavatarChangeSupported,\n\t\t\tshowCropper: false,\n\t\t\tloading: false,\n\t\t\tuserId: getCurrentUser().uid,\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\tisGenerated: oc_userconfig.avatar.generated,\n\t\t\tvalidMimeTypes: VALID_MIME_TYPES,\n\t\t\tcropperOptions: {\n\t\t\t\taspectRatio: 1 / 1,\n\t\t\t\tviewMode: 1,\n\t\t\t\tguides: false,\n\t\t\t\tcenter: false,\n\t\t\t\thighlight: false,\n\t\t\t\tautoCropArea: 1,\n\t\t\t\tminContainerWidth: 300,\n\t\t\t\tminContainerHeight: 300,\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.avatar.name}`\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tonChange(e) {\n\t\t\tthis.loading = true\n\t\t\tconst file = e.target.files[0]\n\t\t\tif (!this.validMimeTypes.includes(file.type)) {\n\t\t\t\tshowError(t('settings', 'Please select a valid png or jpg file'))\n\t\t\t\tthis.cancel()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst reader = new FileReader()\n\t\t\treader.onload = (e) => {\n\t\t\t\tthis.$refs.cropper.replace(e.target.result)\n\t\t\t\tthis.showCropper = true\n\t\t\t}\n\t\t\treader.readAsDataURL(file)\n\t\t},\n\n\t\tasync openFilePicker() {\n\t\t\tconst path = await picker.pick()\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateUrl('/avatar'), { path })\n\t\t\t\tif (data.status === 'success') {\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} else if (data.data === 'notsquare') {\n\t\t\t\t\tconst tempAvatar = generateUrl('/avatar/tmp') + '?requesttoken=' + encodeURIComponent(OC.requestToken) + '#' + Math.floor(Math.random() * 1000)\n\t\t\t\t\tthis.$refs.cropper.replace(tempAvatar)\n\t\t\t\t\tthis.showCropper = true\n\t\t\t\t} else {\n\t\t\t\t\tshowError(data.data.message)\n\t\t\t\t\tthis.cancel()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error setting profile picture'))\n\t\t\t\tthis.cancel()\n\t\t\t}\n\t\t},\n\n\t\tsaveAvatar() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = true\n\n\t\t\tconst canvasData = this.$refs.cropper.getCroppedCanvas()\n\t\t\tconst scaleFactor = canvasData.width > 512 ? 512 / canvasData.width : 1\n\n\t\t\tthis.$refs.cropper.scale(scaleFactor, scaleFactor).getCroppedCanvas().toBlob(async (blob) => {\n\t\t\t\tif (blob === null) {\n\t\t\t\t\tshowError(t('settings', 'Error cropping profile picture'))\n\t\t\t\t\tthis.cancel()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst formData = new FormData()\n\t\t\t\tformData.append('files[]', blob)\n\t\t\t\ttry {\n\t\t\t\t\tawait axios.post(generateUrl('/avatar'), formData)\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} catch (e) {\n\t\t\t\t\tshowError(t('settings', 'Error saving profile picture'))\n\t\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync removeAvatar() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait axios.delete(generateUrl('/avatar'))\n\t\t\t\tthis.handleAvatarUpdate(true)\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error removing profile picture'))\n\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t}\n\t\t},\n\n\t\tcancel() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = false\n\t\t},\n\n\t\thandleAvatarUpdate(isGenerated) {\n\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\tthis.version = oc_userconfig.avatar.version = Date.now()\n\t\t\tthis.isGenerated = oc_userconfig.avatar.generated = isGenerated\n\t\t\tthis.loading = false\n\t\t\temit('settings:avatar:updated', oc_userconfig.avatar.version)\n\t\t},\n\n\t\thandleDisplayNameUpdate() {\n\t\t\tthis.version = oc_userconfig.avatar.version\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AvatarSection.vue?vue&type=template&id=022fd5d4&scoped=true&\"\nimport script from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"022fd5d4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{attrs:{\"id\":\"vue-avatar-section\"}},[_c('h3',{staticClass:\"hidden-visually\"},[_vm._v(\" \"+_vm._s(_vm.t('settings', 'Your profile information'))+\" \")]),_vm._v(\" \"),_c('HeaderBar',{attrs:{\"input-id\":_vm.avatarChangeSupported ? _vm.inputId : null,\"readable\":_vm.avatar.readable,\"scope\":_vm.avatar.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.avatar, \"scope\", $event)}}}),_vm._v(\" \"),(!_vm.showCropper)?_c('div',{staticClass:\"avatar__container\"},[_c('div',{staticClass:\"avatar__preview\"},[(!_vm.loading)?_c('NcAvatar',{key:_vm.version,attrs:{\"user\":_vm.userId,\"aria-label\":_vm.t('settings', 'Your profile picture'),\"disabled-menu\":true,\"disabled-tooltip\":true,\"show-user-status\":false,\"size\":180}}):_c('div',{staticClass:\"icon-loading\"})],1),_vm._v(\" \"),(_vm.avatarChangeSupported)?[_c('div',{staticClass:\"avatar__buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Upload profile picture')},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}],null,false,1329850251)}),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Choose profile picture from Files')},on:{\"click\":_vm.openFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Folder',{attrs:{\"size\":20}})]},proxy:true}],null,false,4270628382)}),_vm._v(\" \"),(!_vm.isGenerated)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Remove profile picture')},on:{\"click\":_vm.removeAvatar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e()],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'The file must be a PNG or JPG')))]),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"type\":\"file\",\"accept\":_vm.validMimeTypes.join(',')},on:{\"change\":_vm.onChange}})]:_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Picture provided by original account'))+\"\\n\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCropper),expression:\"showCropper\"}],staticClass:\"avatar__container\"},[_c('VueCropper',_vm._b({ref:\"cropper\",staticClass:\"avatar__cropper\"},'VueCropper',_vm.cropperOptions,false)),_vm._v(\" \"),_c('div',{staticClass:\"avatar__cropper-buttons\"},[_c('NcButton',{on:{\"click\":_vm.cancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveAvatar}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set as profile picture'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.t('settings', 'Details')}}),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"details__groups\"},[_c('Account',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__groups-info\"},[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'You are a member of the following groups:')))]),_vm._v(\" \"),_c('p',{staticClass:\"details__groups-list\"},[_vm._v(_vm._s(_vm.groups.join(', ')))])])],1),_vm._v(\" \"),_c('div',{staticClass:\"details__quota\"},[_c('CircleSlice',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__quota-info\"},[_c('p',{staticClass:\"details__quota-text\",domProps:{\"innerHTML\":_vm._s(_vm.quotaText)}}),_vm._v(\" \"),_c('NcProgressBar',{attrs:{\"size\":\"medium\",\"value\":_vm.usageRelative,\"error\":_vm.usageRelative > 80}})],1)],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"t('settings', 'Details')\" />\n\n\t\t<div class=\"details\">\n\t\t\t<div class=\"details__groups\">\n\t\t\t\t<Account :size=\"20\" />\n\t\t\t\t<div class=\"details__groups-info\">\n\t\t\t\t\t<p>{{ t('settings', 'You are a member of the following groups:') }}</p>\n\t\t\t\t\t<p class=\"details__groups-list\">{{ groups.join(', ') }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"details__quota\">\n\t\t\t\t<CircleSlice :size=\"20\" />\n\t\t\t\t<div class=\"details__quota-info\">\n\t\t\t\t\t<p class=\"details__quota-text\" v-html=\"quotaText\" />\n\t\t\t\t\t<NcProgressBar size=\"medium\"\n\t\t\t\t\t\t:value=\"usageRelative\"\n\t\t\t\t\t\t:error=\"usageRelative > 80\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport Account from 'vue-material-design-icons/Account.vue'\nimport CircleSlice from 'vue-material-design-icons/CircleSlice3.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\n\n/** SYNC to be kept in sync with `lib/public/Files/FileInfo.php` */\nconst SPACE_UNLIMITED = -3\n\nconst { groups, quota, totalSpace, usage, usageRelative } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'DetailsSection',\n\n\tcomponents: {\n\t\tAccount,\n\t\tCircleSlice,\n\t\tHeaderBar,\n\t\tNcProgressBar,\n\t},\n\n\tcomputed: {\n\t\tquotaText() {\n\t\t\tif (quota === SPACE_UNLIMITED) {\n\t\t\t\treturn t('settings', 'You are using <strong>{usage}</strong>', { usage })\n\t\t\t}\n\t\t\treturn t(\n\t\t\t\t'settings',\n\t\t\t\t'You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)',\n\t\t\t\t{ usage, totalSpace, usageRelative },\n\t\t\t)\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tusageRelative,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DetailsSection.vue?vue&type=template&id=1ab46e68&scoped=true&\"\nimport script from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ab46e68\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your full name'),\"autocomplete\":\"username\",\"is-editable\":_vm.displayNameChangeSupported,\"on-validate\":_vm.onValidate,\"on-save\":_vm.onSave}},'AccountPropertySection',_vm.displayName,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :scope.sync=\"scope\"\n\t\t\t:readable.sync=\"readable\"\n\t\t\t:input-id=\"inputId\"\n\t\t\t:is-editable=\"isEditable\" />\n\n\t\t<div v-if=\"isEditable\" class=\"property\">\n\t\t\t<textarea v-if=\"multiLine\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:value=\"value\"\n\t\t\t\trows=\"8\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onPropertyChange\" />\n\t\t\t<input v-else\n\t\t\t\tref=\"input\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:type=\"type\"\n\t\t\t\t:value=\"value\"\n\t\t\t\t:aria-describedby=\"helperText ? `${name}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t:autocomplete=\"autocomplete\"\n\t\t\t\t@input=\"onPropertyChange\">\n\n\t\t\t<div class=\"property__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t</div>\n\t\t<span v-else>\n\t\t\t{{ value || t('settings', 'No {property} set', { property: readable.toLocaleLowerCase() }) }}\n\t\t</span>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${name}-helper-text`\"\n\t\t\tclass=\"property__helper-text-message property__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"property__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\t</section>\n</template>\n\n<script>\nimport debounce from 'debounce'\n\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'AccountPropertySection',\n\n\tcomponents: {\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tHeaderBar,\n\t},\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'text',\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmultiLine: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tonValidate: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tonSave: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tautocomplete: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialValue: this.value,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonPropertyChange(e) {\n\t\t\tthis.$emit('update:value', e.target.value)\n\t\t\tthis.debouncePropertyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebouncePropertyChange: debounce(async function(value) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.input && this.$refs.input.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.input.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (this.onValidate && !this.onValidate(value)) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tawait this.updateProperty(value)\n\t\t}, 500),\n\n\t\tasync updateProperty(value) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(\n\t\t\t\t\tthis.name,\n\t\t\t\t\tvalue,\n\t\t\t\t)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvalue,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update {property}', { property: this.readable.toLocaleLowerCase() }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ value, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialValue = value\n\t\t\t\tif (this.onSave) {\n\t\t\t\t\tthis.onSave(value)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:value', this.initialValue)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountPropertySection.vue?vue&type=template&id=400ac7dc&scoped=true&\"\nimport script from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"400ac7dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"scope\":_vm.scope,\"readable\":_vm.readable,\"input-id\":_vm.inputId,\"is-editable\":_vm.isEditable},on:{\"update:scope\":function($event){_vm.scope=$event},\"update:readable\":function($event){_vm.readable=$event}}}),_vm._v(\" \"),(_vm.isEditable)?_c('div',{staticClass:\"property\"},[(_vm.multiLine)?_c('textarea',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}):_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"aria-describedby\":_vm.helperText ? `${_vm.name}-helper-text` : '',\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"autocomplete\":_vm.autocomplete},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"property__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1)],1)]):_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.value || _vm.t('settings', 'No {property} set', { property: _vm.readable.toLocaleLowerCase() }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"property__helper-text-message property__helper-text-message--error\",attrs:{\"id\":`${_vm.name}-helper-text`}},[_c('AlertCircle',{staticClass:\"property__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"displayName\"\n\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\tautocomplete=\"username\"\n\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t:on-validate=\"onValidate\"\n\t\t:on-save=\"onSave\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { emit } from '@nextcloud/event-bus'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { displayName } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: { ...displayName, readable: NAME_READABLE_ENUM[displayName.name] },\n\t\t\tdisplayNameChangeSupported,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn value !== ''\n\t\t},\n\n\t\tonSave(value) {\n\t\t\tif (oc_userconfig.avatar.generated) {\n\t\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\t\toc_userconfig.avatar.version = Date.now()\n\t\t\t}\n\t\t\temit('settings:display-name:updated', value)\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=68751703&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.primaryEmail.readable,\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:additionalEmail.key,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the URL input\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateUrl(input) {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew URL(input)\n\t\treturn true\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate the locale input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLocale(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\tautocomplete=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\t:aria-describedby=\"helperText ? `${inputId}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :readable=\"propertyReadable\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<NcActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${inputId}-helper-text`\"\n\t\t\tclass=\"email__helper-text-message email__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"email__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport { NcActions, NcActionButton } from '@nextcloud/vue'\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl.vue'\nimport { handleError } from '../../../utils/handlers.js'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.email?.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.email.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=3b4a1ecf&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b4a1ecf\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"autocomplete\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"aria-describedby\":_vm.helperText ? `${_vm.inputId}-helper-text` : '',\"autocapitalize\":\"none\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"readable\":_vm.propertyReadable,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"force-menu\":true}},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('NcActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"email__helper-text-message email__helper-text-message--error\",attrs:{\"id\":`${_vm.inputId}-helper-text`}},[_c('AlertCircle',{staticClass:\"email__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e(),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"primaryEmail.readable\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<!-- TODO use unique key for additional email when uniqueness can be guaranteed, see https://github.com/nextcloud/server/issues/26866 -->\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"additionalEmail.key\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Email from './Email.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE, NAME_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })),\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail: { ...primaryEmail, readable: NAME_READABLE_ENUM[primaryEmail.name] },\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `account-property-${this.primaryEmail.name}`\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE, key: this.generateUniqueKey() })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\tgenerateUniqueKey() {\n\t\t\treturn Math.random().toString(36).substring(2)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=46c7eb7e&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46c7eb7e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your phone number'),\"autocomplete\":\"tel\",\"type\":\"tel\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.phone,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"phone\"\n\t\t:placeholder=\"t('settings', 'Your phone number')\"\n\t\tautocomplete=\"tel\"\n\t\ttype=\"tel\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { isValidPhoneNumber } from 'libphonenumber-js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst {\n\tdefaultPhoneRegion,\n\tphone,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'PhoneSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tphone: { ...phone, readable: NAME_READABLE_ENUM[phone.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\tif (defaultPhoneRegion) {\n\t\t\t\treturn isValidPhoneNumber(value, defaultPhoneRegion)\n\t\t\t}\n\t\t\treturn isValidPhoneNumber(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PhoneSection.vue?vue&type=template&id=6f2678bb&\"\nimport script from \"./PhoneSection.vue?vue&type=script&lang=js&\"\nexport * from \"./PhoneSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"location\"\n\t\tautocomplete=\"address-level1\"\n\t\t:placeholder=\"t('settings', 'Your location')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { location } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocation: { ...location, readable: NAME_READABLE_ENUM[location.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LocationSection.vue?vue&type=template&id=232d7eac&\"\nimport script from \"./LocationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"autocomplete\":\"address-level1\",\"placeholder\":_vm.t('settings', 'Your location')}},'AccountPropertySection',_vm.location,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"website\"\n\t\t:placeholder=\"t('settings', 'Your website')\"\n\t\tautocomplete=\"url\"\n\t\ttype=\"url\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\nimport { validateUrl } from '../../utils/validate.js'\n\nconst { website } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'WebsiteSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\twebsite: { ...website, readable: NAME_READABLE_ENUM[website.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn validateUrl(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WebsiteSection.vue?vue&type=template&id=271dd4ba&\"\nimport script from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\nexport * from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your website'),\"autocomplete\":\"url\",\"type\":\"url\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.website,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"twitter\"\n\t\t:placeholder=\"t('settings', 'Your Twitter handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { twitter } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'TwitterSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttwitter: { ...twitter, readable: NAME_READABLE_ENUM[twitter.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TwitterSection.vue?vue&type=template&id=203feaef&\"\nimport script from \"./TwitterSection.vue?vue&type=script&lang=js&\"\nexport * from \"./TwitterSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your Twitter handle')}},'AccountPropertySection',_vm.twitter,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"fediverse\"\n\t\t:placeholder=\"t('settings', 'Your handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { fediverse } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'FediverseSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfediverse: { ...fediverse, readable: NAME_READABLE_ENUM[fediverse.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FediverseSection.vue?vue&type=template&id=78433a38&\"\nimport script from \"./FediverseSection.vue?vue&type=script&lang=js&\"\nexport * from \"./FediverseSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your handle')}},'AccountPropertySection',_vm.fediverse,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLanguage } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5c847b3a&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c847b3a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"language\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :input-id=\"inputId\"\n\t\t\t\t:common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=92685b76&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"92685b76\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"input-id\":_vm.inputId,\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Locale',{attrs:{\"input-id\":_vm.inputId,\"locales-for-language\":_vm.localesForLanguage,\"other-locales\":_vm.otherLocales,\"locale\":_vm.locale},on:{\"update:locale\":function($event){_vm.locale=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No locale set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"locale\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Locale')\"\n\t\t\t@change=\"onLocaleChange\">\n\t\t\t<option v-for=\"currentLocale in localesForLanguage\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"currentLocale in otherLocales\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<div class=\"example\">\n\t\t\t<Web :size=\"20\" />\n\t\t\t<div class=\"example__text\">\n\t\t\t\t<p>\n\t\t\t\t\t<span>{{ example.date }}</span>\n\t\t\t\t\t<span>{{ example.time }}</span>\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }) }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\nimport Web from 'vue-material-design-icons/Web.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLocale } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Locale',\n\n\tcomponents: {\n\t\tWeb,\n\t},\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tlocale: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tlocalesForLanguage: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLocales: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLocale: this.locale,\n\t\t\texample: {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLocales() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.localesForLanguage, ...this.otherLocales]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsetInterval(this.refreshExample, 1000)\n\t},\n\n\tmethods: {\n\t\tasync onLocaleChange(e) {\n\t\t\tconst locale = this.constructLocale(e.target.value)\n\t\t\tthis.$emit('update:locale', locale)\n\n\t\t\tif (validateLocale(locale)) {\n\t\t\t\tawait this.updateLocale(locale)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLocale(locale) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE, locale.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlocale,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update locale'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLocale(localeCode) {\n\t\t\treturn {\n\t\t\t\tcode: localeCode,\n\t\t\t\tname: this.allLocales[localeCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ locale, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialLocale = locale\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:locale', this.initialLocale)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\trefreshExample() {\n\t\t\tthis.example = {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Locale.vue?vue&type=template&id=1ac456dc&scoped=true&\"\nimport script from \"./Locale.vue?vue&type=script&lang=js&\"\nexport * from \"./Locale.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ac456dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"locale\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Locale')},on:{\"change\":_vm.onLocaleChange}},[_vm._l((_vm.localesForLanguage),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLocales),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('div',{staticClass:\"example\"},[_c('Web',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"example__text\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.example.date))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.example.time))])]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }))+\"\\n\\t\\t\\t\")])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Locale :input-id=\"inputId\"\n\t\t\t\t:locales-for-language=\"localesForLanguage\"\n\t\t\t\t:other-locales=\"otherLocales\"\n\t\t\t\t:locale.sync=\"locale\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No locale set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Locale from './Locale.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { localeMap: { activeLocale, localesForLanguage, otherLocales } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocaleSection',\n\n\tcomponents: {\n\t\tLocale,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LOCALE,\n\t\t\tlocalesForLanguage,\n\t\t\totherLocales,\n\t\t\tlocale: activeLocale,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.locale)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LocaleSection.vue?vue&type=template&id=84fca724&scoped=true&\"\nimport script from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"84fca724\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown.vue'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-text-maxcontrast);\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=7539c74a&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7539c74a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkbox-container\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.isProfileEnabled,\"loading\":_vm.loading},on:{\"update:checked\":[function($event){_vm.isProfileEnabled=$event},_vm.saveEnableProfile]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"isProfileEnabled\"\n\t\t\t:loading=\"loading\"\n\t\t\t@update:checked=\"saveEnableProfile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisProfileEnabled: this.profileEnabled,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync saveEnableProfile() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, this.isProfileEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisProfileEnabled: this.isProfileEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isProfileEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\temit('settings:profile-enabled:updated', isProfileEnabled)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=061ac04c&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<NcAvatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=61586aa5&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61586aa5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('NcAvatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :readable=\"propertyReadable\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport ProfileCheckbox from './ProfileCheckbox.vue'\nimport ProfilePreviewCard from './ProfilePreviewCard.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst {\n\torganisation: { value: organisation },\n\tdisplayName: { value: displayName },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=cf64d964&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf64d964\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"organisation\"\n\t\tautocomplete=\"organization\"\n\t\t:placeholder=\"t('settings', 'Your organisation')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { organisation } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\torganisation: { ...organisation, readable: NAME_READABLE_ENUM[organisation.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=0d2e4355&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"autocomplete\":\"organization\",\"placeholder\":_vm.t('settings', 'Your organisation')}},'AccountPropertySection',_vm.organisation,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"role\"\n\t\tautocomplete=\"organization-title\"\n\t\t:placeholder=\"t('settings', 'Your role')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { role } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\trole: { ...role, readable: NAME_READABLE_ENUM[role.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=47d32f32&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"autocomplete\":\"organization-title\",\"placeholder\":_vm.t('settings', 'Your role')}},'AccountPropertySection',_vm.role,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"headline\"\n\t\t:placeholder=\"t('settings', 'Your headline')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { headline } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theadline: { ...headline, readable: NAME_READABLE_ENUM[headline.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=0f3859ee&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your headline')}},'AccountPropertySection',_vm.headline,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"biography\"\n\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t:multi-line=\"true\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { biography } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tbiography: { ...biography, readable: NAME_READABLE_ENUM[biography.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=a916ca60&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your biography'),\"multi-line\":true}},'AccountPropertySection',_vm.biography,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: `repeat(${_vm.rows}, 44px)`,\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ displayId }}\n\t\t</label>\n\t\t<NcSelect :input-id=\"inputId\"\n\t\t\tclass=\"visibility-container__select\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@option:selected=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService.js'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (visibility !== '') {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=b13d20da&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b13d20da\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.displayId)+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"visibility-container__select\",attrs:{\"input-id\":_vm.inputId,\"clearable\":false,\"options\":_vm.visibilityOptions,\"value\":_vm.visibilityObject},on:{\"option:selected\":_vm.onVisibilityChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport VisibilityDropdown from './VisibilityDropdown.vue'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=a07dbf96&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a07dbf96\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/dist/index.css'\n\nimport AvatarSection from './components/PersonalInfo/AvatarSection.vue'\nimport DetailsSection from './components/PersonalInfo/DetailsSection.vue'\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection.vue'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection.vue'\nimport PhoneSection from './components/PersonalInfo/PhoneSection.vue'\nimport LocationSection from './components/PersonalInfo/LocationSection.vue'\nimport WebsiteSection from './components/PersonalInfo/WebsiteSection.vue'\nimport TwitterSection from './components/PersonalInfo/TwitterSection.vue'\nimport FediverseSection from './components/PersonalInfo/FediverseSection.vue'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection.vue'\nimport LocaleSection from './components/PersonalInfo/LocaleSection/LocaleSection.vue'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection.vue'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection.vue'\nimport RoleSection from './components/PersonalInfo/RoleSection.vue'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection.vue'\nimport BiographySection from './components/PersonalInfo/BiographySection.vue'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst AvatarView = Vue.extend(AvatarSection)\nconst DetailsView = Vue.extend(DetailsSection)\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst PhoneView = Vue.extend(PhoneSection)\nconst LocationView = Vue.extend(LocationSection)\nconst WebsiteView = Vue.extend(WebsiteSection)\nconst TwitterView = Vue.extend(TwitterSection)\nconst FediverseView = Vue.extend(FediverseSection)\nconst LanguageView = Vue.extend(LanguageSection)\nconst LocaleView = Vue.extend(LocaleSection)\n\nnew AvatarView().$mount('#vue-avatar-section')\nnew DetailsView().$mount('#vue-details-section')\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew PhoneView().$mount('#vue-phone-section')\nnew LocationView().$mount('#vue-location-section')\nnew WebsiteView().$mount('#vue-website-section')\nnew TwitterView().$mount('#vue-twitter-section')\nnew FediverseView().$mount('#vue-fediverse-section')\nnew LanguageView().$mount('#vue-language-section')\nnew LocaleView().$mount('#vue-locale-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tgrid-row: 1/3;\\n}\\n.avatar {\\n\\t&__container {\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: 300px;\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 180px;\\n\\t\\theight: 180px;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\t}\\n\\n\\t&__cropper {\\n\\t\\twidth: 300px;\\n\\t\\theight: 300px;\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&-buttons {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .cropper-view-box {\\n\\t\\t\\tborder-radius: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.details {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin: 10px 32px 10px 0;\\n\\tgap: 16px 0;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&__groups,\\n\\t&__quota {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\n\\t\\t&-info {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tgap: 4px 0;\\n\\t\\t}\\n\\n\\t\\t&-list {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .material-design-icon {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tmargin-top: 2px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".email[data-v-3b4a1ecf]{display:grid;align-items:center}.email input[data-v-3b4a1ecf]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-3b4a1ecf]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-3b4a1ecf]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf]:hover,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:focus,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-3b4a1ecf]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-3b4a1ecf]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-3b4a1ecf]{color:var(--color-error)}.fade-enter[data-v-3b4a1ecf],.fade-leave-to[data-v-3b4a1ecf]{opacity:0}.fade-enter-active[data-v-3b4a1ecf]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3b4a1ecf]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.locale {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.example {\\n\\tmargin: 10px 0;\\n\\tdisplay: flex;\\n\\tgap: 0 10px;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&::v-deep .material-design-icon {\\n\\t\\talign-self: flex-start;\\n\\t\\tmargin-top: 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA\",\"sourcesContent\":[\"\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"a[data-v-7539c74a]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-7539c74a]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-7539c74a]:hover,a[data-v-7539c74a]:focus,a[data-v-7539c74a]:active{color:var(--color-main-text);background-color:var(--color-background-dark)}a.disabled[data-v-7539c74a]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,mCAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,4BAAA,CACA,6CAAA,CAGD,4BACC,mBAAA\",\"sourcesContent\":[\"\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".preview-card[data-v-61586aa5]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:hover,.preview-card[data-v-61586aa5]:focus,.preview-card[data-v-61586aa5]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-61586aa5]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-61586aa5],.preview-card.disabled[data-v-61586aa5] *{cursor:default}.preview-card__avatar[data-v-61586aa5]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-61586aa5]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-61586aa5],.preview-card__footer[data-v-61586aa5]{position:relative;width:auto}.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-61586aa5]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-61586aa5]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-61586aa5]{height:46px}.preview-card__footer span[data-v-61586aa5]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,qCAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\t\\tbackground-color: var(--color-primary);\\n\\t\\tbackground-image: var(--gradient-primary-background);\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 900px;\\n\\twidth: 100%;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 270px;\\n\\t\\tmax-width: 40vw;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-400ac7dc]{padding:10px 10px}section[data-v-400ac7dc] button:disabled{cursor:default}section .property[data-v-400ac7dc]{display:grid;align-items:center}section .property textarea[data-v-400ac7dc]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-400ac7dc]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-400ac7dc]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-400ac7dc]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-400ac7dc]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-400ac7dc]{color:var(--color-error)}section .fade-enter[data-v-400ac7dc],section .fade-leave-to[data-v-400ac7dc]{opacity:0}section .fade-enter-active[data-v-400ac7dc]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-400ac7dc]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.property {\\n\\t\\tdisplay: grid;\\n\\t\\talign-items: center;\\n\\n\\t\\ttextarea {\\n\\t\\t\\tresize: vertical;\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\tinput {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t.property__actions-container {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\tjustify-self: flex-end;\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\theight: 30px;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 0 2px;\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\tmargin-bottom: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t.property__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n\\n\\t.fade-enter,\\n\\t.fade-leave-to {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t.fade-enter-active {\\n\\t\\ttransition: opacity 200ms ease-out;\\n\\t}\\n\\n\\t.fade-leave-active {\\n\\t\\ttransition: opacity 300ms ease-out;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"sourcesContent\":[\"\\n.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions__btn[data-v-404f7a30] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-404f7a30]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA\",\"sourcesContent\":[\"\\n.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA\",\"sourcesContent\":[\"\\n.headerbar-label {\\n\\tfont-weight: normal;\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tgap: 8px;\\n\\talign-items: center;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: 0;\\n}\\n\\n.button-vue {\\n\\tmargin: 0 0 0 auto !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4418;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4418: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(82170)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","name","components","NcActionButton","props","activeScope","type","String","required","displayName","handleScopeChange","Function","default","iconClass","isSupportedScope","Boolean","tooltipDisabled","tooltip","methods","updateScope","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","class","attrs","on","$event","stopPropagation","preventDefault","apply","arguments","_v","_s","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","FEDIVERSE","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","NAME_READABLE_ENUM","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","LOCALE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","async","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","data","getLoggerBuilder","setApp","detectUser","build","handleError","error","message","_error$response","fullMessage","response","status","showError","logger","federationEnabled","lookupServerUploadEnabled","loadState","NcActions","FederationControlAction","readable","validator","values","includes","additional","additionalValue","disabled","handleAdditionalScopeChange","scope","readableLowerCase","toLocaleLowerCase","initialScope","computed","ariaLabel","property","scopeDisplayNameLowerCase","scopeIcon","federationScopes","supportedScopes","scopes","push","$emit","updateAdditionalScope","updatePrimaryScope","_responseData$ocs","_responseData$ocs$met","responseData","concat","savePrimaryAccountPropertyScope","handleResponse","ocs","meta","e","errorMessage","_responseData$ocs2","_responseData$ocs2$me","_ref","_l","federationScope","changeScope","FederationControl","NcButton","Plus","inputId","isEditable","isMultiValueSupported","isValidSection","isHeading","localScope","isProfileProperty","isSettingProperty","onAddAdditional","onScopeChange","tag","_e","scopedSlots","_u","fn","proxy","avatar","avatarChangeSupported","VALID_MIME_TYPES","picker","getFilePickerBuilder","setMultiSelect","setMimeTypeFilter","setModal","setType","allowDirectories","Delete","Folder","HeaderBar","NcAvatar","Upload","VueCropper","showCropper","loading","version","oc_userconfig","isGenerated","generated","validMimeTypes","cropperOptions","aspectRatio","viewMode","guides","center","highlight","autoCropArea","minContainerWidth","minContainerHeight","created","subscribe","handleDisplayNameUpdate","beforeDestroy","unsubscribe","activateLocalFilePicker","$refs","input","click","onChange","file","target","files","cancel","reader","FileReader","onload","cropper","replace","result","readAsDataURL","path","pick","generateUrl","handleAvatarUpdate","tempAvatar","encodeURIComponent","OC","requestToken","Math","floor","random","saveAvatar","canvasData","getCroppedCanvas","scaleFactor","width","scale","toBlob","blob","formData","FormData","append","Date","now","emit","$set","openFilePicker","removeAvatar","ref","join","directives","rawName","expression","_b","groups","quota","totalSpace","usage","usageRelative","Account","CircleSlice","NcProgressBar","quotaText","domProps","AlertCircle","AlertOctagon","Check","placeholder","multiLine","onValidate","onSave","autocomplete","initialValue","helperText","showCheckmarkIcon","showErrorIcon","onPropertyChange","debouncePropertyChange","trim","debounce","validationMessage","updateProperty","setTimeout","displayNameChangeSupported","AccountPropertySection","savePrimaryEmail","email","removeAdditionalEmail","collection","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","validateEmail","test","slice","length","index","Number","primary","activeNotificationEmail","localVerificationState","propertyReadable","initialEmail","deleteDisabled","deleteEmailLabel","setNotificationMailDisabled","setNotificationMailLabel","isNotificationEmail","federationDisabled","inputPlaceholder","mounted","$nextTick","_this$$refs$email","focus","onEmailChange","debounceEmailChange","_this$$refs$email2","updatePrimaryEmail","addAdditionalEmail","updateAdditionalEmail","deleteAdditionalEmail","saveAdditionalEmail","_responseData$ocs3","_responseData$ocs3$me","newNotificationMailValue","saveNotificationEmail","notificationEmail","_responseData$ocs4","_responseData$ocs4$me","prevEmail","newEmail","_responseData$ocs5","_responseData$ocs5$me","handleDeleteAdditionalEmail","undefined","deleteEmail","setNotificationMail","emailMap","additionalEmails","primaryEmail","Email","map","properties","generateUniqueKey","firstAdditionalEmail","every","primaryEmailValue","get","set","onAddAdditionalEmail","onDeleteAdditionalEmail","$delete","deletedEmail","deleteFirstAdditionalEmail","handleDeleteFirstAdditionalEmail","toString","substring","onUpdateEmail","onUpdateNotificationEmail","additionalEmail","parseInt","locallyVerified","defaultPhoneRegion","phone","isValidPhoneNumber","location","website","URL","validateUrl","twitter","fediverse","commonLanguages","Array","otherLanguages","language","initialLanguage","allLanguages","reduce","acc","code","constructLanguage","updateLanguage","reloadPage","languageCode","_ref2","reload","onLanguageChange","commonLanguage","otherLanguage","languageMap","activeLanguage","Language","Web","locale","localesForLanguage","otherLocales","initialLocale","example","date","moment","format","time","firstDayOfWeek","window","dayNames","firstDay","allLocales","setInterval","refreshExample","constructLocale","updateLocale","localeCode","onLocaleChange","currentLocale","localeMap","activeLocale","Locale","ChevronDownIcon","profileEnabled","_g","$listeners","NcCheckboxRadioSwitch","isProfileEnabled","saveEnableProfile","organisation","profilePageLink","EditProfileAnchorLink","ProfileCheckbox","ProfilePreviewCard","handleOrganisationUpdate","role","headline","biography","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","NcSelect","paramId","displayId","visibility","initialVisibility","visibilityObject","visibilityOptions","handleProfileEnabledUpdate","updateVisibility","saveProfileParameterVisibility","onVisibilityChange","profileConfig","compareParams","a","b","appId","localeCompare","VisibilityDropdown","heading","visibilityParams","entries","id","sort","marginLeft","matchMedia","matches","getComputedStyle","document","getElementById","getPropertyValue","rows","ceil","onresize","style","gridTemplateRows","param","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","Vue","AvatarView","AvatarSection","DetailsView","DetailsSection","DisplayNameView","DisplayNameSection","EmailView","EmailSection","PhoneView","PhoneSection","LocationView","LocationSection","WebsiteView","WebsiteSection","TwitterView","TwitterSection","FediverseView","FediverseSection","LanguageView","LanguageSection","LocaleView","LocaleSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","splice","r","n","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-vue-settings-personal-info.js?v=ca1932d6d5e3f07fe459","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?fdfe","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?02db","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/utils/handlers.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?b9f2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?d068","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?c843","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?e65f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?a960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5014","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5282","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?08e9","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?e7aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?295f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?3162","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?5c2e","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?ac46","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?d38d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?bde5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?3dd6","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?1fbf","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?04df","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?b77b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?8b50","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?d5e3","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?fdc7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?414f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?897b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?4b20","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?7e82","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?8ae2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?e202","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?4a92","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?22ad","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?94ab","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?6762","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?41aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?6463","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?16dc","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?9b6c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?8511","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?1e8d","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?fafb","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?8e0c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?6676","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?253f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?9b34","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?a786","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?564e","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?accf","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?3f25","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?5684","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?adaf","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?a7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?49db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?9d73","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?d565","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?a6b2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?7384","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d7f0","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?1509","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?5e5d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?1d28","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=05581203&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=2ef553c8&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"displayName\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</NcActionButton>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-element-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary-element) !important;\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=2ef553c8&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=2ef553c8&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=2ef553c8&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=2ef553c8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ef553c8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.displayName},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tFEDIVERSE: 'fediverse',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Location'),\n\tAVATAR: t('settings', 'Profile picture'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tFEDIVERSE: t('settings', 'Fediverse (e.g. Mastodon)'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\nexport const NAME_READABLE_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n\tLOCALE: 'locale',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n\tLOCALE: t('settings', 'Locale'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as federation has been disabled for your account, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport logger from '../logger.js'\n\n/**\n * @param {import('axios').AxiosError} error the error\n * @param {string?} message the message to display\n */\nexport const handleError = (error, message) => {\n\tlet fullMessage = ''\n\n\tif (message) {\n\t\tfullMessage += message\n\t}\n\n\tif (error.response?.status === 429) {\n\t\tif (fullMessage) {\n\t\t\tfullMessage += '\\n'\n\t\t}\n\t\tfullMessage += t('settings', 'There were too many requests from your network. Retry later or contact your administrator if this is an error.')\n\t}\n\n\tshowError(fullMessage)\n\tlogger.error(fullMessage || t('Error'), error)\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\"\n\t\t\t:aria-label=\"federationScope.tooltip\" />\n\t</NcActions>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport FederationControlAction from './FederationControlAction.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tACCOUNT_SETTING_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst {\n\tfederationEnabled,\n\tlookupServerUploadEnabled,\n} = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\treadableLowerCase: this.readable.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {property}, current scope is {scope}', { property: this.readableLowerCase, scope: this.scopeDisplayNameLowerCase })\n\t\t},\n\n\t\tscopeDisplayNameLowerCase() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].displayName.toLocaleLowerCase()\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tconst scopes = PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable]\n\n\t\t\tif (UNPUBLISHED_READABLE_PROPERTIES.includes(this.readable)) {\n\t\t\t\treturn scopes\n\t\t\t}\n\n\t\t\tif (federationEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.FEDERATED)\n\t\t\t}\n\n\t\t\tif (lookupServerUploadEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.PUBLISHED)\n\t\t\t}\n\n\t\t\treturn scopes\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.readable], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=4ea07669&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ea07669\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip,\"aria-label\":federationScope.tooltip}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<component :is=\"isHeading ? `h3` : `div`\" class=\"headerbar-label\" :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<span v-if=\"isHeading\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</span>\n\t\t<label v-else :for=\"inputId\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:readable=\"readable\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</component>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Plus from 'vue-material-design-icons/Plus.vue'\n\nimport FederationControl from './FederationControl.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n} from '../../../constants/AccountPropertyConstants.js'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tNcButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHeading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.readable === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn !Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(this.readable) && !Object.values(PROFILE_READABLE_ENUM).includes(this.readable)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.headerbar-label {\n\t\tfont-weight: normal;\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tgap: 8px;\n\t\talign-items: center;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 44px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: 0;\n\t}\n\n\t.button-vue {\n\t\tmargin: 0 0 0 auto !important;\n\t}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=b43fcc0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b43fcc0c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.isHeading ? `h3` : `div`,{tag:\"component\",staticClass:\"headerbar-label\",class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[(_vm.isHeading)?_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]):_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"readable\":_vm.readable,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section id=\"vue-avatar-section\">\n\t\t<h3 class=\"hidden-visually\"> {{ t('settings', 'Your profile information') }} </h3>\n\t\t<HeaderBar :input-id=\"avatarChangeSupported ? inputId : null\"\n\t\t\t:readable=\"avatar.readable\"\n\t\t\t:scope.sync=\"avatar.scope\" />\n\n\t\t<div v-if=\"!showCropper\" class=\"avatar__container\">\n\t\t\t<div class=\"avatar__preview\">\n\t\t\t\t<NcAvatar v-if=\"!loading\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Your profile picture')\"\n\t\t\t\t\t:disabled-menu=\"true\"\n\t\t\t\t\t:disabled-tooltip=\"true\"\n\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:key=\"version\" />\n\t\t\t\t<div v-else class=\"icon-loading\" />\n\t\t\t</div>\n\t\t\t<template v-if=\"avatarChangeSupported\">\n\t\t\t\t<div class=\"avatar__buttons\">\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Upload profile picture')\"\n\t\t\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Choose profile picture from Files')\"\n\t\t\t\t\t\t@click=\"openFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Folder :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton v-if=\"!isGenerated\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Remove profile picture')\"\n\t\t\t\t\t\t@click=\"removeAvatar\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<span>{{ t('settings', 'The file must be a PNG or JPG') }}</span>\n\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t:id=\"inputId\"\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t:accept=\"validMimeTypes.join(',')\"\n\t\t\t\t\t@change=\"onChange\">\n\t\t\t</template>\n\t\t\t<span v-else>\n\t\t\t\t{{ t('settings', 'Picture provided by original account') }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<!-- Use v-show to ensure early cropper ref availability -->\n\t\t<div v-show=\"showCropper\" class=\"avatar__container\">\n\t\t\t<VueCropper ref=\"cropper\"\n\t\t\t\tclass=\"avatar__cropper\"\n\t\t\t\tv-bind=\"cropperOptions\" />\n\t\t\t<div class=\"avatar__cropper-buttons\">\n\t\t\t\t<NcButton @click=\"cancel\">\n\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t@click=\"saveAvatar\">\n\t\t\t\t\t{{ t('settings', 'Set as profile picture') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<span>{{ t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.') }}</span>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport VueCropper from 'vue-cropperjs'\n// eslint-disable-next-line n/no-extraneous-import\nimport 'cropperjs/dist/cropper.css'\n\nimport Upload from 'vue-material-design-icons/Upload.vue'\nimport Folder from 'vue-material-design-icons/Folder.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { avatar } = loadState('settings', 'personalInfoParameters', {})\nconst { avatarChangeSupported } = loadState('settings', 'accountParameters', {})\n\nconst VALID_MIME_TYPES = ['image/png', 'image/jpeg']\n\nconst picker = getFilePickerBuilder(t('settings', 'Choose your profile picture'))\n\t.setMultiSelect(false)\n\t.setMimeTypeFilter(VALID_MIME_TYPES)\n\t.setModal(true)\n\t.setType(1)\n\t.allowDirectories(false)\n\t.build()\n\nexport default {\n\tname: 'AvatarSection',\n\n\tcomponents: {\n\t\tDelete,\n\t\tFolder,\n\t\tHeaderBar,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tUpload,\n\t\tVueCropper,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavatar: { ...avatar, readable: NAME_READABLE_ENUM[avatar.name] },\n\t\t\tavatarChangeSupported,\n\t\t\tshowCropper: false,\n\t\t\tloading: false,\n\t\t\tuserId: getCurrentUser().uid,\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\tisGenerated: oc_userconfig.avatar.generated,\n\t\t\tvalidMimeTypes: VALID_MIME_TYPES,\n\t\t\tcropperOptions: {\n\t\t\t\taspectRatio: 1 / 1,\n\t\t\t\tviewMode: 1,\n\t\t\t\tguides: false,\n\t\t\t\tcenter: false,\n\t\t\t\thighlight: false,\n\t\t\t\tautoCropArea: 1,\n\t\t\t\tminContainerWidth: 300,\n\t\t\t\tminContainerHeight: 300,\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.avatar.name}`\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tonChange(e) {\n\t\t\tthis.loading = true\n\t\t\tconst file = e.target.files[0]\n\t\t\tif (!this.validMimeTypes.includes(file.type)) {\n\t\t\t\tshowError(t('settings', 'Please select a valid png or jpg file'))\n\t\t\t\tthis.cancel()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst reader = new FileReader()\n\t\t\treader.onload = (e) => {\n\t\t\t\tthis.$refs.cropper.replace(e.target.result)\n\t\t\t\tthis.showCropper = true\n\t\t\t}\n\t\t\treader.readAsDataURL(file)\n\t\t},\n\n\t\tasync openFilePicker() {\n\t\t\tconst path = await picker.pick()\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateUrl('/avatar'), { path })\n\t\t\t\tif (data.status === 'success') {\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} else if (data.data === 'notsquare') {\n\t\t\t\t\tconst tempAvatar = generateUrl('/avatar/tmp') + '?requesttoken=' + encodeURIComponent(OC.requestToken) + '#' + Math.floor(Math.random() * 1000)\n\t\t\t\t\tthis.$refs.cropper.replace(tempAvatar)\n\t\t\t\t\tthis.showCropper = true\n\t\t\t\t} else {\n\t\t\t\t\tshowError(data.data.message)\n\t\t\t\t\tthis.cancel()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error setting profile picture'))\n\t\t\t\tthis.cancel()\n\t\t\t}\n\t\t},\n\n\t\tsaveAvatar() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = true\n\n\t\t\tconst canvasData = this.$refs.cropper.getCroppedCanvas()\n\t\t\tconst scaleFactor = canvasData.width > 512 ? 512 / canvasData.width : 1\n\n\t\t\tthis.$refs.cropper.scale(scaleFactor, scaleFactor).getCroppedCanvas().toBlob(async (blob) => {\n\t\t\t\tif (blob === null) {\n\t\t\t\t\tshowError(t('settings', 'Error cropping profile picture'))\n\t\t\t\t\tthis.cancel()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst formData = new FormData()\n\t\t\t\tformData.append('files[]', blob)\n\t\t\t\ttry {\n\t\t\t\t\tawait axios.post(generateUrl('/avatar'), formData)\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} catch (e) {\n\t\t\t\t\tshowError(t('settings', 'Error saving profile picture'))\n\t\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync removeAvatar() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait axios.delete(generateUrl('/avatar'))\n\t\t\t\tthis.handleAvatarUpdate(true)\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error removing profile picture'))\n\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t}\n\t\t},\n\n\t\tcancel() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = false\n\t\t},\n\n\t\thandleAvatarUpdate(isGenerated) {\n\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\tthis.version = oc_userconfig.avatar.version = Date.now()\n\t\t\tthis.isGenerated = oc_userconfig.avatar.generated = isGenerated\n\t\t\tthis.loading = false\n\t\t\temit('settings:avatar:updated', oc_userconfig.avatar.version)\n\t\t},\n\n\t\thandleDisplayNameUpdate() {\n\t\t\tthis.version = oc_userconfig.avatar.version\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AvatarSection.vue?vue&type=template&id=022fd5d4&scoped=true&\"\nimport script from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"022fd5d4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{attrs:{\"id\":\"vue-avatar-section\"}},[_c('h3',{staticClass:\"hidden-visually\"},[_vm._v(\" \"+_vm._s(_vm.t('settings', 'Your profile information'))+\" \")]),_vm._v(\" \"),_c('HeaderBar',{attrs:{\"input-id\":_vm.avatarChangeSupported ? _vm.inputId : null,\"readable\":_vm.avatar.readable,\"scope\":_vm.avatar.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.avatar, \"scope\", $event)}}}),_vm._v(\" \"),(!_vm.showCropper)?_c('div',{staticClass:\"avatar__container\"},[_c('div',{staticClass:\"avatar__preview\"},[(!_vm.loading)?_c('NcAvatar',{key:_vm.version,attrs:{\"user\":_vm.userId,\"aria-label\":_vm.t('settings', 'Your profile picture'),\"disabled-menu\":true,\"disabled-tooltip\":true,\"show-user-status\":false,\"size\":180}}):_c('div',{staticClass:\"icon-loading\"})],1),_vm._v(\" \"),(_vm.avatarChangeSupported)?[_c('div',{staticClass:\"avatar__buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Upload profile picture')},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}],null,false,1329850251)}),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Choose profile picture from Files')},on:{\"click\":_vm.openFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Folder',{attrs:{\"size\":20}})]},proxy:true}],null,false,4270628382)}),_vm._v(\" \"),(!_vm.isGenerated)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Remove profile picture')},on:{\"click\":_vm.removeAvatar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e()],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'The file must be a PNG or JPG')))]),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"type\":\"file\",\"accept\":_vm.validMimeTypes.join(',')},on:{\"change\":_vm.onChange}})]:_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Picture provided by original account'))+\"\\n\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCropper),expression:\"showCropper\"}],staticClass:\"avatar__container\"},[_c('VueCropper',_vm._b({ref:\"cropper\",staticClass:\"avatar__cropper\"},'VueCropper',_vm.cropperOptions,false)),_vm._v(\" \"),_c('div',{staticClass:\"avatar__cropper-buttons\"},[_c('NcButton',{on:{\"click\":_vm.cancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveAvatar}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set as profile picture'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.t('settings', 'Details')}}),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"details__groups\"},[_c('Account',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__groups-info\"},[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'You are a member of the following groups:')))]),_vm._v(\" \"),_c('p',{staticClass:\"details__groups-list\"},[_vm._v(_vm._s(_vm.groups.join(', ')))])])],1),_vm._v(\" \"),_c('div',{staticClass:\"details__quota\"},[_c('CircleSlice',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__quota-info\"},[_c('p',{staticClass:\"details__quota-text\",domProps:{\"innerHTML\":_vm._s(_vm.quotaText)}}),_vm._v(\" \"),_c('NcProgressBar',{attrs:{\"size\":\"medium\",\"value\":_vm.usageRelative,\"error\":_vm.usageRelative > 80}})],1)],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"t('settings', 'Details')\" />\n\n\t\t<div class=\"details\">\n\t\t\t<div class=\"details__groups\">\n\t\t\t\t<Account :size=\"20\" />\n\t\t\t\t<div class=\"details__groups-info\">\n\t\t\t\t\t<p>{{ t('settings', 'You are a member of the following groups:') }}</p>\n\t\t\t\t\t<p class=\"details__groups-list\">{{ groups.join(', ') }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"details__quota\">\n\t\t\t\t<CircleSlice :size=\"20\" />\n\t\t\t\t<div class=\"details__quota-info\">\n\t\t\t\t\t<p class=\"details__quota-text\" v-html=\"quotaText\" />\n\t\t\t\t\t<NcProgressBar size=\"medium\"\n\t\t\t\t\t\t:value=\"usageRelative\"\n\t\t\t\t\t\t:error=\"usageRelative > 80\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport Account from 'vue-material-design-icons/Account.vue'\nimport CircleSlice from 'vue-material-design-icons/CircleSlice3.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\n\n/** SYNC to be kept in sync with `lib/public/Files/FileInfo.php` */\nconst SPACE_UNLIMITED = -3\n\nconst { groups, quota, totalSpace, usage, usageRelative } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'DetailsSection',\n\n\tcomponents: {\n\t\tAccount,\n\t\tCircleSlice,\n\t\tHeaderBar,\n\t\tNcProgressBar,\n\t},\n\n\tcomputed: {\n\t\tquotaText() {\n\t\t\tif (quota === SPACE_UNLIMITED) {\n\t\t\t\treturn t('settings', 'You are using <strong>{usage}</strong>', { usage })\n\t\t\t}\n\t\t\treturn t(\n\t\t\t\t'settings',\n\t\t\t\t'You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)',\n\t\t\t\t{ usage, totalSpace, usageRelative },\n\t\t\t)\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tusageRelative,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DetailsSection.vue?vue&type=template&id=1ab46e68&scoped=true&\"\nimport script from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ab46e68\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your full name'),\"autocomplete\":\"username\",\"is-editable\":_vm.displayNameChangeSupported,\"on-validate\":_vm.onValidate,\"on-save\":_vm.onSave}},'AccountPropertySection',_vm.displayName,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :scope.sync=\"scope\"\n\t\t\t:readable.sync=\"readable\"\n\t\t\t:input-id=\"inputId\"\n\t\t\t:is-editable=\"isEditable\" />\n\n\t\t<div v-if=\"isEditable\" class=\"property\">\n\t\t\t<textarea v-if=\"multiLine\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:value=\"value\"\n\t\t\t\trows=\"8\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onPropertyChange\" />\n\t\t\t<input v-else\n\t\t\t\tref=\"input\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:type=\"type\"\n\t\t\t\t:value=\"value\"\n\t\t\t\t:aria-describedby=\"helperText ? `${name}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t:autocomplete=\"autocomplete\"\n\t\t\t\t@input=\"onPropertyChange\">\n\n\t\t\t<div class=\"property__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t</div>\n\t\t<span v-else>\n\t\t\t{{ value || t('settings', 'No {property} set', { property: readable.toLocaleLowerCase() }) }}\n\t\t</span>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${name}-helper-text`\"\n\t\t\tclass=\"property__helper-text-message property__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"property__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\t</section>\n</template>\n\n<script>\nimport debounce from 'debounce'\n\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'AccountPropertySection',\n\n\tcomponents: {\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tHeaderBar,\n\t},\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'text',\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmultiLine: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tonValidate: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tonSave: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tautocomplete: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialValue: this.value,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonPropertyChange(e) {\n\t\t\tthis.$emit('update:value', e.target.value)\n\t\t\tthis.debouncePropertyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebouncePropertyChange: debounce(async function(value) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.input && this.$refs.input.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.input.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (this.onValidate && !this.onValidate(value)) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tawait this.updateProperty(value)\n\t\t}, 500),\n\n\t\tasync updateProperty(value) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(\n\t\t\t\t\tthis.name,\n\t\t\t\t\tvalue,\n\t\t\t\t)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvalue,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update {property}', { property: this.readable.toLocaleLowerCase() }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ value, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialValue = value\n\t\t\t\tif (this.onSave) {\n\t\t\t\t\tthis.onSave(value)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:value', this.initialValue)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountPropertySection.vue?vue&type=template&id=400ac7dc&scoped=true&\"\nimport script from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AccountPropertySection.vue?vue&type=style&index=0&id=400ac7dc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"400ac7dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"scope\":_vm.scope,\"readable\":_vm.readable,\"input-id\":_vm.inputId,\"is-editable\":_vm.isEditable},on:{\"update:scope\":function($event){_vm.scope=$event},\"update:readable\":function($event){_vm.readable=$event}}}),_vm._v(\" \"),(_vm.isEditable)?_c('div',{staticClass:\"property\"},[(_vm.multiLine)?_c('textarea',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}):_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"aria-describedby\":_vm.helperText ? `${_vm.name}-helper-text` : '',\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"autocomplete\":_vm.autocomplete},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"property__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1)],1)]):_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.value || _vm.t('settings', 'No {property} set', { property: _vm.readable.toLocaleLowerCase() }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"property__helper-text-message property__helper-text-message--error\",attrs:{\"id\":`${_vm.name}-helper-text`}},[_c('AlertCircle',{staticClass:\"property__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"displayName\"\n\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\tautocomplete=\"username\"\n\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t:on-validate=\"onValidate\"\n\t\t:on-save=\"onSave\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { emit } from '@nextcloud/event-bus'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { displayName } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: { ...displayName, readable: NAME_READABLE_ENUM[displayName.name] },\n\t\t\tdisplayNameChangeSupported,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn value !== ''\n\t\t},\n\n\t\tonSave(value) {\n\t\t\tif (oc_userconfig.avatar.generated) {\n\t\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\t\toc_userconfig.avatar.version = Date.now()\n\t\t\t}\n\t\t\temit('settings:display-name:updated', value)\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=68751703&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.primaryEmail.readable,\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:additionalEmail.key,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the URL input\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateUrl(input) {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew URL(input)\n\t\treturn true\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate the locale input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLocale(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\tautocomplete=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\t:aria-describedby=\"helperText ? `${inputId}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :readable=\"propertyReadable\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<NcActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${inputId}-helper-text`\"\n\t\t\tclass=\"email__helper-text-message email__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"email__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport { NcActions, NcActionButton } from '@nextcloud/vue'\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl.vue'\nimport { handleError } from '../../../utils/handlers.js'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.email?.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.email.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=3b4a1ecf&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=3b4a1ecf&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b4a1ecf\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"autocomplete\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"aria-describedby\":_vm.helperText ? `${_vm.inputId}-helper-text` : '',\"autocapitalize\":\"none\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"readable\":_vm.propertyReadable,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"force-menu\":true}},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('NcActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"email__helper-text-message email__helper-text-message--error\",attrs:{\"id\":`${_vm.inputId}-helper-text`}},[_c('AlertCircle',{staticClass:\"email__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e(),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"primaryEmail.readable\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<!-- TODO use unique key for additional email when uniqueness can be guaranteed, see https://github.com/nextcloud/server/issues/26866 -->\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"additionalEmail.key\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Email from './Email.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE, NAME_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })),\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail: { ...primaryEmail, readable: NAME_READABLE_ENUM[primaryEmail.name] },\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `account-property-${this.primaryEmail.name}`\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE, key: this.generateUniqueKey() })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\tgenerateUniqueKey() {\n\t\t\treturn Math.random().toString(36).substring(2)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=46c7eb7e&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46c7eb7e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your phone number'),\"autocomplete\":\"tel\",\"type\":\"tel\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.phone,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"phone\"\n\t\t:placeholder=\"t('settings', 'Your phone number')\"\n\t\tautocomplete=\"tel\"\n\t\ttype=\"tel\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { isValidPhoneNumber } from 'libphonenumber-js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst {\n\tdefaultPhoneRegion,\n\tphone,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'PhoneSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tphone: { ...phone, readable: NAME_READABLE_ENUM[phone.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\tif (defaultPhoneRegion) {\n\t\t\t\treturn isValidPhoneNumber(value, defaultPhoneRegion)\n\t\t\t}\n\t\t\treturn isValidPhoneNumber(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PhoneSection.vue?vue&type=template&id=6f2678bb&\"\nimport script from \"./PhoneSection.vue?vue&type=script&lang=js&\"\nexport * from \"./PhoneSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"location\"\n\t\tautocomplete=\"address-level1\"\n\t\t:placeholder=\"t('settings', 'Your location')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { location } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocation: { ...location, readable: NAME_READABLE_ENUM[location.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LocationSection.vue?vue&type=template&id=232d7eac&\"\nimport script from \"./LocationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"autocomplete\":\"address-level1\",\"placeholder\":_vm.t('settings', 'Your location')}},'AccountPropertySection',_vm.location,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"website\"\n\t\t:placeholder=\"t('settings', 'Your website')\"\n\t\tautocomplete=\"url\"\n\t\ttype=\"url\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\nimport { validateUrl } from '../../utils/validate.js'\n\nconst { website } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'WebsiteSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\twebsite: { ...website, readable: NAME_READABLE_ENUM[website.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn validateUrl(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WebsiteSection.vue?vue&type=template&id=271dd4ba&\"\nimport script from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\nexport * from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your website'),\"autocomplete\":\"url\",\"type\":\"url\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.website,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"twitter\"\n\t\t:placeholder=\"t('settings', 'Your Twitter handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { twitter } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'TwitterSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttwitter: { ...twitter, readable: NAME_READABLE_ENUM[twitter.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TwitterSection.vue?vue&type=template&id=203feaef&\"\nimport script from \"./TwitterSection.vue?vue&type=script&lang=js&\"\nexport * from \"./TwitterSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your Twitter handle')}},'AccountPropertySection',_vm.twitter,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"fediverse\"\n\t\t:placeholder=\"t('settings', 'Your handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { fediverse } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'FediverseSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfediverse: { ...fediverse, readable: NAME_READABLE_ENUM[fediverse.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FediverseSection.vue?vue&type=template&id=78433a38&\"\nimport script from \"./FediverseSection.vue?vue&type=script&lang=js&\"\nexport * from \"./FediverseSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your handle')}},'AccountPropertySection',_vm.fediverse,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLanguage } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5c847b3a&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c847b3a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"language\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :input-id=\"inputId\"\n\t\t\t\t:common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=92685b76&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"92685b76\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"input-id\":_vm.inputId,\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Locale',{attrs:{\"input-id\":_vm.inputId,\"locales-for-language\":_vm.localesForLanguage,\"other-locales\":_vm.otherLocales,\"locale\":_vm.locale},on:{\"update:locale\":function($event){_vm.locale=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No locale set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"locale\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Locale')\"\n\t\t\t@change=\"onLocaleChange\">\n\t\t\t<option v-for=\"currentLocale in localesForLanguage\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"currentLocale in otherLocales\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<div class=\"example\">\n\t\t\t<Web :size=\"20\" />\n\t\t\t<div class=\"example__text\">\n\t\t\t\t<p>\n\t\t\t\t\t<span>{{ example.date }}</span>\n\t\t\t\t\t<span>{{ example.time }}</span>\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }) }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\nimport Web from 'vue-material-design-icons/Web.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLocale } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Locale',\n\n\tcomponents: {\n\t\tWeb,\n\t},\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tlocale: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tlocalesForLanguage: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLocales: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLocale: this.locale,\n\t\t\texample: {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLocales() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.localesForLanguage, ...this.otherLocales]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsetInterval(this.refreshExample, 1000)\n\t},\n\n\tmethods: {\n\t\tasync onLocaleChange(e) {\n\t\t\tconst locale = this.constructLocale(e.target.value)\n\t\t\tthis.$emit('update:locale', locale)\n\n\t\t\tif (validateLocale(locale)) {\n\t\t\t\tawait this.updateLocale(locale)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLocale(locale) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE, locale.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlocale,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update locale'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLocale(localeCode) {\n\t\t\treturn {\n\t\t\t\tcode: localeCode,\n\t\t\t\tname: this.allLocales[localeCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ locale, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialLocale = locale\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:locale', this.initialLocale)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\trefreshExample() {\n\t\t\tthis.example = {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Locale.vue?vue&type=template&id=1ac456dc&scoped=true&\"\nimport script from \"./Locale.vue?vue&type=script&lang=js&\"\nexport * from \"./Locale.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ac456dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"locale\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Locale')},on:{\"change\":_vm.onLocaleChange}},[_vm._l((_vm.localesForLanguage),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLocales),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('div',{staticClass:\"example\"},[_c('Web',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"example__text\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.example.date))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.example.time))])]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }))+\"\\n\\t\\t\\t\")])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Locale :input-id=\"inputId\"\n\t\t\t\t:locales-for-language=\"localesForLanguage\"\n\t\t\t\t:other-locales=\"otherLocales\"\n\t\t\t\t:locale.sync=\"locale\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No locale set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Locale from './Locale.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { localeMap: { activeLocale, localesForLanguage, otherLocales } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocaleSection',\n\n\tcomponents: {\n\t\tLocale,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LOCALE,\n\t\t\tlocalesForLanguage,\n\t\t\totherLocales,\n\t\t\tlocale: activeLocale,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.locale)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LocaleSection.vue?vue&type=template&id=84fca724&scoped=true&\"\nimport script from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"84fca724\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown.vue'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\tcolor: var(--color-text-maxcontrast);\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=7539c74a&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&id=7539c74a&prod&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=7539c74a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7539c74a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkbox-container\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.isProfileEnabled,\"loading\":_vm.loading},on:{\"update:checked\":[function($event){_vm.isProfileEnabled=$event},_vm.saveEnableProfile]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"isProfileEnabled\"\n\t\t\t:loading=\"loading\"\n\t\t\t@update:checked=\"saveEnableProfile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisProfileEnabled: this.profileEnabled,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync saveEnableProfile() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, this.isProfileEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisProfileEnabled: this.isProfileEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isProfileEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\temit('settings:profile-enabled:updated', isProfileEnabled)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=061ac04c&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<NcAvatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary-element);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-element-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=05581203&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=05581203&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=05581203&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=05581203&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05581203\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('NcAvatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :readable=\"propertyReadable\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport ProfileCheckbox from './ProfileCheckbox.vue'\nimport ProfilePreviewCard from './ProfilePreviewCard.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst {\n\torganisation: { value: organisation },\n\tdisplayName: { value: displayName },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=cf64d964&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf64d964\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"organisation\"\n\t\tautocomplete=\"organization\"\n\t\t:placeholder=\"t('settings', 'Your organisation')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { organisation } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\torganisation: { ...organisation, readable: NAME_READABLE_ENUM[organisation.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=0d2e4355&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"autocomplete\":\"organization\",\"placeholder\":_vm.t('settings', 'Your organisation')}},'AccountPropertySection',_vm.organisation,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"role\"\n\t\tautocomplete=\"organization-title\"\n\t\t:placeholder=\"t('settings', 'Your role')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { role } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\trole: { ...role, readable: NAME_READABLE_ENUM[role.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=47d32f32&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"autocomplete\":\"organization-title\",\"placeholder\":_vm.t('settings', 'Your role')}},'AccountPropertySection',_vm.role,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"headline\"\n\t\t:placeholder=\"t('settings', 'Your headline')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { headline } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theadline: { ...headline, readable: NAME_READABLE_ENUM[headline.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=0f3859ee&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your headline')}},'AccountPropertySection',_vm.headline,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"biography\"\n\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t:multi-line=\"true\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { biography } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tbiography: { ...biography, readable: NAME_READABLE_ENUM[biography.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=a916ca60&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your biography'),\"multi-line\":true}},'AccountPropertySection',_vm.biography,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: `repeat(${_vm.rows}, 44px)`,\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ displayId }}\n\t\t</label>\n\t\t<NcSelect :input-id=\"inputId\"\n\t\t\tclass=\"visibility-container__select\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@option:selected=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService.js'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (visibility !== '') {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=b13d20da&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b13d20da\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.displayId)+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"visibility-container__select\",attrs:{\"input-id\":_vm.inputId,\"clearable\":false,\"options\":_vm.visibilityOptions,\"value\":_vm.visibilityObject},on:{\"option:selected\":_vm.onVisibilityChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport VisibilityDropdown from './VisibilityDropdown.vue'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=a07dbf96&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a07dbf96\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/dist/index.css'\n\nimport AvatarSection from './components/PersonalInfo/AvatarSection.vue'\nimport DetailsSection from './components/PersonalInfo/DetailsSection.vue'\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection.vue'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection.vue'\nimport PhoneSection from './components/PersonalInfo/PhoneSection.vue'\nimport LocationSection from './components/PersonalInfo/LocationSection.vue'\nimport WebsiteSection from './components/PersonalInfo/WebsiteSection.vue'\nimport TwitterSection from './components/PersonalInfo/TwitterSection.vue'\nimport FediverseSection from './components/PersonalInfo/FediverseSection.vue'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection.vue'\nimport LocaleSection from './components/PersonalInfo/LocaleSection/LocaleSection.vue'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection.vue'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection.vue'\nimport RoleSection from './components/PersonalInfo/RoleSection.vue'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection.vue'\nimport BiographySection from './components/PersonalInfo/BiographySection.vue'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst AvatarView = Vue.extend(AvatarSection)\nconst DetailsView = Vue.extend(DetailsSection)\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst PhoneView = Vue.extend(PhoneSection)\nconst LocationView = Vue.extend(LocationSection)\nconst WebsiteView = Vue.extend(WebsiteSection)\nconst TwitterView = Vue.extend(TwitterSection)\nconst FediverseView = Vue.extend(FediverseSection)\nconst LanguageView = Vue.extend(LanguageSection)\nconst LocaleView = Vue.extend(LocaleSection)\n\nnew AvatarView().$mount('#vue-avatar-section')\nnew DetailsView().$mount('#vue-details-section')\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew PhoneView().$mount('#vue-phone-section')\nnew LocationView().$mount('#vue-location-section')\nnew WebsiteView().$mount('#vue-website-section')\nnew TwitterView().$mount('#vue-twitter-section')\nnew FediverseView().$mount('#vue-fediverse-section')\nnew LanguageView().$mount('#vue-language-section')\nnew LocaleView().$mount('#vue-locale-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tgrid-row: 1/3;\\n}\\n.avatar {\\n\\t&__container {\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: 300px;\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 180px;\\n\\t\\theight: 180px;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\t}\\n\\n\\t&__cropper {\\n\\t\\twidth: 300px;\\n\\t\\theight: 300px;\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&-buttons {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .cropper-view-box {\\n\\t\\t\\tborder-radius: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.details {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin: 10px 32px 10px 0;\\n\\tgap: 16px 0;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&__groups,\\n\\t&__quota {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\n\\t\\t&-info {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tgap: 4px 0;\\n\\t\\t}\\n\\n\\t\\t&-list {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .material-design-icon {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tmargin-top: 2px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".email[data-v-3b4a1ecf]{display:grid;align-items:center}.email input[data-v-3b4a1ecf]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-3b4a1ecf]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-3b4a1ecf]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf]:hover,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:focus,.email .email__actions-container .email__actions[data-v-3b4a1ecf]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-3b4a1ecf] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-3b4a1ecf]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-3b4a1ecf]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-3b4a1ecf]{color:var(--color-error)}.fade-enter[data-v-3b4a1ecf],.fade-leave-to[data-v-3b4a1ecf]{opacity:0}.fade-enter-active[data-v-3b4a1ecf]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-3b4a1ecf]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.locale {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.example {\\n\\tmargin: 10px 0;\\n\\tdisplay: flex;\\n\\tgap: 0 10px;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&::v-deep .material-design-icon {\\n\\t\\talign-self: flex-start;\\n\\t\\tmargin-top: 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA\",\"sourcesContent\":[\"\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"a[data-v-7539c74a]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);color:var(--color-text-maxcontrast);background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-7539c74a]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-7539c74a]:hover,a[data-v-7539c74a]:focus,a[data-v-7539c74a]:active{color:var(--color-main-text);background-color:var(--color-background-dark)}a.disabled[data-v-7539c74a]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,mCAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,4BAAA,CACA,6CAAA,CAGD,4BACC,mBAAA\",\"sourcesContent\":[\"\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".preview-card[data-v-05581203]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-05581203]:hover,.preview-card[data-v-05581203]:focus,.preview-card[data-v-05581203]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-05581203]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-05581203]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-05581203],.preview-card.disabled[data-v-05581203] *{cursor:default}.preview-card__avatar[data-v-05581203]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-05581203]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-05581203],.preview-card__footer[data-v-05581203]{position:relative;width:auto}.preview-card__header span[data-v-05581203],.preview-card__footer span[data-v-05581203]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-05581203],.preview-card__footer span[data-v-05581203]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-05581203]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary-element);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-05581203]{bottom:0;color:var(--color-primary-element-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-05581203]{height:46px}.preview-card__footer span[data-v-05581203]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,6CAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,uCAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\tbackground-image: var(--gradient-primary-background);\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 900px;\\n\\twidth: 100%;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 270px;\\n\\t\\tmax-width: 40vw;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-400ac7dc]{padding:10px 10px}section[data-v-400ac7dc] button:disabled{cursor:default}section .property[data-v-400ac7dc]{display:grid;align-items:center}section .property textarea[data-v-400ac7dc]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-400ac7dc]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-400ac7dc]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-400ac7dc]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-400ac7dc]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-400ac7dc]{color:var(--color-error)}section .fade-enter[data-v-400ac7dc],section .fade-leave-to[data-v-400ac7dc]{opacity:0}section .fade-enter-active[data-v-400ac7dc]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-400ac7dc]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.property {\\n\\t\\tdisplay: grid;\\n\\t\\talign-items: center;\\n\\n\\t\\ttextarea {\\n\\t\\t\\tresize: vertical;\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\tinput {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t.property__actions-container {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\tjustify-self: flex-end;\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\theight: 30px;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 0 2px;\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\tmargin-bottom: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t.property__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n\\n\\t.fade-enter,\\n\\t.fade-leave-to {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t.fade-enter-active {\\n\\t\\ttransition: opacity 200ms ease-out;\\n\\t}\\n\\n\\t.fade-leave-active {\\n\\t\\ttransition: opacity 300ms ease-out;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"sourcesContent\":[\"\\n.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions__btn[data-v-2ef553c8] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-2ef553c8]{background-color:var(--color-primary-element-light) !important;box-shadow:inset 2px 0 var(--color-primary-element) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,8DAAA,CACA,8DAAA\",\"sourcesContent\":[\"\\n.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-element-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary-element) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA\",\"sourcesContent\":[\"\\n.headerbar-label {\\n\\tfont-weight: normal;\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tgap: 8px;\\n\\talign-items: center;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: 0;\\n}\\n\\n.button-vue {\\n\\tmargin: 0 0 0 auto !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4418;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4418: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(95766)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","name","components","NcActionButton","props","activeScope","type","String","required","displayName","handleScopeChange","Function","default","iconClass","isSupportedScope","Boolean","tooltipDisabled","tooltip","methods","updateScope","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","class","attrs","on","$event","stopPropagation","preventDefault","apply","arguments","_v","_s","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","FEDIVERSE","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","NAME_READABLE_ENUM","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","LOCALE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","async","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","data","getLoggerBuilder","setApp","detectUser","build","handleError","error","message","_error$response","fullMessage","response","status","showError","logger","federationEnabled","lookupServerUploadEnabled","loadState","NcActions","FederationControlAction","readable","validator","values","includes","additional","additionalValue","disabled","handleAdditionalScopeChange","scope","readableLowerCase","toLocaleLowerCase","initialScope","computed","ariaLabel","property","scopeDisplayNameLowerCase","scopeIcon","federationScopes","supportedScopes","scopes","push","$emit","updateAdditionalScope","updatePrimaryScope","_responseData$ocs","_responseData$ocs$met","responseData","concat","savePrimaryAccountPropertyScope","handleResponse","ocs","meta","e","errorMessage","_responseData$ocs2","_responseData$ocs2$me","_ref","_l","federationScope","changeScope","FederationControl","NcButton","Plus","inputId","isEditable","isMultiValueSupported","isValidSection","isHeading","localScope","isProfileProperty","isSettingProperty","onAddAdditional","onScopeChange","tag","_e","scopedSlots","_u","fn","proxy","avatar","avatarChangeSupported","VALID_MIME_TYPES","picker","getFilePickerBuilder","setMultiSelect","setMimeTypeFilter","setModal","setType","allowDirectories","Delete","Folder","HeaderBar","NcAvatar","Upload","VueCropper","showCropper","loading","version","oc_userconfig","isGenerated","generated","validMimeTypes","cropperOptions","aspectRatio","viewMode","guides","center","highlight","autoCropArea","minContainerWidth","minContainerHeight","created","subscribe","handleDisplayNameUpdate","beforeDestroy","unsubscribe","activateLocalFilePicker","$refs","input","click","onChange","file","target","files","cancel","reader","FileReader","onload","cropper","replace","result","readAsDataURL","path","pick","generateUrl","handleAvatarUpdate","tempAvatar","encodeURIComponent","OC","requestToken","Math","floor","random","saveAvatar","canvasData","getCroppedCanvas","scaleFactor","width","scale","toBlob","blob","formData","FormData","append","Date","now","emit","$set","openFilePicker","removeAvatar","ref","join","directives","rawName","expression","_b","groups","quota","totalSpace","usage","usageRelative","Account","CircleSlice","NcProgressBar","quotaText","domProps","AlertCircle","AlertOctagon","Check","placeholder","multiLine","onValidate","onSave","autocomplete","initialValue","helperText","showCheckmarkIcon","showErrorIcon","onPropertyChange","debouncePropertyChange","trim","debounce","validationMessage","updateProperty","setTimeout","displayNameChangeSupported","AccountPropertySection","savePrimaryEmail","email","removeAdditionalEmail","collection","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","validateEmail","test","slice","length","index","Number","primary","activeNotificationEmail","localVerificationState","propertyReadable","initialEmail","deleteDisabled","deleteEmailLabel","setNotificationMailDisabled","setNotificationMailLabel","isNotificationEmail","federationDisabled","inputPlaceholder","mounted","$nextTick","_this$$refs$email","focus","onEmailChange","debounceEmailChange","_this$$refs$email2","updatePrimaryEmail","addAdditionalEmail","updateAdditionalEmail","deleteAdditionalEmail","saveAdditionalEmail","_responseData$ocs3","_responseData$ocs3$me","newNotificationMailValue","saveNotificationEmail","notificationEmail","_responseData$ocs4","_responseData$ocs4$me","prevEmail","newEmail","_responseData$ocs5","_responseData$ocs5$me","handleDeleteAdditionalEmail","undefined","deleteEmail","setNotificationMail","emailMap","additionalEmails","primaryEmail","Email","map","properties","generateUniqueKey","firstAdditionalEmail","every","primaryEmailValue","get","set","onAddAdditionalEmail","onDeleteAdditionalEmail","$delete","deletedEmail","deleteFirstAdditionalEmail","handleDeleteFirstAdditionalEmail","toString","substring","onUpdateEmail","onUpdateNotificationEmail","additionalEmail","parseInt","locallyVerified","defaultPhoneRegion","phone","isValidPhoneNumber","location","website","URL","validateUrl","twitter","fediverse","commonLanguages","Array","otherLanguages","language","initialLanguage","allLanguages","reduce","acc","code","constructLanguage","updateLanguage","reloadPage","languageCode","_ref2","reload","onLanguageChange","commonLanguage","otherLanguage","languageMap","activeLanguage","Language","Web","locale","localesForLanguage","otherLocales","initialLocale","example","date","moment","format","time","firstDayOfWeek","window","dayNames","firstDay","allLocales","setInterval","refreshExample","constructLocale","updateLocale","localeCode","onLocaleChange","currentLocale","localeMap","activeLocale","Locale","ChevronDownIcon","profileEnabled","_g","$listeners","NcCheckboxRadioSwitch","isProfileEnabled","saveEnableProfile","organisation","profilePageLink","EditProfileAnchorLink","ProfileCheckbox","ProfilePreviewCard","handleOrganisationUpdate","role","headline","biography","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","NcSelect","paramId","displayId","visibility","initialVisibility","visibilityObject","visibilityOptions","handleProfileEnabledUpdate","updateVisibility","saveProfileParameterVisibility","onVisibilityChange","profileConfig","compareParams","a","b","appId","localeCompare","VisibilityDropdown","heading","visibilityParams","entries","id","sort","marginLeft","matchMedia","matches","getComputedStyle","document","getElementById","getPropertyValue","rows","ceil","onresize","style","gridTemplateRows","param","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","Vue","AvatarView","AvatarSection","DetailsView","DetailsSection","DisplayNameView","DisplayNameSection","EmailView","EmailSection","PhoneView","PhoneSection","LocationView","LocationSection","WebsiteView","WebsiteSection","TwitterView","TwitterSection","FediverseView","FediverseSection","LanguageView","LanguageSection","LocaleView","LocaleSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","splice","r","n","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/theming-admin-theming.js b/dist/theming-admin-theming.js index 3651ac83fb9..7798c48f80d 100644 --- a/dist/theming-admin-theming.js +++ b/dist/theming-admin-theming.js @@ -1,3 +1,3 @@ /*! For license information please see theming-admin-theming.js.LICENSE.txt */ -(()=>{"use strict";var e,a={62786:(e,a,n)=>{var i=n(20144),r=n(79954),o=n(15961),l=n(4820),s=n(79753);const d=["color","logo","background","logoheader","favicon","disable-user-theming"],u={emits:["update:theming"],data:()=>({showSuccess:!1,errorMessage:""}),computed:{id(){return"admin-theming-".concat(this.name)}},methods:{reset(){this.showSuccess=!1,this.errorMessage=""},handleSuccess(){this.showSuccess=!0,setTimeout((()=>{this.showSuccess=!1}),2e3),d.includes(this.name)&&this.$emit("update:theming")}}},c={mixins:[u],watch:{value(e){this.localValue=e}},data(){return{localValue:this.value}},methods:{async save(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/updateStylesheet"),t=!0===this.localValue?"yes":!1===this.localValue?"no":this.localValue;try{await l.default.post(e,{setting:this.name,value:t}),this.$emit("update:value",this.localValue),this.handleSuccess()}catch(e){var a;this.errorMessage=null===(a=e.response.data.data)||void 0===a?void 0:a.message}},async undo(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/undoChanges");try{await l.default.post(e,{setting:this.name}),this.$emit("update:value",this.defaultValue),this.handleSuccess()}catch(e){var t;this.errorMessage=null===(t=e.response.data.data)||void 0===t?void 0:t.message}}}},m={name:"CheckboxField",components:{NcCheckboxRadioSwitch:o.rw,NcNoteCard:o.qf},mixins:[c],props:{name:{type:String,required:!0},value:{type:Boolean,required:!0},defaultValue:{type:Boolean,required:!0},displayName:{type:String,required:!0},label:{type:String,required:!0},description:{type:String,required:!0}}};var p=n(93379),g=n.n(p),h=n(7795),A=n.n(h),f=n(90569),v=n.n(f),y=n(3565),C=n.n(y),b=n(19216),N=n.n(b),x=n(44589),w=n.n(x),_=n(17083),k={};k.styleTagTransform=w(),k.setAttributes=C(),k.insert=v().bind(null,"head"),k.domAPI=A(),k.insertStyleElement=N(),g()(_.Z,k),_.Z&&_.Z.locals&&_.Z.locals;var S=n(51900);const M=(0,S.Z)(m,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcCheckboxRadioSwitch",{attrs:{type:"switch",id:e.id,checked:e.localValue},on:{"update:checked":[function(t){e.localValue=t},e.save]}},[e._v("\n\t\t\t"+e._s(e.label)+"\n\t\t")])],1),e._v(" "),t("p",{staticClass:"field__description"},[e._v(e._s(e.description))]),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"17145f08",null).exports;var T=n(20296),I=n(92425);const L={name:"ColorPickerField",components:{NcButton:o.P2,NcColorPicker:o.m,NcNoteCard:o.qf,Undo:I.default},mixins:[c],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},displayName:{type:String,required:!0}},methods:{debounceSave:(0,T.debounce)((async function(){await this.save()}),200)}};var U=n(3598),F={};F.styleTagTransform=w(),F.setAttributes=C(),F.insert=v().bind(null,"head"),F.domAPI=A(),F.insertStyleElement=N(),g()(U.Z,F),U.Z&&U.Z.locals&&U.Z.locals;const D=(0,S.Z)(L,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcColorPicker",{attrs:{value:e.localValue,"advanced-fields":!0},on:{"update:value":[function(t){e.localValue=t},e.debounceSave]}},[t("NcButton",{staticClass:"field__button",attrs:{type:"primary",id:e.id,"aria-label":e.t("theming","Select a custom color"),"data-admin-theming-setting-primary-color-picker":""}},[e._v("\n\t\t\t\t"+e._s(e.value)+"\n\t\t\t")])],1),e._v(" "),e.value!==e.defaultValue?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-primary-color-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e()],1),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"73de0887",null).exports;var j=n(57612),V=n(75762);const z={name:"FileInputField",components:{Delete:j.Z,NcButton:o.P2,NcLoadingIcon:o.lb,NcNoteCard:o.qf,Undo:I.default,Upload:V.Z},mixins:[u],props:{name:{type:String,required:!0},mimeName:{type:String,required:!0},mimeValue:{type:String,required:!0},defaultMimeValue:{type:String,required:!0},displayName:{type:String,required:!0},ariaLabel:{type:String,required:!0}},data:()=>({showLoading:!1}),computed:{showReset(){return this.mimeValue!==this.defaultMimeValue},showRemove(){if("background"===this.name){if(this.mimeValue.startsWith("image/"))return!0;if(this.mimeValue===this.defaultMimeValue)return!0}return!1}},methods:{activateLocalFilePicker(){this.reset(),this.$refs.input.value=null,this.$refs.input.click()},async onChange(e){const t=e.target.files[0],a=new FormData;a.append("key",this.name),a.append("image",t);const n=(0,s.generateUrl)("/apps/theming/ajax/uploadImage");try{this.showLoading=!0,await l.default.post(n,a),this.showLoading=!1,this.$emit("update:mime-value",t.type),this.handleSuccess()}catch(e){var i;this.showLoading=!1,this.errorMessage=null===(i=e.response.data.data)||void 0===i?void 0:i.message}},async undo(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/undoChanges");try{await l.default.post(e,{setting:this.mimeName}),this.$emit("update:mime-value",this.defaultMimeValue),this.handleSuccess()}catch(e){var t;this.errorMessage=null===(t=e.response.data.data)||void 0===t?void 0:t.message}},async removeBackground(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/updateStylesheet");try{await l.default.post(e,{setting:this.mimeName,value:"backgroundColor"}),this.$emit("update:mime-value","backgroundColor"),this.handleSuccess()}catch(e){var t;this.errorMessage=null===(t=e.response.data.data)||void 0===t?void 0:t.message}}}},E=z;var P=n(78169),B={};B.styleTagTransform=w(),B.setAttributes=C(),B.insert=v().bind(null,"head"),B.domAPI=A(),B.insertStyleElement=N(),g()(P.Z,B),P.Z&&P.Z.locals&&P.Z.locals;const O=(0,S.Z)(E,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcButton",{attrs:{type:"secondary",id:e.id,"aria-label":e.ariaLabel,"data-admin-theming-setting-file-picker":""},on:{click:e.activateLocalFilePicker},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Upload",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.t("theming","Upload"))+"\n\t\t")]),e._v(" "),e.showReset?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-file-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e(),e._v(" "),e.showRemove?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Remove background image"),"data-admin-theming-setting-file-remove":""},on:{click:e.removeBackground},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)}):e._e(),e._v(" "),e.showLoading?t("NcLoadingIcon",{staticClass:"field__loading-icon",attrs:{size:20}}):e._e()],1),e._v(" "),"logoheader"!==e.name&&"favicon"!==e.name||e.mimeValue===e.defaultMimeValue?e._e():t("div",{staticClass:"field__preview",class:{"field__preview--logoheader":"logoheader"===e.name,"field__preview--favicon":"favicon"===e.name}}),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e(),e._v(" "),t("input",{ref:"input",attrs:{type:"file"},on:{change:e.onChange}})],1)}),[],!1,null,"3d620660",null).exports,Z={name:"TextField",components:{NcTextField:o.h3},mixins:[c],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},type:{type:String,required:!0},displayName:{type:String,required:!0},placeholder:{type:String,required:!0},maxlength:{type:Number,required:!0}}};var R=n(75012),Y={};Y.styleTagTransform=w(),Y.setAttributes=C(),Y.insert=v().bind(null,"head"),Y.domAPI=A(),Y.insertStyleElement=N(),g()(R.Z,Y),R.Z&&R.Z.locals&&R.Z.locals;const q=(0,S.Z)(Z,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("NcTextField",{attrs:{value:e.localValue,label:e.displayName,"label-visible":!0,placeholder:e.placeholder,type:e.type,maxlength:e.maxlength,spellcheck:!1,success:e.showSuccess,error:Boolean(e.errorMessage),"helper-text":e.errorMessage,"show-trailing-button":e.value!==e.defaultValue,"trailing-button-icon":"undo"},on:{"update:value":function(t){e.localValue=t},"trailing-button-click":e.undo,keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save.apply(null,arguments)},blur:e.save}})],1)}),[],!1,null,"21244e1d",null).exports,{backgroundMime:G,canThemeIcons:$,color:W,docUrl:H,docUrlIcons:Q,faviconMime:X,isThemable:J,legalNoticeUrl:K,logoheaderMime:ee,logoMime:te,name:ae,notThemableErrorMessage:ne,privacyPolicyUrl:ie,slogan:re,url:oe,userThemingDisabled:le}=(0,r.j)("theming","adminThemingParameters"),se=[{name:"name",value:ae,defaultValue:"Nextcloud",type:"text",displayName:t("theming","Name"),placeholder:t("theming","Name"),maxlength:250},{name:"url",value:oe,defaultValue:"https://nextcloud.com",type:"url",displayName:t("theming","Web link"),placeholder:"https://…",maxlength:500},{name:"slogan",value:re,defaultValue:t("theming","a safe home for all your data"),type:"text",displayName:t("theming","Slogan"),placeholder:t("theming","Slogan"),maxlength:500}],de={name:"color",value:W,defaultValue:"#0082c9",displayName:t("theming","Color")},ue=[{name:"logo",mimeName:"logoMime",mimeValue:te,defaultMimeValue:"",displayName:t("theming","Logo"),ariaLabel:t("theming","Upload new logo")},{name:"background",mimeName:"backgroundMime",mimeValue:G,defaultMimeValue:"",displayName:t("theming","Background and login image"),ariaLabel:t("theming","Upload new background and login image")}],ce=[{name:"imprintUrl",value:K,defaultValue:"",type:"url",displayName:t("theming","Legal notice link"),placeholder:"https://…",maxlength:500},{name:"privacyUrl",value:ie,defaultValue:"",type:"url",displayName:t("theming","Privacy policy link"),placeholder:"https://…",maxlength:500}],me=[{name:"logoheader",mimeName:"logoheaderMime",mimeValue:ee,defaultMimeValue:"",displayName:t("theming","Header logo"),ariaLabel:t("theming","Upload new header logo")},{name:"favicon",mimeName:"faviconMime",mimeValue:X,defaultMimeValue:"",displayName:t("theming","Favicon"),ariaLabel:t("theming","Upload new favicon")}],pe={name:"disable-user-theming",value:le,defaultValue:!1,displayName:t("theming","User settings"),label:t("theming","Disable user theming"),description:t("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},ge={name:"AdminTheming",components:{CheckboxField:M,ColorPickerField:D,FileInputField:O,NcNoteCard:o.qf,NcSettingsSection:o.gE,TextField:q},emits:["update:theming"],data:()=>({textFields:se,colorPickerField:de,fileInputFields:ue,advancedTextFields:ce,advancedFileInputFields:me,userThemingField:pe,canThemeIcons:$,docUrl:H,docUrlIcons:Q,isThemable:J,notThemableErrorMessage:ne})};var he=n(27247),Ae={};Ae.styleTagTransform=w(),Ae.setAttributes=C(),Ae.insert=v().bind(null,"head"),Ae.domAPI=A(),Ae.insertStyleElement=N(),g()(he.Z,Ae),he.Z&&he.Z.locals&&he.Z.locals;const fe=(0,S.Z)(ge,(function(){var e=this,t=e._self._c;return t("section",[t("NcSettingsSection",{attrs:{title:e.t("theming","Theming"),description:e.t("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),"doc-url":e.docUrl,"data-admin-theming-settings":""}},[t("div",{staticClass:"admin-theming"},[e.isThemable?e._e():t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.notThemableErrorMessage))])]),e._v(" "),e._l(e.textFields,(function(a){return t("TextField",{key:a.name,attrs:{"data-admin-theming-setting-field":a.name,"default-value":a.defaultValue,"display-name":a.displayName,maxlength:a.maxlength,name:a.name,placeholder:a.placeholder,type:a.type,value:a.value},on:{"update:value":function(t){return e.$set(a,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("ColorPickerField",{attrs:{name:e.colorPickerField.name,"default-value":e.colorPickerField.defaultValue,"display-name":e.colorPickerField.displayName,value:e.colorPickerField.value,"data-admin-theming-setting-primary-color":""},on:{"update:value":function(t){return e.$set(e.colorPickerField,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e._l(e.fileInputFields,(function(a){return t("FileInputField",{key:a.name,attrs:{"aria-label":a.ariaLabel,"data-admin-theming-setting-file":a.name,"default-mime-value":a.defaultMimeValue,"display-name":a.displayName,"mime-name":a.mimeName,"mime-value":a.mimeValue,name:a.name},on:{"update:mimeValue":function(t){return e.$set(a,"mimeValue",t)},"update:mime-value":function(t){return e.$set(a,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("div",{staticClass:"admin-theming__preview",attrs:{"data-admin-theming-preview":""}},[t("div",{staticClass:"admin-theming__preview-logo",attrs:{"data-admin-theming-preview-logo":""}})])],2)]),e._v(" "),t("NcSettingsSection",{attrs:{title:e.t("theming","Advanced options")}},[t("div",{staticClass:"admin-theming-advanced"},[e._l(e.advancedTextFields,(function(a){return t("TextField",{key:a.name,attrs:{name:a.name,value:a.value,"default-value":a.defaultValue,type:a.type,"display-name":a.displayName,placeholder:a.placeholder,maxlength:a.maxlength},on:{"update:value":function(t){return e.$set(a,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),e._l(e.advancedFileInputFields,(function(a){return t("FileInputField",{key:a.name,attrs:{name:a.name,"mime-name":a.mimeName,"mime-value":a.mimeValue,"default-mime-value":a.defaultMimeValue,"display-name":a.displayName,"aria-label":a.ariaLabel},on:{"update:mimeValue":function(t){return e.$set(a,"mimeValue",t)},"update:mime-value":function(t){return e.$set(a,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("CheckboxField",{attrs:{name:e.userThemingField.name,value:e.userThemingField.value,"default-value":e.userThemingField.defaultValue,"display-name":e.userThemingField.displayName,label:e.userThemingField.label,description:e.userThemingField.description,"data-admin-theming-setting-disable-user-theming":""},on:{"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e.canThemeIcons?e._e():t("a",{attrs:{href:e.docUrlIcons,rel:"noreferrer noopener"}},[t("em",[e._v(e._s(e.t("theming","Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.")))])])],2)])],1)}),[],!1,null,"4f7ac635",null).exports;i.default.prototype.OC=OC,i.default.prototype.t=t;const ve=new(i.default.extend(fe));ve.$mount("#admin-theming"),ve.$on("update:theming",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const a=e.cloneNode();a.href=t.toString(),a.onload=()=>e.remove(),document.head.append(a)}))}))},27247:(e,t,a)=>{a.d(t,{Z:()=>m});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r),l=a(61667),s=a.n(l),d=new URL(a(92770),a.b),u=o()(i()),c=s()(d);u.push([e.id,".admin-theming[data-v-4f7ac635],.admin-theming-advanced[data-v-4f7ac635]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-4f7ac635]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-default, #0082c9);background-image:var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-4f7ac635]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url("+c+"))}","",{version:3,sources:["webpack://./apps/theming/src/AdminTheming.vue"],names:[],mappings:"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,sDAAA,CAKA,iIAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA",sourcesContent:["\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-default, #0082c9);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const m=u},17083:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/CheckboxField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const l=o},3598:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,'.field[data-v-73de0887]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-73de0887]{display:flex;gap:0 4px}.field__button[data-v-73de0887]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-73de0887]:hover::after{background-color:#fff;content:"";position:absolute;width:100%;height:100%;opacity:.2;filter:var(--primary-invert-if-bright)}.field__button[data-v-73de0887] *{z-index:1}',"",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/ColorPickerField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCxBD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CAIA,6CACC,qBAAA,CACA,UAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,sCAAA,CAID,kCACC,SAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\n\t\t// emulated hover state because it would not make sense\n\t\t// to create a dedicated global variable for the color-primary-default\n\t\t&:hover::after {\n\t\t\tbackground-color: white;\n\t\t\tcontent: \"\";\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\topacity: .2;\n\t\t\tfilter: var(--primary-invert-if-bright);\n\t\t}\n\n\t\t// Above the ::after\n\t\t&::v-deep * {\n\t\t\tz-index: 1;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const l=o},78169:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,".field[data-v-3d620660]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-3d620660]{display:flex;gap:0 4px}.field__loading-icon[data-v-3d620660]{width:44px;height:44px}.field__preview[data-v-3d620660]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-3d620660]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-3d620660]{background-image:var(--image-favicon)}input[type=file][data-v-3d620660]{display:none}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/FileInputField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n"],sourceRoot:""}]);const l=o},75012:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,".field[data-v-21244e1d]{max-width:400px}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/TextField.vue"],names:[],mappings:"AACA,wBACC,eAAA",sourcesContent:["\n.field {\n\tmax-width: 400px;\n}\n"],sourceRoot:""}]);const l=o},92770:e=>{e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjEyOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjU2IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTI4IDdjLTI1Ljg3MSAwLTQ3LjgxNyAxNy40ODUtNTQuNzEzIDQxLjIwOS01Ljk3OTUtMTIuNDYxLTE4LjY0Mi0yMS4yMDktMzMuMjg3LTIxLjIwOS0yMC4zMDQgMC0zNyAxNi42OTYtMzcgMzdzMTYuNjk2IDM3IDM3IDM3YzE0LjY0NSAwIDI3LjMwOC04Ljc0ODEgMzMuMjg3LTIxLjIwOSA2Ljg5NTcgMjMuNzI0IDI4Ljg0MiA0MS4yMDkgNTQuNzEzIDQxLjIwOXM0Ny44MTctMTcuNDg1IDU0LjcxMy00MS4yMDljNS45Nzk1IDEyLjQ2MSAxOC42NDIgMjEuMjA5IDMzLjI4NyAyMS4yMDkgMjAuMzA0IDAgMzctMTYuNjk2IDM3LTM3cy0xNi42OTYtMzctMzctMzdjLTE0LjY0NSAwLTI3LjMwOCA4Ljc0ODEtMzMuMjg3IDIxLjIwOS02Ljg5NTctMjMuNzI0LTI4Ljg0Mi00MS4yMDktNTQuNzEzLTQxLjIwOXptMCAyMmMxOS40NiAwIDM1IDE1LjU0IDM1IDM1cy0xNS41NCAzNS0zNSAzNS0zNS0xNS41NC0zNS0zNSAxNS41NC0zNSAzNS0zNXptLTg4IDIwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6bTE3NiAwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6IiBjb2xvcj0iIzAwMDAwMCIgZmlsbD0iI2ZmZiIgc3R5bGU9Ii1pbmtzY2FwZS1zdHJva2U6bm9uZSIvPjwvc3ZnPgo="}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return a[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=a,e=[],i.O=(t,a,n,r)=>{if(!a){var o=1/0;for(u=0;u<e.length;u++){a=e[u][0],n=e[u][1],r=e[u][2];for(var l=!0,s=0;s<a.length;s++)(!1&r||o>=r)&&Object.keys(i.O).every((e=>i.O[e](a[s])))?a.splice(s--,1):(l=!1,r<o&&(o=r));if(l){e.splice(u--,1);var d=n();void 0!==d&&(t=d)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[a,n,r]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var a in t)i.o(t,a)&&!i.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=5544,(()=>{i.b=document.baseURI||self.location.href;var e={5544:0};i.O.j=t=>0===e[t];var t=(t,a)=>{var n,r,o=a[0],l=a[1],s=a[2],d=0;if(o.some((t=>0!==e[t]))){for(n in l)i.o(l,n)&&(i.m[n]=l[n]);if(s)var u=s(i)}for(t&&t(a);d<o.length;d++)r=o[d],i.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return i.O(u)},a=self.webpackChunknextcloud=self.webpackChunknextcloud||[];a.forEach(t.bind(null,0)),a.push=t.bind(null,a.push.bind(a))})(),i.nc=void 0;var r=i.O(void 0,[7874],(()=>i(62786)));r=i.O(r)})(); -//# sourceMappingURL=theming-admin-theming.js.map?v=476f9df93b30a4b3e447
\ No newline at end of file +(()=>{"use strict";var e,a={39941:(e,a,n)=>{var i=n(20144),r=n(79954),o=n(15961),l=n(4820),s=n(79753);const d=["color","logo","background","logoheader","favicon","disable-user-theming"],u={emits:["update:theming"],data:()=>({showSuccess:!1,errorMessage:""}),computed:{id(){return"admin-theming-".concat(this.name)}},methods:{reset(){this.showSuccess=!1,this.errorMessage=""},handleSuccess(){this.showSuccess=!0,setTimeout((()=>{this.showSuccess=!1}),2e3),d.includes(this.name)&&this.$emit("update:theming")}}},c={mixins:[u],watch:{value(e){this.localValue=e}},data(){return{localValue:this.value}},methods:{async save(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/updateStylesheet"),t=!0===this.localValue?"yes":!1===this.localValue?"no":this.localValue;try{await l.default.post(e,{setting:this.name,value:t}),this.$emit("update:value",this.localValue),this.handleSuccess()}catch(e){var a;this.errorMessage=null===(a=e.response.data.data)||void 0===a?void 0:a.message}},async undo(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/undoChanges");try{await l.default.post(e,{setting:this.name}),this.$emit("update:value",this.defaultValue),this.handleSuccess()}catch(e){var t;this.errorMessage=null===(t=e.response.data.data)||void 0===t?void 0:t.message}}}},m={name:"CheckboxField",components:{NcCheckboxRadioSwitch:o.rw,NcNoteCard:o.qf},mixins:[c],props:{name:{type:String,required:!0},value:{type:Boolean,required:!0},defaultValue:{type:Boolean,required:!0},displayName:{type:String,required:!0},label:{type:String,required:!0},description:{type:String,required:!0}}};var p=n(93379),g=n.n(p),h=n(7795),A=n.n(h),f=n(90569),v=n.n(f),y=n(3565),C=n.n(y),b=n(19216),N=n.n(b),x=n(44589),w=n.n(x),_=n(17083),k={};k.styleTagTransform=w(),k.setAttributes=C(),k.insert=v().bind(null,"head"),k.domAPI=A(),k.insertStyleElement=N(),g()(_.Z,k),_.Z&&_.Z.locals&&_.Z.locals;var S=n(51900);const M=(0,S.Z)(m,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcCheckboxRadioSwitch",{attrs:{type:"switch",id:e.id,checked:e.localValue},on:{"update:checked":[function(t){e.localValue=t},e.save]}},[e._v("\n\t\t\t"+e._s(e.label)+"\n\t\t")])],1),e._v(" "),t("p",{staticClass:"field__description"},[e._v(e._s(e.description))]),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"17145f08",null).exports;var T=n(20296),I=n(92425);const L={name:"ColorPickerField",components:{NcButton:o.P2,NcColorPicker:o.m,NcNoteCard:o.qf,Undo:I.default},mixins:[c],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},displayName:{type:String,required:!0}},methods:{debounceSave:(0,T.debounce)((async function(){await this.save()}),200)}};var U=n(3598),F={};F.styleTagTransform=w(),F.setAttributes=C(),F.insert=v().bind(null,"head"),F.domAPI=A(),F.insertStyleElement=N(),g()(U.Z,F),U.Z&&U.Z.locals&&U.Z.locals;const D=(0,S.Z)(L,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcColorPicker",{attrs:{value:e.localValue,"advanced-fields":!0},on:{"update:value":[function(t){e.localValue=t},e.debounceSave]}},[t("NcButton",{staticClass:"field__button",attrs:{type:"primary",id:e.id,"aria-label":e.t("theming","Select a custom color"),"data-admin-theming-setting-primary-color-picker":""}},[e._v("\n\t\t\t\t"+e._s(e.value)+"\n\t\t\t")])],1),e._v(" "),e.value!==e.defaultValue?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-primary-color-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e()],1),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e()],1)}),[],!1,null,"73de0887",null).exports;var j=n(57612),V=n(75762);const z={name:"FileInputField",components:{Delete:j.Z,NcButton:o.P2,NcLoadingIcon:o.lb,NcNoteCard:o.qf,Undo:I.default,Upload:V.Z},mixins:[u],props:{name:{type:String,required:!0},mimeName:{type:String,required:!0},mimeValue:{type:String,required:!0},defaultMimeValue:{type:String,required:!0},displayName:{type:String,required:!0},ariaLabel:{type:String,required:!0}},data:()=>({showLoading:!1}),computed:{showReset(){return this.mimeValue!==this.defaultMimeValue},showRemove(){if("background"===this.name){if(this.mimeValue.startsWith("image/"))return!0;if(this.mimeValue===this.defaultMimeValue)return!0}return!1}},methods:{activateLocalFilePicker(){this.reset(),this.$refs.input.value=null,this.$refs.input.click()},async onChange(e){const t=e.target.files[0],a=new FormData;a.append("key",this.name),a.append("image",t);const n=(0,s.generateUrl)("/apps/theming/ajax/uploadImage");try{this.showLoading=!0,await l.default.post(n,a),this.showLoading=!1,this.$emit("update:mime-value",t.type),this.handleSuccess()}catch(e){var i;this.showLoading=!1,this.errorMessage=null===(i=e.response.data.data)||void 0===i?void 0:i.message}},async undo(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/undoChanges");try{await l.default.post(e,{setting:this.mimeName}),this.$emit("update:mime-value",this.defaultMimeValue),this.handleSuccess()}catch(e){var t;this.errorMessage=null===(t=e.response.data.data)||void 0===t?void 0:t.message}},async removeBackground(){this.reset();const e=(0,s.generateUrl)("/apps/theming/ajax/updateStylesheet");try{await l.default.post(e,{setting:this.mimeName,value:"backgroundColor"}),this.$emit("update:mime-value","backgroundColor"),this.handleSuccess()}catch(e){var t;this.errorMessage=null===(t=e.response.data.data)||void 0===t?void 0:t.message}}}},E=z;var P=n(78169),B={};B.styleTagTransform=w(),B.setAttributes=C(),B.insert=v().bind(null,"head"),B.domAPI=A(),B.insertStyleElement=N(),g()(P.Z,B),P.Z&&P.Z.locals&&P.Z.locals;const O=(0,S.Z)(E,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("label",{attrs:{for:e.id}},[e._v(e._s(e.displayName))]),e._v(" "),t("div",{staticClass:"field__row"},[t("NcButton",{attrs:{type:"secondary",id:e.id,"aria-label":e.ariaLabel,"data-admin-theming-setting-file-picker":""},on:{click:e.activateLocalFilePicker},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Upload",{attrs:{size:20}})]},proxy:!0}])},[e._v("\n\t\t\t"+e._s(e.t("theming","Upload"))+"\n\t\t")]),e._v(" "),e.showReset?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Reset to default"),"data-admin-theming-setting-file-reset":""},on:{click:e.undo},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Undo",{attrs:{size:20}})]},proxy:!0}],null,!1,33666776)}):e._e(),e._v(" "),e.showRemove?t("NcButton",{attrs:{type:"tertiary","aria-label":e.t("theming","Remove background image"),"data-admin-theming-setting-file-remove":""},on:{click:e.removeBackground},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)}):e._e(),e._v(" "),e.showLoading?t("NcLoadingIcon",{staticClass:"field__loading-icon",attrs:{size:20}}):e._e()],1),e._v(" "),"logoheader"!==e.name&&"favicon"!==e.name||e.mimeValue===e.defaultMimeValue?e._e():t("div",{staticClass:"field__preview",class:{"field__preview--logoheader":"logoheader"===e.name,"field__preview--favicon":"favicon"===e.name}}),e._v(" "),e.errorMessage?t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.errorMessage))])]):e._e(),e._v(" "),t("input",{ref:"input",attrs:{type:"file"},on:{change:e.onChange}})],1)}),[],!1,null,"3d620660",null).exports,Z={name:"TextField",components:{NcTextField:o.h3},mixins:[c],props:{name:{type:String,required:!0},value:{type:String,required:!0},defaultValue:{type:String,required:!0},type:{type:String,required:!0},displayName:{type:String,required:!0},placeholder:{type:String,required:!0},maxlength:{type:Number,required:!0}}};var R=n(75012),Y={};Y.styleTagTransform=w(),Y.setAttributes=C(),Y.insert=v().bind(null,"head"),Y.domAPI=A(),Y.insertStyleElement=N(),g()(R.Z,Y),R.Z&&R.Z.locals&&R.Z.locals;const q=(0,S.Z)(Z,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"field"},[t("NcTextField",{attrs:{value:e.localValue,label:e.displayName,"label-visible":!0,placeholder:e.placeholder,type:e.type,maxlength:e.maxlength,spellcheck:!1,success:e.showSuccess,error:Boolean(e.errorMessage),"helper-text":e.errorMessage,"show-trailing-button":e.value!==e.defaultValue,"trailing-button-icon":"undo"},on:{"update:value":function(t){e.localValue=t},"trailing-button-click":e.undo,keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.save.apply(null,arguments)},blur:e.save}})],1)}),[],!1,null,"21244e1d",null).exports,{backgroundMime:G,canThemeIcons:$,color:W,docUrl:H,docUrlIcons:Q,faviconMime:X,isThemable:J,legalNoticeUrl:K,logoheaderMime:ee,logoMime:te,name:ae,notThemableErrorMessage:ne,privacyPolicyUrl:ie,slogan:re,url:oe,userThemingDisabled:le}=(0,r.j)("theming","adminThemingParameters"),se=[{name:"name",value:ae,defaultValue:"Nextcloud",type:"text",displayName:t("theming","Name"),placeholder:t("theming","Name"),maxlength:250},{name:"url",value:oe,defaultValue:"https://nextcloud.com",type:"url",displayName:t("theming","Web link"),placeholder:"https://…",maxlength:500},{name:"slogan",value:re,defaultValue:t("theming","a safe home for all your data"),type:"text",displayName:t("theming","Slogan"),placeholder:t("theming","Slogan"),maxlength:500}],de={name:"color",value:W,defaultValue:"#0082c9",displayName:t("theming","Color")},ue=[{name:"logo",mimeName:"logoMime",mimeValue:te,defaultMimeValue:"",displayName:t("theming","Logo"),ariaLabel:t("theming","Upload new logo")},{name:"background",mimeName:"backgroundMime",mimeValue:G,defaultMimeValue:"",displayName:t("theming","Background and login image"),ariaLabel:t("theming","Upload new background and login image")}],ce=[{name:"imprintUrl",value:K,defaultValue:"",type:"url",displayName:t("theming","Legal notice link"),placeholder:"https://…",maxlength:500},{name:"privacyUrl",value:ie,defaultValue:"",type:"url",displayName:t("theming","Privacy policy link"),placeholder:"https://…",maxlength:500}],me=[{name:"logoheader",mimeName:"logoheaderMime",mimeValue:ee,defaultMimeValue:"",displayName:t("theming","Header logo"),ariaLabel:t("theming","Upload new header logo")},{name:"favicon",mimeName:"faviconMime",mimeValue:X,defaultMimeValue:"",displayName:t("theming","Favicon"),ariaLabel:t("theming","Upload new favicon")}],pe={name:"disable-user-theming",value:le,defaultValue:!1,displayName:t("theming","User settings"),label:t("theming","Disable user theming"),description:t("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},ge={name:"AdminTheming",components:{CheckboxField:M,ColorPickerField:D,FileInputField:O,NcNoteCard:o.qf,NcSettingsSection:o.gE,TextField:q},emits:["update:theming"],data:()=>({textFields:se,colorPickerField:de,fileInputFields:ue,advancedTextFields:ce,advancedFileInputFields:me,userThemingField:pe,canThemeIcons:$,docUrl:H,docUrlIcons:Q,isThemable:J,notThemableErrorMessage:ne})};var he=n(46967),Ae={};Ae.styleTagTransform=w(),Ae.setAttributes=C(),Ae.insert=v().bind(null,"head"),Ae.domAPI=A(),Ae.insertStyleElement=N(),g()(he.Z,Ae),he.Z&&he.Z.locals&&he.Z.locals;const fe=(0,S.Z)(ge,(function(){var e=this,t=e._self._c;return t("section",[t("NcSettingsSection",{attrs:{title:e.t("theming","Theming"),description:e.t("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),"doc-url":e.docUrl,"data-admin-theming-settings":""}},[t("div",{staticClass:"admin-theming"},[e.isThemable?e._e():t("NcNoteCard",{attrs:{type:"error","show-alert":!0}},[t("p",[e._v(e._s(e.notThemableErrorMessage))])]),e._v(" "),e._l(e.textFields,(function(a){return t("TextField",{key:a.name,attrs:{"data-admin-theming-setting-field":a.name,"default-value":a.defaultValue,"display-name":a.displayName,maxlength:a.maxlength,name:a.name,placeholder:a.placeholder,type:a.type,value:a.value},on:{"update:value":function(t){return e.$set(a,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("ColorPickerField",{attrs:{name:e.colorPickerField.name,"default-value":e.colorPickerField.defaultValue,"display-name":e.colorPickerField.displayName,value:e.colorPickerField.value,"data-admin-theming-setting-primary-color":""},on:{"update:value":function(t){return e.$set(e.colorPickerField,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e._l(e.fileInputFields,(function(a){return t("FileInputField",{key:a.name,attrs:{"aria-label":a.ariaLabel,"data-admin-theming-setting-file":a.name,"default-mime-value":a.defaultMimeValue,"display-name":a.displayName,"mime-name":a.mimeName,"mime-value":a.mimeValue,name:a.name},on:{"update:mimeValue":function(t){return e.$set(a,"mimeValue",t)},"update:mime-value":function(t){return e.$set(a,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("div",{staticClass:"admin-theming__preview",attrs:{"data-admin-theming-preview":""}},[t("div",{staticClass:"admin-theming__preview-logo",attrs:{"data-admin-theming-preview-logo":""}})])],2)]),e._v(" "),t("NcSettingsSection",{attrs:{title:e.t("theming","Advanced options")}},[t("div",{staticClass:"admin-theming-advanced"},[e._l(e.advancedTextFields,(function(a){return t("TextField",{key:a.name,attrs:{name:a.name,value:a.value,"default-value":a.defaultValue,type:a.type,"display-name":a.displayName,placeholder:a.placeholder,maxlength:a.maxlength},on:{"update:value":function(t){return e.$set(a,"value",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),e._l(e.advancedFileInputFields,(function(a){return t("FileInputField",{key:a.name,attrs:{name:a.name,"mime-name":a.mimeName,"mime-value":a.mimeValue,"default-mime-value":a.defaultMimeValue,"display-name":a.displayName,"aria-label":a.ariaLabel},on:{"update:mimeValue":function(t){return e.$set(a,"mimeValue",t)},"update:mime-value":function(t){return e.$set(a,"mimeValue",t)},"update:theming":function(t){return e.$emit("update:theming")}}})})),e._v(" "),t("CheckboxField",{attrs:{name:e.userThemingField.name,value:e.userThemingField.value,"default-value":e.userThemingField.defaultValue,"display-name":e.userThemingField.displayName,label:e.userThemingField.label,description:e.userThemingField.description,"data-admin-theming-setting-disable-user-theming":""},on:{"update:theming":function(t){return e.$emit("update:theming")}}}),e._v(" "),e.canThemeIcons?e._e():t("a",{attrs:{href:e.docUrlIcons,rel:"noreferrer noopener"}},[t("em",[e._v(e._s(e.t("theming","Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.")))])])],2)])],1)}),[],!1,null,"7da8f9a4",null).exports;i.default.prototype.OC=OC,i.default.prototype.t=t;const ve=new(i.default.extend(fe));ve.$mount("#admin-theming"),ve.$on("update:theming",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const a=e.cloneNode();a.href=t.toString(),a.onload=()=>e.remove(),document.head.append(a)}))}))},46967:(e,t,a)=>{a.d(t,{Z:()=>m});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r),l=a(61667),s=a.n(l),d=new URL(a(92770),a.b),u=o()(i()),c=s()(d);u.push([e.id,".admin-theming[data-v-7da8f9a4],.admin-theming-advanced[data-v-7da8f9a4]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-7da8f9a4]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-element-default, #0082c9);background-image:var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-7da8f9a4]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url("+c+"))}","",{version:3,sources:["webpack://./apps/theming/src/AdminTheming.vue"],names:[],mappings:"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,8DAAA,CAKA,iIAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA",sourcesContent:["\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-element-default, #0082c9);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const m=u},17083:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/CheckboxField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const l=o},3598:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,'.field[data-v-73de0887]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-73de0887]{display:flex;gap:0 4px}.field__button[data-v-73de0887]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-73de0887]:hover::after{background-color:#fff;content:"";position:absolute;width:100%;height:100%;opacity:.2;filter:var(--primary-invert-if-bright)}.field__button[data-v-73de0887] *{z-index:1}',"",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/ColorPickerField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCxBD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CAIA,6CACC,qBAAA,CACA,UAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,sCAAA,CAID,kCACC,SAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\n\t\t// emulated hover state because it would not make sense\n\t\t// to create a dedicated global variable for the color-primary-default\n\t\t&:hover::after {\n\t\t\tbackground-color: white;\n\t\t\tcontent: \"\";\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\topacity: .2;\n\t\t\tfilter: var(--primary-invert-if-bright);\n\t\t}\n\n\t\t// Above the ::after\n\t\t&::v-deep * {\n\t\t\tz-index: 1;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const l=o},78169:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,".field[data-v-3d620660]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-3d620660]{display:flex;gap:0 4px}.field__loading-icon[data-v-3d620660]{width:44px;height:44px}.field__preview[data-v-3d620660]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-3d620660]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-3d620660]{background-image:var(--image-favicon)}input[type=file][data-v-3d620660]{display:none}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/shared/field.scss","webpack://./apps/theming/src/components/admin/FileInputField.vue"],names:[],mappings:"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA",sourcesContent:["/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n.field {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px 0;\n\n\t&__row {\n\t\tdisplay: flex;\n\t\tgap: 0 4px;\n\t}\n}\n","\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n"],sourceRoot:""}]);const l=o},75012:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(87537),i=a.n(n),r=a(23645),o=a.n(r)()(i());o.push([e.id,".field[data-v-21244e1d]{max-width:400px}","",{version:3,sources:["webpack://./apps/theming/src/components/admin/TextField.vue"],names:[],mappings:"AACA,wBACC,eAAA",sourcesContent:["\n.field {\n\tmax-width: 400px;\n}\n"],sourceRoot:""}]);const l=o},92770:e=>{e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjEyOCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMjU2IDEyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTI4IDdjLTI1Ljg3MSAwLTQ3LjgxNyAxNy40ODUtNTQuNzEzIDQxLjIwOS01Ljk3OTUtMTIuNDYxLTE4LjY0Mi0yMS4yMDktMzMuMjg3LTIxLjIwOS0yMC4zMDQgMC0zNyAxNi42OTYtMzcgMzdzMTYuNjk2IDM3IDM3IDM3YzE0LjY0NSAwIDI3LjMwOC04Ljc0ODEgMzMuMjg3LTIxLjIwOSA2Ljg5NTcgMjMuNzI0IDI4Ljg0MiA0MS4yMDkgNTQuNzEzIDQxLjIwOXM0Ny44MTctMTcuNDg1IDU0LjcxMy00MS4yMDljNS45Nzk1IDEyLjQ2MSAxOC42NDIgMjEuMjA5IDMzLjI4NyAyMS4yMDkgMjAuMzA0IDAgMzctMTYuNjk2IDM3LTM3cy0xNi42OTYtMzctMzctMzdjLTE0LjY0NSAwLTI3LjMwOCA4Ljc0ODEtMzMuMjg3IDIxLjIwOS02Ljg5NTctMjMuNzI0LTI4Ljg0Mi00MS4yMDktNTQuNzEzLTQxLjIwOXptMCAyMmMxOS40NiAwIDM1IDE1LjU0IDM1IDM1cy0xNS41NCAzNS0zNSAzNS0zNS0xNS41NC0zNS0zNSAxNS41NC0zNSAzNS0zNXptLTg4IDIwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6bTE3NiAwYzguNDE0NiAwIDE1IDYuNTg1NCAxNSAxNXMtNi41ODU0IDE1LTE1IDE1LTE1LTYuNTg1NC0xNS0xNSA2LjU4NTQtMTUgMTUtMTV6IiBjb2xvcj0iIzAwMDAwMCIgZmlsbD0iI2ZmZiIgc3R5bGU9Ii1pbmtzY2FwZS1zdHJva2U6bm9uZSIvPjwvc3ZnPgo="}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return a[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=a,e=[],i.O=(t,a,n,r)=>{if(!a){var o=1/0;for(u=0;u<e.length;u++){a=e[u][0],n=e[u][1],r=e[u][2];for(var l=!0,s=0;s<a.length;s++)(!1&r||o>=r)&&Object.keys(i.O).every((e=>i.O[e](a[s])))?a.splice(s--,1):(l=!1,r<o&&(o=r));if(l){e.splice(u--,1);var d=n();void 0!==d&&(t=d)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[a,n,r]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var a in t)i.o(t,a)&&!i.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=5544,(()=>{i.b=document.baseURI||self.location.href;var e={5544:0};i.O.j=t=>0===e[t];var t=(t,a)=>{var n,r,o=a[0],l=a[1],s=a[2],d=0;if(o.some((t=>0!==e[t]))){for(n in l)i.o(l,n)&&(i.m[n]=l[n]);if(s)var u=s(i)}for(t&&t(a);d<o.length;d++)r=o[d],i.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return i.O(u)},a=self.webpackChunknextcloud=self.webpackChunknextcloud||[];a.forEach(t.bind(null,0)),a.push=t.bind(null,a.push.bind(a))})(),i.nc=void 0;var r=i.O(void 0,[7874],(()=>i(39941)));r=i.O(r)})(); +//# sourceMappingURL=theming-admin-theming.js.map?v=fdbfde3bed38d36c82c2
\ No newline at end of file diff --git a/dist/theming-admin-theming.js.map b/dist/theming-admin-theming.js.map index 8c96508c46a..34ff1ae63ae 100644 --- a/dist/theming-admin-theming.js.map +++ b/dist/theming-admin-theming.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-admin-theming.js?v=476f9df93b30a4b3e447","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/mixins/admin/FieldMixin.js","webpack:///nextcloud/apps/theming/src/mixins/admin/TextValueMixin.js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?c5ca","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?8981","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?f479","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?fdaf","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?49ae","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?977d","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?2d6f","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?fcb2","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?4d24","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?2236","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?c7b6","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?e6c1","webpack:///nextcloud/apps/theming/src/AdminTheming.vue","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?8b95","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?6138","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?e575","webpack:///nextcloud/apps/theming/src/admin-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=style&index=0&id=4f7ac635&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst styleRefreshFields = [\n\t'color',\n\t'logo',\n\t'background',\n\t'logoheader',\n\t'favicon',\n\t'disable-user-theming',\n]\n\nexport default {\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowSuccess: false,\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `admin-theming-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\treset() {\n\t\t\tthis.showSuccess = false\n\t\t\tthis.errorMessage = ''\n\t\t},\n\n\t\thandleSuccess() {\n\t\t\tthis.showSuccess = true\n\t\t\tsetTimeout(() => { this.showSuccess = false }, 2000)\n\t\t\tif (styleRefreshFields.includes(this.name)) {\n\t\t\t\tthis.$emit('update:theming')\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport FieldMixin from './FieldMixin.js'\n\nexport default {\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\twatch: {\n\t\tvalue(value) {\n\t\t\tthis.localValue = value\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync save() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\t// Convert boolean to string as server expects string value\n\t\t\tconst valueToPost = this.localValue === true ? 'yes' : this.localValue === false ? 'no' : this.localValue\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t\tvalue: valueToPost,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.localValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.defaultValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:checked.sync=\"localValue\"\n\t\t\t\t@update:checked=\"save\">\n\t\t\t\t{{ label }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\n\t\t<p class=\"field__description\">{{ description }}</p>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport {\n\tNcCheckboxRadioSwitch,\n\tNcNoteCard,\n} from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'CheckboxField',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CheckboxField.vue?vue&type=template&id=17145f08&scoped=true&\"\nimport script from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17145f08\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"id\":_vm.id,\"checked\":_vm.localValue},on:{\"update:checked\":[function($event){_vm.localValue=$event},_vm.save]}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"field__description\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcColorPicker',{attrs:{\"value\":_vm.localValue,\"advanced-fields\":true},on:{\"update:value\":[function($event){_vm.localValue=$event},_vm.debounceSave]}},[_c('NcButton',{staticClass:\"field__button\",attrs:{\"type\":\"primary\",\"id\":_vm.id,\"aria-label\":_vm.t('theming', 'Select a custom color'),\"data-admin-theming-setting-primary-color-picker\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.value)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.value !== _vm.defaultValue)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-primary-color-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e()],1),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcColorPicker :value.sync=\"localValue\"\n\t\t\t\t:advanced-fields=\"true\"\n\t\t\t\t@update:value=\"debounceSave\">\n\t\t\t\t<NcButton class=\"field__button\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:id=\"id\"\n\t\t\t\t\t:aria-label=\"t('theming', 'Select a custom color')\"\n\t\t\t\t\tdata-admin-theming-setting-primary-color-picker>\n\t\t\t\t\t{{ value }}\n\t\t\t\t</NcButton>\n\t\t\t</NcColorPicker>\n\t\t\t<NcButton v-if=\"value !== defaultValue\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\tdata-admin-theming-setting-primary-color-reset\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport { debounce } from 'debounce'\nimport {\n\tNcButton,\n\tNcColorPicker,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'ColorPickerField',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcColorPicker,\n\t\tNcNoteCard,\n\t\tUndo,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tdebounceSave: debounce(async function() {\n\t\t\tawait this.save()\n\t\t}, 200),\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\n\t\t// emulated hover state because it would not make sense\n\t\t// to create a dedicated global variable for the color-primary-default\n\t\t&:hover::after {\n\t\t\tbackground-color: white;\n\t\t\tcontent: \"\";\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\topacity: .2;\n\t\t\tfilter: var(--primary-invert-if-bright);\n\t\t}\n\n\t\t// Above the ::after\n\t\t&::v-deep * {\n\t\t\tz-index: 1;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ColorPickerField.vue?vue&type=template&id=73de0887&scoped=true&\"\nimport script from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nexport * from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73de0887\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id,\"aria-label\":_vm.ariaLabel,\"data-admin-theming-setting-file-picker\":\"\"},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Upload'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.showReset)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-file-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Remove background image'),\"data-admin-theming-setting-file-remove\":\"\"},on:{\"click\":_vm.removeBackground},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e(),_vm._v(\" \"),(_vm.showLoading)?_c('NcLoadingIcon',{staticClass:\"field__loading-icon\",attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),((_vm.name === 'logoheader' || _vm.name === 'favicon') && _vm.mimeValue !== _vm.defaultMimeValue)?_c('div',{staticClass:\"field__preview\",class:{\n\t\t\t'field__preview--logoheader': _vm.name === 'logoheader',\n\t\t\t'field__preview--favicon': _vm.name === 'favicon',\n\t\t}}):_vm._e(),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e(),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"type\":\"file\"},on:{\"change\":_vm.onChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t\tdata-admin-theming-setting-file-picker\n\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('theming', 'Upload') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showReset\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\tdata-admin-theming-setting-file-reset\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showRemove\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Remove background image')\"\n\t\t\t\tdata-admin-theming-setting-file-remove\n\t\t\t\t@click=\"removeBackground\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcLoadingIcon v-if=\"showLoading\"\n\t\t\t\tclass=\"field__loading-icon\"\n\t\t\t\t:size=\"20\" />\n\t\t</div>\n\n\t\t<div v-if=\"(name === 'logoheader' || name === 'favicon') && mimeValue !== defaultMimeValue\"\n\t\t\tclass=\"field__preview\"\n\t\t\t:class=\"{\n\t\t\t\t'field__preview--logoheader': name === 'logoheader',\n\t\t\t\t'field__preview--favicon': name === 'favicon',\n\t\t\t}\" />\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\n\t\t<input ref=\"input\"\n\t\t\ttype=\"file\"\n\t\t\t@change=\"onChange\">\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport {\n\tNcButton,\n\tNcLoadingIcon,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\nimport Upload from 'vue-material-design-icons/Upload.vue'\n\nimport FieldMixin from '../../mixins/admin/FieldMixin.js'\n\nexport default {\n\tname: 'FileInputField',\n\n\tcomponents: {\n\t\tDelete,\n\t\tNcButton,\n\t\tNcLoadingIcon,\n\t\tNcNoteCard,\n\t\tUndo,\n\t\tUpload,\n\t},\n\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultMimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowLoading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowReset() {\n\t\t\treturn this.mimeValue !== this.defaultMimeValue\n\t\t},\n\n\t\tshowRemove() {\n\t\t\tif (this.name === 'background') {\n\t\t\t\tif (this.mimeValue.startsWith('image/')) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.mimeValue === this.defaultMimeValue) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\tthis.reset()\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tasync onChange(e) {\n\t\t\tconst file = e.target.files[0]\n\n\t\t\tconst formData = new FormData()\n\t\t\tformData.append('key', this.name)\n\t\t\tformData.append('image', file)\n\n\t\t\tconst url = generateUrl('/apps/theming/ajax/uploadImage')\n\t\t\ttry {\n\t\t\t\tthis.showLoading = true\n\t\t\t\tawait axios.post(url, formData)\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.$emit('update:mime-value', file.type)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', this.defaultMimeValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t\tvalue: 'backgroundColor',\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', 'backgroundColor')\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileInputField.vue?vue&type=template&id=3d620660&scoped=true&\"\nimport script from \"./FileInputField.vue?vue&type=script&lang=js&\"\nexport * from \"./FileInputField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d620660\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<NcTextField :value.sync=\"localValue\"\n\t\t\t:label=\"displayName\"\n\t\t\t:label-visible=\"true\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t:type=\"type\"\n\t\t\t:maxlength=\"maxlength\"\n\t\t\t:spellcheck=\"false\"\n\t\t\t:success=\"showSuccess\"\n\t\t\t:error=\"Boolean(errorMessage)\"\n\t\t\t:helper-text=\"errorMessage\"\n\t\t\t:show-trailing-button=\"value !== defaultValue\"\n\t\t\ttrailing-button-icon=\"undo\"\n\t\t\t@trailing-button-click=\"undo\"\n\t\t\t@keydown.enter=\"save\"\n\t\t\t@blur=\"save\" />\n\t</div>\n</template>\n\n<script>\nimport { NcTextField } from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'TextField',\n\n\tcomponents: {\n\t\tNcTextField,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.field {\n\tmax-width: 400px;\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TextField.vue?vue&type=template&id=21244e1d&scoped=true&\"\nimport script from \"./TextField.vue?vue&type=script&lang=js&\"\nexport * from \"./TextField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21244e1d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('NcTextField',{attrs:{\"value\":_vm.localValue,\"label\":_vm.displayName,\"label-visible\":true,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"maxlength\":_vm.maxlength,\"spellcheck\":false,\"success\":_vm.showSuccess,\"error\":Boolean(_vm.errorMessage),\"helper-text\":_vm.errorMessage,\"show-trailing-button\":_vm.value !== _vm.defaultValue,\"trailing-button-icon\":\"undo\"},on:{\"update:value\":function($event){_vm.localValue=$event},\"trailing-button-click\":_vm.undo,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.save.apply(null, arguments)},\"blur\":_vm.save}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Theming')\"\n\t\t\t:description=\"t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.')\"\n\t\t\t:doc-url=\"docUrl\"\n\t\t\tdata-admin-theming-settings>\n\t\t\t<div class=\"admin-theming\">\n\t\t\t\t<NcNoteCard v-if=\"!isThemable\"\n\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t:show-alert=\"true\">\n\t\t\t\t\t<p>{{ notThemableErrorMessage }}</p>\n\t\t\t\t</NcNoteCard>\n\n\t\t\t\t<!-- Name, web link, slogan... fields -->\n\t\t\t\t<TextField v-for=\"field in textFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:data-admin-theming-setting-field=\"field.name\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\n\t\t\t\t<!-- Primary color picker -->\n\t\t\t\t<ColorPickerField :name=\"colorPickerField.name\"\n\t\t\t\t\t:default-value=\"colorPickerField.defaultValue\"\n\t\t\t\t\t:display-name=\"colorPickerField.displayName\"\n\t\t\t\t\t:value.sync=\"colorPickerField.value\"\n\t\t\t\t\tdata-admin-theming-setting-primary-color\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\n\t\t\t\t<!-- Default background picker -->\n\t\t\t\t<FileInputField v-for=\"field in fileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t:data-admin-theming-setting-file=\"field.name\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<div class=\"admin-theming__preview\" data-admin-theming-preview>\n\t\t\t\t\t<div class=\"admin-theming__preview-logo\" data-admin-theming-preview-logo />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t\t<NcSettingsSection :title=\"t('theming', 'Advanced options')\">\n\t\t\t<div class=\"admin-theming-advanced\">\n\t\t\t\t<TextField v-for=\"field in advancedTextFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<FileInputField v-for=\"field in advancedFileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<CheckboxField :name=\"userThemingField.name\"\n\t\t\t\t\t:value=\"userThemingField.value\"\n\t\t\t\t\t:default-value=\"userThemingField.defaultValue\"\n\t\t\t\t\t:display-name=\"userThemingField.displayName\"\n\t\t\t\t\t:label=\"userThemingField.label\"\n\t\t\t\t\t:description=\"userThemingField.description\"\n\t\t\t\t\tdata-admin-theming-setting-disable-user-theming\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<a v-if=\"!canThemeIcons\"\n\t\t\t\t\t:href=\"docUrlIcons\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t<em>{{ t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.') }}</em>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport {\n\tNcNoteCard,\n\tNcSettingsSection,\n} from '@nextcloud/vue'\nimport CheckboxField from './components/admin/CheckboxField.vue'\nimport ColorPickerField from './components/admin/ColorPickerField.vue'\nimport FileInputField from './components/admin/FileInputField.vue'\nimport TextField from './components/admin/TextField.vue'\n\nconst {\n\tbackgroundMime,\n\tcanThemeIcons,\n\tcolor,\n\tdocUrl,\n\tdocUrlIcons,\n\tfaviconMime,\n\tisThemable,\n\tlegalNoticeUrl,\n\tlogoheaderMime,\n\tlogoMime,\n\tname,\n\tnotThemableErrorMessage,\n\tprivacyPolicyUrl,\n\tslogan,\n\turl,\n\tuserThemingDisabled,\n} = loadState('theming', 'adminThemingParameters')\n\nconst textFields = [\n\t{\n\t\tname: 'name',\n\t\tvalue: name,\n\t\tdefaultValue: 'Nextcloud',\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Name'),\n\t\tplaceholder: t('theming', 'Name'),\n\t\tmaxlength: 250,\n\t},\n\t{\n\t\tname: 'url',\n\t\tvalue: url,\n\t\tdefaultValue: 'https://nextcloud.com',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Web link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'slogan',\n\t\tvalue: slogan,\n\t\tdefaultValue: t('theming', 'a safe home for all your data'),\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Slogan'),\n\t\tplaceholder: t('theming', 'Slogan'),\n\t\tmaxlength: 500,\n\t},\n]\n\nconst colorPickerField = {\n\tname: 'color',\n\tvalue: color,\n\tdefaultValue: '#0082c9',\n\tdisplayName: t('theming', 'Color'),\n}\n\nconst fileInputFields = [\n\t{\n\t\tname: 'logo',\n\t\tmimeName: 'logoMime',\n\t\tmimeValue: logoMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Logo'),\n\t\tariaLabel: t('theming', 'Upload new logo'),\n\t},\n\t{\n\t\tname: 'background',\n\t\tmimeName: 'backgroundMime',\n\t\tmimeValue: backgroundMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Background and login image'),\n\t\tariaLabel: t('theming', 'Upload new background and login image'),\n\t},\n]\n\nconst advancedTextFields = [\n\t{\n\t\tname: 'imprintUrl',\n\t\tvalue: legalNoticeUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Legal notice link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'privacyUrl',\n\t\tvalue: privacyPolicyUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Privacy policy link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n]\n\nconst advancedFileInputFields = [\n\t{\n\t\tname: 'logoheader',\n\t\tmimeName: 'logoheaderMime',\n\t\tmimeValue: logoheaderMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Header logo'),\n\t\tariaLabel: t('theming', 'Upload new header logo'),\n\t},\n\t{\n\t\tname: 'favicon',\n\t\tmimeName: 'faviconMime',\n\t\tmimeValue: faviconMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Favicon'),\n\t\tariaLabel: t('theming', 'Upload new favicon'),\n\t},\n]\n\nconst userThemingField = {\n\tname: 'disable-user-theming',\n\tvalue: userThemingDisabled,\n\tdefaultValue: false,\n\tdisplayName: t('theming', 'User settings'),\n\tlabel: t('theming', 'Disable user theming'),\n\tdescription: t('theming', 'Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.'),\n}\n\nexport default {\n\tname: 'AdminTheming',\n\n\tcomponents: {\n\t\tCheckboxField,\n\t\tColorPickerField,\n\t\tFileInputField,\n\t\tNcNoteCard,\n\t\tNcSettingsSection,\n\t\tTextField,\n\t},\n\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\ttextFields,\n\t\t\tcolorPickerField,\n\t\t\tfileInputFields,\n\t\t\tadvancedTextFields,\n\t\t\tadvancedFileInputFields,\n\t\t\tuserThemingField,\n\n\t\t\tcanThemeIcons,\n\t\t\tdocUrl,\n\t\t\tdocUrlIcons,\n\t\t\tisThemable,\n\t\t\tnotThemableErrorMessage,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-default, #0082c9);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=4f7ac635&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=4f7ac635&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTheming.vue?vue&type=template&id=4f7ac635&scoped=true&\"\nimport script from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTheming.vue?vue&type=style&index=0&id=4f7ac635&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4f7ac635\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Theming'),\"description\":_vm.t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.'),\"doc-url\":_vm.docUrl,\"data-admin-theming-settings\":\"\"}},[_c('div',{staticClass:\"admin-theming\"},[(!_vm.isThemable)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.notThemableErrorMessage))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.textFields),function(field){return _c('TextField',{key:field.name,attrs:{\"data-admin-theming-setting-field\":field.name,\"default-value\":field.defaultValue,\"display-name\":field.displayName,\"maxlength\":field.maxlength,\"name\":field.name,\"placeholder\":field.placeholder,\"type\":field.type,\"value\":field.value},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('ColorPickerField',{attrs:{\"name\":_vm.colorPickerField.name,\"default-value\":_vm.colorPickerField.defaultValue,\"display-name\":_vm.colorPickerField.displayName,\"value\":_vm.colorPickerField.value,\"data-admin-theming-setting-primary-color\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.colorPickerField, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),_vm._l((_vm.fileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"aria-label\":field.ariaLabel,\"data-admin-theming-setting-file\":field.name,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"name\":field.name},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('div',{staticClass:\"admin-theming__preview\",attrs:{\"data-admin-theming-preview\":\"\"}},[_c('div',{staticClass:\"admin-theming__preview-logo\",attrs:{\"data-admin-theming-preview-logo\":\"\"}})])],2)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Advanced options')}},[_c('div',{staticClass:\"admin-theming-advanced\"},[_vm._l((_vm.advancedTextFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_vm._l((_vm.advancedFileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('CheckboxField',{attrs:{\"name\":_vm.userThemingField.name,\"value\":_vm.userThemingField.value,\"default-value\":_vm.userThemingField.defaultValue,\"display-name\":_vm.userThemingField.displayName,\"label\":_vm.userThemingField.label,\"description\":_vm.userThemingField.description,\"data-admin-theming-setting-disable-user-theming\":\"\"},on:{\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),(!_vm.canThemeIcons)?_c('a',{attrs:{\"href\":_vm.docUrlIcons,\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.')))])]):_vm._e()],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './AdminTheming.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#admin-theming')\ntheming.$on('update:theming', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../core/img/logo/logo.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".admin-theming[data-v-4f7ac635],.admin-theming-advanced[data-v-4f7ac635]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-4f7ac635]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-default, #0082c9);background-image:var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-4f7ac635]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \"))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/AdminTheming.vue\"],\"names\":[],\"mappings\":\"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,sDAAA,CAKA,iIAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA\",\"sourcesContent\":[\"\\n.admin-theming,\\n.admin-theming-advanced {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n}\\n\\n.admin-theming {\\n\\t&__preview {\\n\\t\\twidth: 230px;\\n\\t\\theight: 140px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center;\\n\\t\\ttext-align: center;\\n\\t\\tmargin-top: 10px;\\n\\t\\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\\n\\t\\t But without the user variables. That way the admin can preview the render as guest*/\\n\\t\\t/* As guest, there is no user color color-background-plain */\\n\\t\\tbackground-color: var(--color-primary-default, #0082c9);\\n\\t\\t/* As guest, there is no user background (--image-background)\\n\\t\\t1. Empty background if defined\\n\\t\\t2. Else default background\\n\\t\\t3. Finally default gradient (should not happened, the background is always defined anyway) */\\n\\t\\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\\n\\n\\t\\t&-logo {\\n\\t\\t\\twidth: 20%;\\n\\t\\t\\theight: 20%;\\n\\t\\t\\tmargin-top: 20px;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tbackground-size: contain;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/CheckboxField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (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 Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-73de0887]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-73de0887]{display:flex;gap:0 4px}.field__button[data-v-73de0887]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-73de0887]:hover::after{background-color:#fff;content:\\\"\\\";position:absolute;width:100%;height:100%;opacity:.2;filter:var(--primary-invert-if-bright)}.field__button[data-v-73de0887] *{z-index:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/ColorPickerField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCxBD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CAIA,6CACC,qBAAA,CACA,UAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,sCAAA,CAID,kCACC,SAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (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 Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t// Override default NcButton styles\\n\\t&__button {\\n\\t\\twidth: 230px !important;\\n\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\t\\tbackground-color: var(--color-primary-default) !important;\\n\\n\\t\\t// emulated hover state because it would not make sense\\n\\t\\t// to create a dedicated global variable for the color-primary-default\\n\\t\\t&:hover::after {\\n\\t\\t\\tbackground-color: white;\\n\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\topacity: .2;\\n\\t\\t\\tfilter: var(--primary-invert-if-bright);\\n\\t\\t}\\n\\n\\t\\t// Above the ::after\\n\\t\\t&::v-deep * {\\n\\t\\t\\tz-index: 1;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-3d620660]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-3d620660]{display:flex;gap:0 4px}.field__loading-icon[data-v-3d620660]{width:44px;height:44px}.field__preview[data-v-3d620660]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-3d620660]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-3d620660]{background-image:var(--image-favicon)}input[type=file][data-v-3d620660]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/FileInputField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (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 Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__loading-icon {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__preview {\\n\\t\\twidth: 70px;\\n\\t\\theight: 70px;\\n\\t\\tbackground-size: contain;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t&--logoheader {\\n\\t\\t\\tbackground-image: var(--image-logoheader);\\n\\t\\t}\\n\\n\\t\\t&--favicon {\\n\\t\\t\\tbackground-image: var(--image-favicon);\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-21244e1d]{max-width:400px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/TextField.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,eAAA\",\"sourcesContent\":[\"\\n.field {\\n\\tmax-width: 400px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5544;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5544: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(62786)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","styleRefreshFields","emits","data","showSuccess","errorMessage","computed","id","concat","this","name","methods","reset","handleSuccess","setTimeout","includes","$emit","mixins","FieldMixin","watch","value","localValue","async","url","generateUrl","valueToPost","axios","setting","e","_e$response$data$data","response","message","defaultValue","_e$response$data$data2","components","NcCheckboxRadioSwitch","NcNoteCard","TextValueMixin","props","type","String","required","Boolean","displayName","label","description","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","attrs","_v","_s","on","$event","save","_e","NcButton","NcColorPicker","Undo","debounceSave","debounce","t","undo","scopedSlots","_u","key","fn","proxy","Delete","NcLoadingIcon","Upload","mimeName","mimeValue","defaultMimeValue","ariaLabel","showLoading","showReset","showRemove","startsWith","activateLocalFilePicker","$refs","input","click","file","target","files","formData","FormData","append","_e$response$data$data3","removeBackground","class","ref","onChange","NcTextField","placeholder","maxlength","Number","indexOf","_k","keyCode","apply","arguments","backgroundMime","canThemeIcons","color","docUrl","docUrlIcons","faviconMime","isThemable","legalNoticeUrl","logoheaderMime","logoMime","notThemableErrorMessage","privacyPolicyUrl","slogan","userThemingDisabled","loadState","textFields","colorPickerField","fileInputFields","advancedTextFields","advancedFileInputFields","userThemingField","CheckboxField","ColorPickerField","FileInputField","NcSettingsSection","TextField","_l","field","$set","Vue","OC","theming","App","$mount","$on","refreshStyles","document","head","querySelectorAll","forEach","theme","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"theming-admin-theming.js?v=fdbfde3bed38d36c82c2","mappings":";uBAAIA,+ECsBJ,MAAMC,EAAqB,CAC1B,QACA,OACA,aACA,aACA,UACA,wBAGD,GACCC,MAAO,CACN,kBAGDC,KAAIA,KACI,CACNC,aAAa,EACbC,aAAc,KAIhBC,SAAU,CACTC,KACC,MAAO,iBAAPC,OAAwBC,KAAKC,KAC9B,GAGDC,QAAS,CACRC,QACCH,KAAKL,aAAc,EACnBK,KAAKJ,aAAe,EACrB,EAEAQ,gBACCJ,KAAKL,aAAc,EACnBU,YAAW,KAAQL,KAAKL,aAAc,CAAK,GAAI,KAC3CH,EAAmBc,SAASN,KAAKC,OACpCD,KAAKO,MAAM,iBAEb,IClCF,GACCC,OAAQ,CACPC,GAGDC,MAAO,CACNC,MAAMA,GACLX,KAAKY,WAAaD,CACnB,GAGDjB,OACC,MAAO,CACNkB,WAAYZ,KAAKW,MAEnB,EAEAT,QAAS,CACRW,aACCb,KAAKG,QACL,MAAMW,GAAMC,EAAAA,EAAAA,aAAY,uCAElBC,GAAkC,IAApBhB,KAAKY,WAAsB,OAA4B,IAApBZ,KAAKY,WAAuB,KAAOZ,KAAKY,WAC/F,UACOK,EAAAA,QAAAA,KAAWH,EAAK,CACrBI,QAASlB,KAAKC,KACdU,MAAOK,IAERhB,KAAKO,MAAM,eAAgBP,KAAKY,YAChCZ,KAAKI,eACN,CAAE,MAAOe,GAAG,IAAAC,EACXpB,KAAKJ,aAAmC,QAAvBwB,EAAGD,EAAEE,SAAS3B,KAAKA,YAAI,IAAA0B,OAAA,EAApBA,EAAsBE,OAC3C,CACD,EAEAT,aACCb,KAAKG,QACL,MAAMW,GAAMC,EAAAA,EAAAA,aAAY,kCACxB,UACOE,EAAAA,QAAAA,KAAWH,EAAK,CACrBI,QAASlB,KAAKC,OAEfD,KAAKO,MAAM,eAAgBP,KAAKuB,cAChCvB,KAAKI,eACN,CAAE,MAAOe,GAAG,IAAAK,EACXxB,KAAKJ,aAAmC,QAAvB4B,EAAGL,EAAEE,SAAS3B,KAAKA,YAAI,IAAA8B,OAAA,EAApBA,EAAsBF,OAC3C,CACD,IC1E8L,ECoDhM,CACArB,KAAA,gBAEAwB,WAAA,CACAC,sBAAA,KACAC,WAAAA,EAAAA,IAGAnB,OAAA,CACAoB,GAGAC,MAAA,CACA5B,KAAA,CACA6B,KAAAC,OACAC,UAAA,GAEArB,MAAA,CACAmB,KAAAG,QACAD,UAAA,GAEAT,aAAA,CACAO,KAAAG,QACAD,UAAA,GAEAE,YAAA,CACAJ,KAAAC,OACAC,UAAA,GAEAG,MAAA,CACAL,KAAAC,OACAC,UAAA,GAEAI,YAAA,CACAN,KAAAC,OACAC,UAAA,0IC5EIK,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,0BCPlD,SAXgB,OACd,GCTW,WAAkB,IAAIM,EAAI3C,KAAK4C,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,QAAQ,CAACG,MAAM,CAAC,IAAMJ,EAAI7C,KAAK,CAAC6C,EAAIK,GAAGL,EAAIM,GAAGN,EAAIT,gBAAgBS,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,wBAAwB,CAACG,MAAM,CAAC,KAAO,SAAS,GAAKJ,EAAI7C,GAAG,QAAU6C,EAAI/B,YAAYsC,GAAG,CAAC,iBAAiB,CAAC,SAASC,GAAQR,EAAI/B,WAAWuC,CAAM,EAAER,EAAIS,QAAQ,CAACT,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIR,OAAO,aAAa,GAAGQ,EAAIK,GAAG,KAAKJ,EAAG,IAAI,CAACE,YAAY,sBAAsB,CAACH,EAAIK,GAAGL,EAAIM,GAAGN,EAAIP,gBAAgBO,EAAIK,GAAG,KAAML,EAAI/C,aAAcgD,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAI/C,mBAAmB+C,EAAIU,MAAM,EAC5pB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBhC,0BCmEA,MCnEmM,EDmEnM,CACApD,KAAA,mBAEAwB,WAAA,CACA6B,SAAA,KACAC,cAAA,IACA5B,WAAA,KACA6B,KAAAA,EAAAA,SAGAhD,OAAA,CACAoB,GAGAC,MAAA,CACA5B,KAAA,CACA6B,KAAAC,OACAC,UAAA,GAEArB,MAAA,CACAmB,KAAAC,OACAC,UAAA,GAEAT,aAAA,CACAO,KAAAC,OACAC,UAAA,GAEAE,YAAA,CACAJ,KAAAC,OACAC,UAAA,IAIA9B,QAAA,CACAuD,cAAAC,EAAAA,EAAAA,WAAA,uBACA,KAAAN,MACA,wBE5FI,EAAU,CAAC,EAEf,EAAQd,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WCPlD,SAXgB,OACd,GJTW,WAAkB,IAAIC,EAAI3C,KAAK4C,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,QAAQ,CAACG,MAAM,CAAC,IAAMJ,EAAI7C,KAAK,CAAC6C,EAAIK,GAAGL,EAAIM,GAAGN,EAAIT,gBAAgBS,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQJ,EAAI/B,WAAW,mBAAkB,GAAMsC,GAAG,CAAC,eAAe,CAAC,SAASC,GAAQR,EAAI/B,WAAWuC,CAAM,EAAER,EAAIc,gBAAgB,CAACb,EAAG,WAAW,CAACE,YAAY,gBAAgBC,MAAM,CAAC,KAAO,UAAU,GAAKJ,EAAI7C,GAAG,aAAa6C,EAAIgB,EAAE,UAAW,yBAAyB,kDAAkD,KAAK,CAAChB,EAAIK,GAAG,aAAaL,EAAIM,GAAGN,EAAIhC,OAAO,eAAe,GAAGgC,EAAIK,GAAG,KAAML,EAAIhC,QAAUgC,EAAIpB,aAAcqB,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,WAAW,aAAaJ,EAAIgB,EAAE,UAAW,oBAAoB,iDAAiD,IAAIT,GAAG,CAAC,MAAQP,EAAIiB,MAAMC,YAAYlB,EAAImB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,OAAO,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEkB,OAAM,IAAO,MAAK,EAAM,YAAYtB,EAAIU,MAAM,GAAGV,EAAIK,GAAG,KAAML,EAAI/C,aAAcgD,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAI/C,mBAAmB+C,EAAIU,MAAM,EACtlC,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnBhC,0BC6FA,SACApD,KAAA,iBAEAwB,WAAA,CACAyC,OAAA,IACAZ,SAAA,KACAa,cAAA,KACAxC,WAAA,KACA6B,KAAA,UACAY,OAAAA,EAAAA,GAGA5D,OAAA,CACAC,GAGAoB,MAAA,CACA5B,KAAA,CACA6B,KAAAC,OACAC,UAAA,GAEAqC,SAAA,CACAvC,KAAAC,OACAC,UAAA,GAEAsC,UAAA,CACAxC,KAAAC,OACAC,UAAA,GAEAuC,iBAAA,CACAzC,KAAAC,OACAC,UAAA,GAEAE,YAAA,CACAJ,KAAAC,OACAC,UAAA,GAEAwC,UAAA,CACA1C,KAAAC,OACAC,UAAA,IAIAtC,KAAAA,KACA,CACA+E,aAAA,IAIA5E,SAAA,CACA6E,YACA,YAAAJ,YAAA,KAAAC,gBACA,EAEAI,aACA,uBAAA1E,KAAA,CACA,QAAAqE,UAAAM,WAAA,UACA,SAEA,QAAAN,YAAA,KAAAC,iBACA,QAEA,CACA,QACA,GAGArE,QAAA,CACA2E,0BACA,KAAA1E,QAEA,KAAA2E,MAAAC,MAAApE,MAAA,KACA,KAAAmE,MAAAC,MAAAC,OACA,EAEA,eAAA7D,GACA,MAAA8D,EAAA9D,EAAA+D,OAAAC,MAAA,GAEAC,EAAA,IAAAC,SACAD,EAAAE,OAAA,WAAArF,MACAmF,EAAAE,OAAA,QAAAL,GAEA,MAAAnE,GAAAC,EAAAA,EAAAA,aAAA,kCACA,IACA,KAAA0D,aAAA,QACAxD,EAAAA,QAAAA,KAAAH,EAAAsE,GACA,KAAAX,aAAA,EACA,KAAAlE,MAAA,oBAAA0E,EAAAnD,MACA,KAAA1B,eACA,OAAAe,GAAA,IAAAC,EACA,KAAAqD,aAAA,EACA,KAAA7E,aAAA,QAAAwB,EAAAD,EAAAE,SAAA3B,KAAAA,YAAA,IAAA0B,OAAA,EAAAA,EAAAE,OACA,CACA,EAEA,aACA,KAAAnB,QACA,MAAAW,GAAAC,EAAAA,EAAAA,aAAA,kCACA,UACAE,EAAAA,QAAAA,KAAAH,EAAA,CACAI,QAAA,KAAAmD,WAEA,KAAA9D,MAAA,yBAAAgE,kBACA,KAAAnE,eACA,OAAAe,GAAA,IAAAK,EACA,KAAA5B,aAAA,QAAA4B,EAAAL,EAAAE,SAAA3B,KAAAA,YAAA,IAAA8B,OAAA,EAAAA,EAAAF,OACA,CACA,EAEA,yBACA,KAAAnB,QACA,MAAAW,GAAAC,EAAAA,EAAAA,aAAA,uCACA,UACAE,EAAAA,QAAAA,KAAAH,EAAA,CACAI,QAAA,KAAAmD,SACA1D,MAAA,oBAEA,KAAAJ,MAAA,uCACA,KAAAH,eACA,OAAAe,GAAA,IAAAoE,EACA,KAAA3F,aAAA,QAAA2F,EAAApE,EAAAE,SAAA3B,KAAAA,YAAA,IAAA6F,OAAA,EAAAA,EAAAjE,OACA,CACA,ICvNiM,mBCW7L,EAAU,CAAC,EAEf,EAAQgB,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WCPlD,SAXgB,OACd,GJTW,WAAkB,IAAIC,EAAI3C,KAAK4C,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,QAAQ,CAACG,MAAM,CAAC,IAAMJ,EAAI7C,KAAK,CAAC6C,EAAIK,GAAGL,EAAIM,GAAGN,EAAIT,gBAAgBS,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACF,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,YAAY,GAAKJ,EAAI7C,GAAG,aAAa6C,EAAI6B,UAAU,yCAAyC,IAAItB,GAAG,CAAC,MAAQP,EAAIkC,yBAAyBhB,YAAYlB,EAAImB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,SAAS,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEkB,OAAM,MAAS,CAACtB,EAAIK,GAAG,WAAWL,EAAIM,GAAGN,EAAIgB,EAAE,UAAW,WAAW,YAAYhB,EAAIK,GAAG,KAAML,EAAI+B,UAAW9B,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,WAAW,aAAaJ,EAAIgB,EAAE,UAAW,oBAAoB,wCAAwC,IAAIT,GAAG,CAAC,MAAQP,EAAIiB,MAAMC,YAAYlB,EAAImB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,OAAO,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEkB,OAAM,IAAO,MAAK,EAAM,YAAYtB,EAAIU,KAAKV,EAAIK,GAAG,KAAML,EAAIgC,WAAY/B,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,WAAW,aAAaJ,EAAIgB,EAAE,UAAW,2BAA2B,yCAAyC,IAAIT,GAAG,CAAC,MAAQP,EAAI6C,kBAAkB3B,YAAYlB,EAAImB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACpB,EAAG,SAAS,CAACG,MAAM,CAAC,KAAO,MAAM,EAAEkB,OAAM,IAAO,MAAK,EAAM,cAActB,EAAIU,KAAKV,EAAIK,GAAG,KAAML,EAAI8B,YAAa7B,EAAG,gBAAgB,CAACE,YAAY,sBAAsBC,MAAM,CAAC,KAAO,MAAMJ,EAAIU,MAAM,GAAGV,EAAIK,GAAG,KAAoB,eAAbL,EAAI1C,MAAsC,YAAb0C,EAAI1C,MAAuB0C,EAAI2B,YAAc3B,EAAI4B,iBAGr4C5B,EAAIU,KAHm5CT,EAAG,MAAM,CAACE,YAAY,iBAAiB2C,MAAM,CACv8C,6BAA2C,eAAb9C,EAAI1C,KAClC,0BAAwC,YAAb0C,EAAI1C,QACnB0C,EAAIK,GAAG,KAAML,EAAI/C,aAAcgD,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAI/C,mBAAmB+C,EAAIU,KAAKV,EAAIK,GAAG,KAAKJ,EAAG,QAAQ,CAAC8C,IAAI,QAAQ3C,MAAM,CAAC,KAAO,QAAQG,GAAG,CAAC,OAASP,EAAIgD,aAAa,EACxP,GACsB,IIOpB,EACA,KACA,WACA,MAI8B,QCnB4J,EC+C5L,CACA1F,KAAA,YAEAwB,WAAA,CACAmE,YAAAA,EAAAA,IAGApF,OAAA,CACAoB,GAGAC,MAAA,CACA5B,KAAA,CACA6B,KAAAC,OACAC,UAAA,GAEArB,MAAA,CACAmB,KAAAC,OACAC,UAAA,GAEAT,aAAA,CACAO,KAAAC,OACAC,UAAA,GAEAF,KAAA,CACAA,KAAAC,OACAC,UAAA,GAEAE,YAAA,CACAJ,KAAAC,OACAC,UAAA,GAEA6D,YAAA,CACA/D,KAAAC,OACAC,UAAA,GAEA8D,UAAA,CACAhE,KAAAiE,OACA/D,UAAA,oBC1EI,EAAU,CAAC,EAEf,EAAQM,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WCPlD,SAXgB,OACd,GCTW,WAAkB,IAAIC,EAAI3C,KAAK4C,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,cAAc,CAACG,MAAM,CAAC,MAAQJ,EAAI/B,WAAW,MAAQ+B,EAAIT,YAAY,iBAAgB,EAAK,YAAcS,EAAIkD,YAAY,KAAOlD,EAAIb,KAAK,UAAYa,EAAImD,UAAU,YAAa,EAAM,QAAUnD,EAAIhD,YAAY,MAAQsC,QAAQU,EAAI/C,cAAc,cAAc+C,EAAI/C,aAAa,uBAAuB+C,EAAIhC,QAAUgC,EAAIpB,aAAa,uBAAuB,QAAQ2B,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAI/B,WAAWuC,CAAM,EAAE,wBAAwBR,EAAIiB,KAAK,QAAU,SAAST,GAAQ,OAAIA,EAAOrB,KAAKkE,QAAQ,QAAQrD,EAAIsD,GAAG9C,EAAO+C,QAAQ,QAAQ,GAAG/C,EAAOY,IAAI,SAAgB,KAAYpB,EAAIS,KAAK+C,MAAM,KAAMC,UAAU,EAAE,KAAOzD,EAAIS,SAAS,EAC/tB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SEwG1B,eACNiD,EAAA,cACAC,EAAA,MACAC,EAAA,OACAC,EAAA,YACAC,EAAA,YACAC,EAAA,WACAC,EAAA,eACAC,EAAA,eACAC,GAAA,SACAC,GACA7G,KAAA,2BACA8G,GAAA,iBACAC,GAAA,OACAC,GAAA,IACAnG,GAAA,oBACAoG,KACAC,EAAAA,EAAAA,GAAA,oCAEAC,GAAA,CACA,CACAnH,KAAA,OACAU,MAAAV,GACAsB,aAAA,YACAO,KAAA,OACAI,YAAAyB,EAAA,kBACAkC,YAAAlC,EAAA,kBACAmC,UAAA,KAEA,CACA7F,KAAA,MACAU,MAAAG,GACAS,aAAA,wBACAO,KAAA,MACAI,YAAAyB,EAAA,sBACAkC,YAAA,YACAC,UAAA,KAEA,CACA7F,KAAA,SACAU,MAAAsG,GACA1F,aAAAoC,EAAA,2CACA7B,KAAA,OACAI,YAAAyB,EAAA,oBACAkC,YAAAlC,EAAA,oBACAmC,UAAA,MAIAuB,GAAA,CACApH,KAAA,QACAU,MAAA4F,EACAhF,aAAA,UACAW,YAAAyB,EAAA,oBAGA2D,GAAA,CACA,CACArH,KAAA,OACAoE,SAAA,WACAC,UAAAwC,GACAvC,iBAAA,GACArC,YAAAyB,EAAA,kBACAa,UAAAb,EAAA,8BAEA,CACA1D,KAAA,aACAoE,SAAA,iBACAC,UAAA+B,EACA9B,iBAAA,GACArC,YAAAyB,EAAA,wCACAa,UAAAb,EAAA,qDAIA4D,GAAA,CACA,CACAtH,KAAA,aACAU,MAAAiG,EACArF,aAAA,GACAO,KAAA,MACAI,YAAAyB,EAAA,+BACAkC,YAAA,YACAC,UAAA,KAEA,CACA7F,KAAA,aACAU,MAAAqG,GACAzF,aAAA,GACAO,KAAA,MACAI,YAAAyB,EAAA,iCACAkC,YAAA,YACAC,UAAA,MAIA0B,GAAA,CACA,CACAvH,KAAA,aACAoE,SAAA,iBACAC,UAAAuC,GACAtC,iBAAA,GACArC,YAAAyB,EAAA,yBACAa,UAAAb,EAAA,qCAEA,CACA1D,KAAA,UACAoE,SAAA,cACAC,UAAAoC,EACAnC,iBAAA,GACArC,YAAAyB,EAAA,qBACAa,UAAAb,EAAA,kCAIA8D,GAAA,CACAxH,KAAA,uBACAU,MAAAuG,GACA3F,cAAA,EACAW,YAAAyB,EAAA,2BACAxB,MAAAwB,EAAA,kCACAvB,YAAAuB,EAAA,oLCpPmL,GDuPnL,CACA1D,KAAA,eAEAwB,WAAA,CACAiG,cAAA,EACAC,iBAAA,EACAC,eAAA,EACAjG,WAAA,KACAkG,kBAAA,KACAC,UAAAA,GAGArI,MAAA,CACA,kBAGAC,KAAAA,KACA,CACA0H,cACAC,oBACAC,mBACAC,sBACAC,2BACAC,oBAEAnB,gBACAE,SACAC,cACAE,aACAI,8CEzQI,GAAU,CAAC,EAEf,GAAQzE,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAI3C,KAAK4C,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACA,EAAG,oBAAoB,CAACG,MAAM,CAAC,MAAQJ,EAAIgB,EAAE,UAAW,WAAW,YAAchB,EAAIgB,EAAE,UAAW,+IAA+I,UAAUhB,EAAI6D,OAAO,8BAA8B,KAAK,CAAC5D,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAAGH,EAAIgE,WAAgIhE,EAAIU,KAAxHT,EAAG,aAAa,CAACG,MAAM,CAAC,KAAO,QAAQ,cAAa,IAAO,CAACH,EAAG,IAAI,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIoE,8BAAuCpE,EAAIK,GAAG,KAAKL,EAAIoF,GAAIpF,EAAIyE,YAAY,SAASY,GAAO,OAAOpF,EAAG,YAAY,CAACmB,IAAIiE,EAAM/H,KAAK8C,MAAM,CAAC,mCAAmCiF,EAAM/H,KAAK,gBAAgB+H,EAAMzG,aAAa,eAAeyG,EAAM9F,YAAY,UAAY8F,EAAMlC,UAAU,KAAOkC,EAAM/H,KAAK,YAAc+H,EAAMnC,YAAY,KAAOmC,EAAMlG,KAAK,MAAQkG,EAAMrH,OAAOuC,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIsF,KAAKD,EAAO,QAAS7E,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOR,EAAIpC,MAAM,iBAAiB,IAAI,IAAGoC,EAAIK,GAAG,KAAKJ,EAAG,mBAAmB,CAACG,MAAM,CAAC,KAAOJ,EAAI0E,iBAAiBpH,KAAK,gBAAgB0C,EAAI0E,iBAAiB9F,aAAa,eAAeoB,EAAI0E,iBAAiBnF,YAAY,MAAQS,EAAI0E,iBAAiB1G,MAAM,2CAA2C,IAAIuC,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIsF,KAAKtF,EAAI0E,iBAAkB,QAASlE,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOR,EAAIpC,MAAM,iBAAiB,KAAKoC,EAAIK,GAAG,KAAKL,EAAIoF,GAAIpF,EAAI2E,iBAAiB,SAASU,GAAO,OAAOpF,EAAG,iBAAiB,CAACmB,IAAIiE,EAAM/H,KAAK8C,MAAM,CAAC,aAAaiF,EAAMxD,UAAU,kCAAkCwD,EAAM/H,KAAK,qBAAqB+H,EAAMzD,iBAAiB,eAAeyD,EAAM9F,YAAY,YAAY8F,EAAM3D,SAAS,aAAa2D,EAAM1D,UAAU,KAAO0D,EAAM/H,MAAMiD,GAAG,CAAC,mBAAmB,SAASC,GAAQ,OAAOR,EAAIsF,KAAKD,EAAO,YAAa7E,EAAO,EAAE,oBAAoB,SAASA,GAAQ,OAAOR,EAAIsF,KAAKD,EAAO,YAAa7E,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOR,EAAIpC,MAAM,iBAAiB,IAAI,IAAGoC,EAAIK,GAAG,KAAKJ,EAAG,MAAM,CAACE,YAAY,yBAAyBC,MAAM,CAAC,6BAA6B,KAAK,CAACH,EAAG,MAAM,CAACE,YAAY,8BAA8BC,MAAM,CAAC,kCAAkC,SAAS,KAAKJ,EAAIK,GAAG,KAAKJ,EAAG,oBAAoB,CAACG,MAAM,CAAC,MAAQJ,EAAIgB,EAAE,UAAW,sBAAsB,CAACf,EAAG,MAAM,CAACE,YAAY,0BAA0B,CAACH,EAAIoF,GAAIpF,EAAI4E,oBAAoB,SAASS,GAAO,OAAOpF,EAAG,YAAY,CAACmB,IAAIiE,EAAM/H,KAAK8C,MAAM,CAAC,KAAOiF,EAAM/H,KAAK,MAAQ+H,EAAMrH,MAAM,gBAAgBqH,EAAMzG,aAAa,KAAOyG,EAAMlG,KAAK,eAAekG,EAAM9F,YAAY,YAAc8F,EAAMnC,YAAY,UAAYmC,EAAMlC,WAAW5C,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIsF,KAAKD,EAAO,QAAS7E,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOR,EAAIpC,MAAM,iBAAiB,IAAI,IAAGoC,EAAIK,GAAG,KAAKL,EAAIoF,GAAIpF,EAAI6E,yBAAyB,SAASQ,GAAO,OAAOpF,EAAG,iBAAiB,CAACmB,IAAIiE,EAAM/H,KAAK8C,MAAM,CAAC,KAAOiF,EAAM/H,KAAK,YAAY+H,EAAM3D,SAAS,aAAa2D,EAAM1D,UAAU,qBAAqB0D,EAAMzD,iBAAiB,eAAeyD,EAAM9F,YAAY,aAAa8F,EAAMxD,WAAWtB,GAAG,CAAC,mBAAmB,SAASC,GAAQ,OAAOR,EAAIsF,KAAKD,EAAO,YAAa7E,EAAO,EAAE,oBAAoB,SAASA,GAAQ,OAAOR,EAAIsF,KAAKD,EAAO,YAAa7E,EAAO,EAAE,iBAAiB,SAASA,GAAQ,OAAOR,EAAIpC,MAAM,iBAAiB,IAAI,IAAGoC,EAAIK,GAAG,KAAKJ,EAAG,gBAAgB,CAACG,MAAM,CAAC,KAAOJ,EAAI8E,iBAAiBxH,KAAK,MAAQ0C,EAAI8E,iBAAiB9G,MAAM,gBAAgBgC,EAAI8E,iBAAiBlG,aAAa,eAAeoB,EAAI8E,iBAAiBvF,YAAY,MAAQS,EAAI8E,iBAAiBtF,MAAM,YAAcQ,EAAI8E,iBAAiBrF,YAAY,kDAAkD,IAAIc,GAAG,CAAC,iBAAiB,SAASC,GAAQ,OAAOR,EAAIpC,MAAM,iBAAiB,KAAKoC,EAAIK,GAAG,KAAOL,EAAI2D,cAAgR3D,EAAIU,KAArQT,EAAG,IAAI,CAACG,MAAM,CAAC,KAAOJ,EAAI8D,YAAY,IAAM,wBAAwB,CAAC7D,EAAG,KAAK,CAACD,EAAIK,GAAGL,EAAIM,GAAGN,EAAIgB,EAAE,UAAW,qJAA8J,MAAM,EAC7+H,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEOhCuE,EAAAA,QAAAA,UAAAA,GAAmBC,GACnBD,EAAAA,QAAAA,UAAAA,EAAkBvE,EAElB,MACMyE,GAAU,IADHF,EAAAA,QAAAA,OAAWG,KAExBD,GAAQE,OAAO,kBACfF,GAAQG,IAAI,kBCViBC,KAE5B,IAAIC,SAASC,KAAKC,iBAAiB,eAAeC,SAAQC,IACzD,MAAM/H,EAAM,IAAIgI,IAAID,EAAME,MAC1BjI,EAAIkI,aAAaC,IAAI,IAAKC,KAAKC,OAC/B,MAAMC,EAAWP,EAAMQ,YACvBD,EAASL,KAAOjI,EAAIwI,WACpBF,EAASG,OAAS,IAAMV,EAAMW,SAC9Bf,SAASC,KAAKpD,OAAO8D,EAAS,GAC7B,sGC3BCK,EAAgC,IAAIX,IAAI,cACxCY,EAA0B,IAA4B,KACtDC,EAAqC,IAAgCF,GAEzEC,EAAwBE,KAAK,CAACC,EAAO/J,GAAI,6qBAA+qB6J,EAAqC,MAAO,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iDAAiD,MAAQ,GAAG,SAAW,6NAA6N,eAAiB,CAAC,4xCAA4xC,WAAa,MAE93E,+ECPID,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO/J,GAAI,qMAAsM,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,mEAAmE,MAAQ,GAAG,SAAW,oFAAoF,eAAiB,CAAC,w8BAAw8B,yHAAyH,WAAa,MAEzlD,8ECJI4J,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO/J,GAAI,qfAAwf,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,sEAAsE,MAAQ,GAAG,SAAW,yMAAyM,eAAiB,CAAC,w8BAAw8B,wrBAAwrB,WAAa,MAElkF,+ECJI4J,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO/J,GAAI,miBAAoiB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,oEAAoE,MAAQ,GAAG,SAAW,oNAAoN,eAAiB,CAAC,w8BAAw8B,kfAAkf,WAAa,MAEj7E,+ECJI4J,QAA0B,GAA4B,KAE1DA,EAAwBE,KAAK,CAACC,EAAO/J,GAAI,2CAA4C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+DAA+D,MAAQ,GAAG,SAAW,kBAAkB,eAAiB,CAAC,wCAAwC,WAAa,MAE9R,8nCCNIgK,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjDlK,GAAIkK,EACJI,QAAQ,EACRD,QAAS,CAAC,GAUX,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,OACf,CAGAJ,EAAoBQ,EAAIF,EnC5BpB9K,EAAW,GACfwK,EAAoBS,EAAI,CAACC,EAAQC,EAAU1G,EAAI2G,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIvL,EAASwL,OAAQD,IAAK,CACrCJ,EAAWnL,EAASuL,GAAG,GACvB9G,EAAKzE,EAASuL,GAAG,GACjBH,EAAWpL,EAASuL,GAAG,GAE3B,IAJA,IAGIE,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASK,OAAQE,MACpB,EAAXN,GAAsBC,GAAgBD,IAAaO,OAAOC,KAAKpB,EAAoBS,GAAGY,OAAOrH,GAASgG,EAAoBS,EAAEzG,GAAK2G,EAASO,MAC9IP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTL,EAAWC,IAAcA,EAAeD,IAG7C,GAAGK,EAAW,CACbzL,EAAS8L,OAAOP,IAAK,GACrB,IAAIQ,EAAItH,SACEkG,IAANoB,IAAiBb,EAASa,EAC/B,CACD,CACA,OAAOb,CArBP,CAJCE,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIvL,EAASwL,OAAQD,EAAI,GAAKvL,EAASuL,EAAI,GAAG,GAAKH,EAAUG,IAAKvL,EAASuL,GAAKvL,EAASuL,EAAI,GACrGvL,EAASuL,GAAK,CAACJ,EAAU1G,EAAI2G,EAuBjB,EoC3BdZ,EAAoBwB,EAAK1B,IACxB,IAAI2B,EAAS3B,GAAUA,EAAO4B,WAC7B,IAAO5B,EAAiB,QACxB,IAAM,EAEP,OADAE,EAAoB2B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdzB,EAAoB2B,EAAI,CAACvB,EAASyB,KACjC,IAAI,IAAI7H,KAAO6H,EACX7B,EAAoB8B,EAAED,EAAY7H,KAASgG,EAAoB8B,EAAE1B,EAASpG,IAC5EmH,OAAOY,eAAe3B,EAASpG,EAAK,CAAEgI,YAAY,EAAMC,IAAKJ,EAAW7H,IAE1E,ECNDgG,EAAoBkC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOlM,MAAQ,IAAImM,SAAS,cAAb,EAChB,CAAE,MAAOhL,GACR,GAAsB,iBAAXiL,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBrC,EAAoB8B,EAAI,CAACQ,EAAKC,IAAUpB,OAAOqB,UAAUC,eAAelC,KAAK+B,EAAKC,GCClFvC,EAAoBuB,EAAKnB,IACH,oBAAXsC,QAA0BA,OAAOC,aAC1CxB,OAAOY,eAAe3B,EAASsC,OAAOC,YAAa,CAAE/L,MAAO,WAE7DuK,OAAOY,eAAe3B,EAAS,aAAc,CAAExJ,OAAO,GAAO,ECL9DoJ,EAAoB4C,IAAO9C,IAC1BA,EAAO+C,MAAQ,GACV/C,EAAOgD,WAAUhD,EAAOgD,SAAW,IACjChD,GCHRE,EAAoBkB,EAAI,WCAxBlB,EAAoB+C,EAAIrE,SAASsE,SAAWC,KAAKC,SAASlE,KAK1D,IAAImE,EAAkB,CACrB,KAAM,GAaPnD,EAAoBS,EAAES,EAAKkC,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4B3N,KACvD,IAKIsK,EAAUmD,EALVzC,EAAWhL,EAAK,GAChB4N,EAAc5N,EAAK,GACnB6N,EAAU7N,EAAK,GAGIoL,EAAI,EAC3B,GAAGJ,EAAS8C,MAAM1N,GAAgC,IAAxBoN,EAAgBpN,KAAa,CACtD,IAAIkK,KAAYsD,EACZvD,EAAoB8B,EAAEyB,EAAatD,KACrCD,EAAoBQ,EAAEP,GAAYsD,EAAYtD,IAGhD,GAAGuD,EAAS,IAAI9C,EAAS8C,EAAQxD,EAClC,CAEA,IADGsD,GAA4BA,EAA2B3N,GACrDoL,EAAIJ,EAASK,OAAQD,IACzBqC,EAAUzC,EAASI,GAChBf,EAAoB8B,EAAEqB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOpD,EAAoBS,EAAEC,EAAO,EAGjCgD,EAAqBT,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FS,EAAmB7E,QAAQwE,EAAqBM,KAAK,KAAM,IAC3DD,EAAmB7D,KAAOwD,EAAqBM,KAAK,KAAMD,EAAmB7D,KAAK8D,KAAKD,QClDvF1D,EAAoB4D,QAAKzD,ECGzB,IAAI0D,EAAsB7D,EAAoBS,OAAEN,EAAW,CAAC,OAAO,IAAOH,EAAoB,SAC9F6D,EAAsB7D,EAAoBS,EAAEoD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/mixins/admin/FieldMixin.js","webpack:///nextcloud/apps/theming/src/mixins/admin/TextValueMixin.js","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?c5ca","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?8981","webpack://nextcloud/./apps/theming/src/components/admin/CheckboxField.vue?f479","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?fdaf","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?49ae","webpack://nextcloud/./apps/theming/src/components/admin/ColorPickerField.vue?977d","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?2d6f","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?fcb2","webpack://nextcloud/./apps/theming/src/components/admin/FileInputField.vue?4d24","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?2236","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?c7b6","webpack://nextcloud/./apps/theming/src/components/admin/TextField.vue?e6c1","webpack:///nextcloud/apps/theming/src/AdminTheming.vue","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?f651","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?6138","webpack://nextcloud/./apps/theming/src/AdminTheming.vue?e575","webpack:///nextcloud/apps/theming/src/admin-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/AdminTheming.vue?vue&type=style&index=0&id=7da8f9a4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/admin/TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst styleRefreshFields = [\n\t'color',\n\t'logo',\n\t'background',\n\t'logoheader',\n\t'favicon',\n\t'disable-user-theming',\n]\n\nexport default {\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshowSuccess: false,\n\t\t\terrorMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `admin-theming-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\treset() {\n\t\t\tthis.showSuccess = false\n\t\t\tthis.errorMessage = ''\n\t\t},\n\n\t\thandleSuccess() {\n\t\t\tthis.showSuccess = true\n\t\t\tsetTimeout(() => { this.showSuccess = false }, 2000)\n\t\t\tif (styleRefreshFields.includes(this.name)) {\n\t\t\t\tthis.$emit('update:theming')\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport FieldMixin from './FieldMixin.js'\n\nexport default {\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\twatch: {\n\t\tvalue(value) {\n\t\t\tthis.localValue = value\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync save() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\t// Convert boolean to string as server expects string value\n\t\t\tconst valueToPost = this.localValue === true ? 'yes' : this.localValue === false ? 'no' : this.localValue\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t\tvalue: valueToPost,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.localValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.name,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:value', this.defaultValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:checked.sync=\"localValue\"\n\t\t\t\t@update:checked=\"save\">\n\t\t\t\t{{ label }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\n\t\t<p class=\"field__description\">{{ description }}</p>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport {\n\tNcCheckboxRadioSwitch,\n\tNcNoteCard,\n} from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'CheckboxField',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdescription: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CheckboxField.vue?vue&type=template&id=17145f08&scoped=true&\"\nimport script from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nexport * from \"./CheckboxField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CheckboxField.vue?vue&type=style&index=0&id=17145f08&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17145f08\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"id\":_vm.id,\"checked\":_vm.localValue},on:{\"update:checked\":[function($event){_vm.localValue=$event},_vm.save]}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('p',{staticClass:\"field__description\"},[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcColorPicker',{attrs:{\"value\":_vm.localValue,\"advanced-fields\":true},on:{\"update:value\":[function($event){_vm.localValue=$event},_vm.debounceSave]}},[_c('NcButton',{staticClass:\"field__button\",attrs:{\"type\":\"primary\",\"id\":_vm.id,\"aria-label\":_vm.t('theming', 'Select a custom color'),\"data-admin-theming-setting-primary-color-picker\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.value)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.value !== _vm.defaultValue)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-primary-color-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e()],1),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcColorPicker :value.sync=\"localValue\"\n\t\t\t\t:advanced-fields=\"true\"\n\t\t\t\t@update:value=\"debounceSave\">\n\t\t\t\t<NcButton class=\"field__button\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:id=\"id\"\n\t\t\t\t\t:aria-label=\"t('theming', 'Select a custom color')\"\n\t\t\t\t\tdata-admin-theming-setting-primary-color-picker>\n\t\t\t\t\t{{ value }}\n\t\t\t\t</NcButton>\n\t\t\t</NcColorPicker>\n\t\t\t<NcButton v-if=\"value !== defaultValue\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\tdata-admin-theming-setting-primary-color-reset\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\t</div>\n</template>\n\n<script>\nimport { debounce } from 'debounce'\nimport {\n\tNcButton,\n\tNcColorPicker,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'ColorPickerField',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcColorPicker,\n\t\tNcNoteCard,\n\t\tUndo,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tdebounceSave: debounce(async function() {\n\t\t\tawait this.save()\n\t\t}, 200),\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t// Override default NcButton styles\n\t&__button {\n\t\twidth: 230px !important;\n\t\tborder-radius: var(--border-radius-large) !important;\n\t\tbackground-color: var(--color-primary-default) !important;\n\n\t\t// emulated hover state because it would not make sense\n\t\t// to create a dedicated global variable for the color-primary-default\n\t\t&:hover::after {\n\t\t\tbackground-color: white;\n\t\t\tcontent: \"\";\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\t\t\topacity: .2;\n\t\t\tfilter: var(--primary-invert-if-bright);\n\t\t}\n\n\t\t// Above the ::after\n\t\t&::v-deep * {\n\t\t\tz-index: 1;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ColorPickerField.vue?vue&type=template&id=73de0887&scoped=true&\"\nimport script from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nexport * from \"./ColorPickerField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ColorPickerField.vue?vue&type=style&index=0&id=73de0887&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73de0887\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('label',{attrs:{\"for\":_vm.id}},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),_c('div',{staticClass:\"field__row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\",\"id\":_vm.id,\"aria-label\":_vm.ariaLabel,\"data-admin-theming-setting-file-picker\":\"\"},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Upload'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.showReset)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Reset to default'),\"data-admin-theming-setting-file-reset\":\"\"},on:{\"click\":_vm.undo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Undo',{attrs:{\"size\":20}})]},proxy:true}],null,false,33666776)}):_vm._e(),_vm._v(\" \"),(_vm.showRemove)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('theming', 'Remove background image'),\"data-admin-theming-setting-file-remove\":\"\"},on:{\"click\":_vm.removeBackground},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e(),_vm._v(\" \"),(_vm.showLoading)?_c('NcLoadingIcon',{staticClass:\"field__loading-icon\",attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),((_vm.name === 'logoheader' || _vm.name === 'favicon') && _vm.mimeValue !== _vm.defaultMimeValue)?_c('div',{staticClass:\"field__preview\",class:{\n\t\t\t'field__preview--logoheader': _vm.name === 'logoheader',\n\t\t\t'field__preview--favicon': _vm.name === 'favicon',\n\t\t}}):_vm._e(),_vm._v(\" \"),(_vm.errorMessage)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e(),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"type\":\"file\"},on:{\"change\":_vm.onChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<label :for=\"id\">{{ displayName }}</label>\n\t\t<div class=\"field__row\">\n\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t:id=\"id\"\n\t\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t\tdata-admin-theming-setting-file-picker\n\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('theming', 'Upload') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showReset\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Reset to default')\"\n\t\t\t\tdata-admin-theming-setting-file-reset\n\t\t\t\t@click=\"undo\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Undo :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton v-if=\"showRemove\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\t:aria-label=\"t('theming', 'Remove background image')\"\n\t\t\t\tdata-admin-theming-setting-file-remove\n\t\t\t\t@click=\"removeBackground\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcLoadingIcon v-if=\"showLoading\"\n\t\t\t\tclass=\"field__loading-icon\"\n\t\t\t\t:size=\"20\" />\n\t\t</div>\n\n\t\t<div v-if=\"(name === 'logoheader' || name === 'favicon') && mimeValue !== defaultMimeValue\"\n\t\t\tclass=\"field__preview\"\n\t\t\t:class=\"{\n\t\t\t\t'field__preview--logoheader': name === 'logoheader',\n\t\t\t\t'field__preview--favicon': name === 'favicon',\n\t\t\t}\" />\n\n\t\t<NcNoteCard v-if=\"errorMessage\"\n\t\t\ttype=\"error\"\n\t\t\t:show-alert=\"true\">\n\t\t\t<p>{{ errorMessage }}</p>\n\t\t</NcNoteCard>\n\n\t\t<input ref=\"input\"\n\t\t\ttype=\"file\"\n\t\t\t@change=\"onChange\">\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\nimport {\n\tNcButton,\n\tNcLoadingIcon,\n\tNcNoteCard,\n} from '@nextcloud/vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Undo from 'vue-material-design-icons/UndoVariant.vue'\nimport Upload from 'vue-material-design-icons/Upload.vue'\n\nimport FieldMixin from '../../mixins/admin/FieldMixin.js'\n\nexport default {\n\tname: 'FileInputField',\n\n\tcomponents: {\n\t\tDelete,\n\t\tNcButton,\n\t\tNcLoadingIcon,\n\t\tNcNoteCard,\n\t\tUndo,\n\t\tUpload,\n\t},\n\n\tmixins: [\n\t\tFieldMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultMimeValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowLoading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowReset() {\n\t\t\treturn this.mimeValue !== this.defaultMimeValue\n\t\t},\n\n\t\tshowRemove() {\n\t\t\tif (this.name === 'background') {\n\t\t\t\tif (this.mimeValue.startsWith('image/')) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tif (this.mimeValue === this.defaultMimeValue) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\tthis.reset()\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tasync onChange(e) {\n\t\t\tconst file = e.target.files[0]\n\n\t\t\tconst formData = new FormData()\n\t\t\tformData.append('key', this.name)\n\t\t\tformData.append('image', file)\n\n\t\t\tconst url = generateUrl('/apps/theming/ajax/uploadImage')\n\t\t\ttry {\n\t\t\t\tthis.showLoading = true\n\t\t\t\tawait axios.post(url, formData)\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.$emit('update:mime-value', file.type)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.showLoading = false\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync undo() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/undoChanges')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', this.defaultMimeValue)\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.reset()\n\t\t\tconst url = generateUrl('/apps/theming/ajax/updateStylesheet')\n\t\t\ttry {\n\t\t\t\tawait axios.post(url, {\n\t\t\t\t\tsetting: this.mimeName,\n\t\t\t\t\tvalue: 'backgroundColor',\n\t\t\t\t})\n\t\t\t\tthis.$emit('update:mime-value', 'backgroundColor')\n\t\t\t\tthis.handleSuccess()\n\t\t\t} catch (e) {\n\t\t\t\tthis.errorMessage = e.response.data.data?.message\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import './shared/field.scss';\n\n.field {\n\t&__loading-icon {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t}\n\n\t&__preview {\n\t\twidth: 70px;\n\t\theight: 70px;\n\t\tbackground-size: contain;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t\tmargin: 10px 0;\n\n\t\t&--logoheader {\n\t\t\tbackground-image: var(--image-logoheader);\n\t\t}\n\n\t\t&--favicon {\n\t\t\tbackground-image: var(--image-favicon);\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileInputField.vue?vue&type=template&id=3d620660&scoped=true&\"\nimport script from \"./FileInputField.vue?vue&type=script&lang=js&\"\nexport * from \"./FileInputField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileInputField.vue?vue&type=style&index=0&id=3d620660&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d620660\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<div class=\"field\">\n\t\t<NcTextField :value.sync=\"localValue\"\n\t\t\t:label=\"displayName\"\n\t\t\t:label-visible=\"true\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t:type=\"type\"\n\t\t\t:maxlength=\"maxlength\"\n\t\t\t:spellcheck=\"false\"\n\t\t\t:success=\"showSuccess\"\n\t\t\t:error=\"Boolean(errorMessage)\"\n\t\t\t:helper-text=\"errorMessage\"\n\t\t\t:show-trailing-button=\"value !== defaultValue\"\n\t\t\ttrailing-button-icon=\"undo\"\n\t\t\t@trailing-button-click=\"undo\"\n\t\t\t@keydown.enter=\"save\"\n\t\t\t@blur=\"save\" />\n\t</div>\n</template>\n\n<script>\nimport { NcTextField } from '@nextcloud/vue'\n\nimport TextValueMixin from '../../mixins/admin/TextValueMixin.js'\n\nexport default {\n\tname: 'TextField',\n\n\tcomponents: {\n\t\tNcTextField,\n\t},\n\n\tmixins: [\n\t\tTextValueMixin,\n\t],\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdefaultValue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.field {\n\tmax-width: 400px;\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TextField.vue?vue&type=template&id=21244e1d&scoped=true&\"\nimport script from \"./TextField.vue?vue&type=script&lang=js&\"\nexport * from \"./TextField.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TextField.vue?vue&type=style&index=0&id=21244e1d&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"21244e1d\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"field\"},[_c('NcTextField',{attrs:{\"value\":_vm.localValue,\"label\":_vm.displayName,\"label-visible\":true,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"maxlength\":_vm.maxlength,\"spellcheck\":false,\"success\":_vm.showSuccess,\"error\":Boolean(_vm.errorMessage),\"helper-text\":_vm.errorMessage,\"show-trailing-button\":_vm.value !== _vm.defaultValue,\"trailing-button-icon\":\"undo\"},on:{\"update:value\":function($event){_vm.localValue=$event},\"trailing-button-click\":_vm.undo,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.save.apply(null, arguments)},\"blur\":_vm.save}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Christopher Ng <chrng8@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Theming')\"\n\t\t\t:description=\"t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.')\"\n\t\t\t:doc-url=\"docUrl\"\n\t\t\tdata-admin-theming-settings>\n\t\t\t<div class=\"admin-theming\">\n\t\t\t\t<NcNoteCard v-if=\"!isThemable\"\n\t\t\t\t\ttype=\"error\"\n\t\t\t\t\t:show-alert=\"true\">\n\t\t\t\t\t<p>{{ notThemableErrorMessage }}</p>\n\t\t\t\t</NcNoteCard>\n\n\t\t\t\t<!-- Name, web link, slogan... fields -->\n\t\t\t\t<TextField v-for=\"field in textFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:data-admin-theming-setting-field=\"field.name\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\n\t\t\t\t<!-- Primary color picker -->\n\t\t\t\t<ColorPickerField :name=\"colorPickerField.name\"\n\t\t\t\t\t:default-value=\"colorPickerField.defaultValue\"\n\t\t\t\t\t:display-name=\"colorPickerField.displayName\"\n\t\t\t\t\t:value.sync=\"colorPickerField.value\"\n\t\t\t\t\tdata-admin-theming-setting-primary-color\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\n\t\t\t\t<!-- Default background picker -->\n\t\t\t\t<FileInputField v-for=\"field in fileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t:data-admin-theming-setting-file=\"field.name\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<div class=\"admin-theming__preview\" data-admin-theming-preview>\n\t\t\t\t\t<div class=\"admin-theming__preview-logo\" data-admin-theming-preview-logo />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t\t<NcSettingsSection :title=\"t('theming', 'Advanced options')\">\n\t\t\t<div class=\"admin-theming-advanced\">\n\t\t\t\t<TextField v-for=\"field in advancedTextFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:value.sync=\"field.value\"\n\t\t\t\t\t:default-value=\"field.defaultValue\"\n\t\t\t\t\t:type=\"field.type\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:placeholder=\"field.placeholder\"\n\t\t\t\t\t:maxlength=\"field.maxlength\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<FileInputField v-for=\"field in advancedFileInputFields\"\n\t\t\t\t\t:key=\"field.name\"\n\t\t\t\t\t:name=\"field.name\"\n\t\t\t\t\t:mime-name=\"field.mimeName\"\n\t\t\t\t\t:mime-value.sync=\"field.mimeValue\"\n\t\t\t\t\t:default-mime-value=\"field.defaultMimeValue\"\n\t\t\t\t\t:display-name=\"field.displayName\"\n\t\t\t\t\t:aria-label=\"field.ariaLabel\"\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<CheckboxField :name=\"userThemingField.name\"\n\t\t\t\t\t:value=\"userThemingField.value\"\n\t\t\t\t\t:default-value=\"userThemingField.defaultValue\"\n\t\t\t\t\t:display-name=\"userThemingField.displayName\"\n\t\t\t\t\t:label=\"userThemingField.label\"\n\t\t\t\t\t:description=\"userThemingField.description\"\n\t\t\t\t\tdata-admin-theming-setting-disable-user-theming\n\t\t\t\t\t@update:theming=\"$emit('update:theming')\" />\n\t\t\t\t<a v-if=\"!canThemeIcons\"\n\t\t\t\t\t:href=\"docUrlIcons\"\n\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t<em>{{ t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.') }}</em>\n\t\t\t\t</a>\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport {\n\tNcNoteCard,\n\tNcSettingsSection,\n} from '@nextcloud/vue'\nimport CheckboxField from './components/admin/CheckboxField.vue'\nimport ColorPickerField from './components/admin/ColorPickerField.vue'\nimport FileInputField from './components/admin/FileInputField.vue'\nimport TextField from './components/admin/TextField.vue'\n\nconst {\n\tbackgroundMime,\n\tcanThemeIcons,\n\tcolor,\n\tdocUrl,\n\tdocUrlIcons,\n\tfaviconMime,\n\tisThemable,\n\tlegalNoticeUrl,\n\tlogoheaderMime,\n\tlogoMime,\n\tname,\n\tnotThemableErrorMessage,\n\tprivacyPolicyUrl,\n\tslogan,\n\turl,\n\tuserThemingDisabled,\n} = loadState('theming', 'adminThemingParameters')\n\nconst textFields = [\n\t{\n\t\tname: 'name',\n\t\tvalue: name,\n\t\tdefaultValue: 'Nextcloud',\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Name'),\n\t\tplaceholder: t('theming', 'Name'),\n\t\tmaxlength: 250,\n\t},\n\t{\n\t\tname: 'url',\n\t\tvalue: url,\n\t\tdefaultValue: 'https://nextcloud.com',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Web link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'slogan',\n\t\tvalue: slogan,\n\t\tdefaultValue: t('theming', 'a safe home for all your data'),\n\t\ttype: 'text',\n\t\tdisplayName: t('theming', 'Slogan'),\n\t\tplaceholder: t('theming', 'Slogan'),\n\t\tmaxlength: 500,\n\t},\n]\n\nconst colorPickerField = {\n\tname: 'color',\n\tvalue: color,\n\tdefaultValue: '#0082c9',\n\tdisplayName: t('theming', 'Color'),\n}\n\nconst fileInputFields = [\n\t{\n\t\tname: 'logo',\n\t\tmimeName: 'logoMime',\n\t\tmimeValue: logoMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Logo'),\n\t\tariaLabel: t('theming', 'Upload new logo'),\n\t},\n\t{\n\t\tname: 'background',\n\t\tmimeName: 'backgroundMime',\n\t\tmimeValue: backgroundMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Background and login image'),\n\t\tariaLabel: t('theming', 'Upload new background and login image'),\n\t},\n]\n\nconst advancedTextFields = [\n\t{\n\t\tname: 'imprintUrl',\n\t\tvalue: legalNoticeUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Legal notice link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n\t{\n\t\tname: 'privacyUrl',\n\t\tvalue: privacyPolicyUrl,\n\t\tdefaultValue: '',\n\t\ttype: 'url',\n\t\tdisplayName: t('theming', 'Privacy policy link'),\n\t\tplaceholder: 'https://…',\n\t\tmaxlength: 500,\n\t},\n]\n\nconst advancedFileInputFields = [\n\t{\n\t\tname: 'logoheader',\n\t\tmimeName: 'logoheaderMime',\n\t\tmimeValue: logoheaderMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Header logo'),\n\t\tariaLabel: t('theming', 'Upload new header logo'),\n\t},\n\t{\n\t\tname: 'favicon',\n\t\tmimeName: 'faviconMime',\n\t\tmimeValue: faviconMime,\n\t\tdefaultMimeValue: '',\n\t\tdisplayName: t('theming', 'Favicon'),\n\t\tariaLabel: t('theming', 'Upload new favicon'),\n\t},\n]\n\nconst userThemingField = {\n\tname: 'disable-user-theming',\n\tvalue: userThemingDisabled,\n\tdefaultValue: false,\n\tdisplayName: t('theming', 'User settings'),\n\tlabel: t('theming', 'Disable user theming'),\n\tdescription: t('theming', 'Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.'),\n}\n\nexport default {\n\tname: 'AdminTheming',\n\n\tcomponents: {\n\t\tCheckboxField,\n\t\tColorPickerField,\n\t\tFileInputField,\n\t\tNcNoteCard,\n\t\tNcSettingsSection,\n\t\tTextField,\n\t},\n\n\temits: [\n\t\t'update:theming',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\ttextFields,\n\t\t\tcolorPickerField,\n\t\t\tfileInputFields,\n\t\t\tadvancedTextFields,\n\t\t\tadvancedFileInputFields,\n\t\t\tuserThemingField,\n\n\t\t\tcanThemeIcons,\n\t\t\tdocUrl,\n\t\t\tdocUrlIcons,\n\t\t\tisThemable,\n\t\t\tnotThemableErrorMessage,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.admin-theming,\n.admin-theming-advanced {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 8px 0;\n}\n\n.admin-theming {\n\t&__preview {\n\t\twidth: 230px;\n\t\theight: 140px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\t\ttext-align: center;\n\t\tmargin-top: 10px;\n\t\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\n\t\t But without the user variables. That way the admin can preview the render as guest*/\n\t\t/* As guest, there is no user color color-background-plain */\n\t\tbackground-color: var(--color-primary-element-default, #0082c9);\n\t\t/* As guest, there is no user background (--image-background)\n\t\t1. Empty background if defined\n\t\t2. Else default background\n\t\t3. Finally default gradient (should not happened, the background is always defined anyway) */\n\t\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\n\n\t\t&-logo {\n\t\t\twidth: 20%;\n\t\t\theight: 20%;\n\t\t\tmargin-top: 20px;\n\t\t\tdisplay: inline-block;\n\t\t\tbackground-size: contain;\n\t\t\tbackground-position: center;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=7da8f9a4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminTheming.vue?vue&type=style&index=0&id=7da8f9a4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminTheming.vue?vue&type=template&id=7da8f9a4&scoped=true&\"\nimport script from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminTheming.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminTheming.vue?vue&type=style&index=0&id=7da8f9a4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7da8f9a4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Theming'),\"description\":_vm.t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.'),\"doc-url\":_vm.docUrl,\"data-admin-theming-settings\":\"\"}},[_c('div',{staticClass:\"admin-theming\"},[(!_vm.isThemable)?_c('NcNoteCard',{attrs:{\"type\":\"error\",\"show-alert\":true}},[_c('p',[_vm._v(_vm._s(_vm.notThemableErrorMessage))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.textFields),function(field){return _c('TextField',{key:field.name,attrs:{\"data-admin-theming-setting-field\":field.name,\"default-value\":field.defaultValue,\"display-name\":field.displayName,\"maxlength\":field.maxlength,\"name\":field.name,\"placeholder\":field.placeholder,\"type\":field.type,\"value\":field.value},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('ColorPickerField',{attrs:{\"name\":_vm.colorPickerField.name,\"default-value\":_vm.colorPickerField.defaultValue,\"display-name\":_vm.colorPickerField.displayName,\"value\":_vm.colorPickerField.value,\"data-admin-theming-setting-primary-color\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.colorPickerField, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),_vm._l((_vm.fileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"aria-label\":field.ariaLabel,\"data-admin-theming-setting-file\":field.name,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"name\":field.name},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('div',{staticClass:\"admin-theming__preview\",attrs:{\"data-admin-theming-preview\":\"\"}},[_c('div',{staticClass:\"admin-theming__preview-logo\",attrs:{\"data-admin-theming-preview-logo\":\"\"}})])],2)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Advanced options')}},[_c('div',{staticClass:\"admin-theming-advanced\"},[_vm._l((_vm.advancedTextFields),function(field){return _c('TextField',{key:field.name,attrs:{\"name\":field.name,\"value\":field.value,\"default-value\":field.defaultValue,\"type\":field.type,\"display-name\":field.displayName,\"placeholder\":field.placeholder,\"maxlength\":field.maxlength},on:{\"update:value\":function($event){return _vm.$set(field, \"value\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_vm._l((_vm.advancedFileInputFields),function(field){return _c('FileInputField',{key:field.name,attrs:{\"name\":field.name,\"mime-name\":field.mimeName,\"mime-value\":field.mimeValue,\"default-mime-value\":field.defaultMimeValue,\"display-name\":field.displayName,\"aria-label\":field.ariaLabel},on:{\"update:mimeValue\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:mime-value\":function($event){return _vm.$set(field, \"mimeValue\", $event)},\"update:theming\":function($event){return _vm.$emit('update:theming')}}})}),_vm._v(\" \"),_c('CheckboxField',{attrs:{\"name\":_vm.userThemingField.name,\"value\":_vm.userThemingField.value,\"default-value\":_vm.userThemingField.defaultValue,\"display-name\":_vm.userThemingField.displayName,\"label\":_vm.userThemingField.label,\"description\":_vm.userThemingField.description,\"data-admin-theming-setting-disable-user-theming\":\"\"},on:{\"update:theming\":function($event){return _vm.$emit('update:theming')}}}),_vm._v(\" \"),(!_vm.canThemeIcons)?_c('a',{attrs:{\"href\":_vm.docUrlIcons,\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('theming', 'Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color.')))])]):_vm._e()],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './AdminTheming.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#admin-theming')\ntheming.$on('update:theming', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../../../core/img/logo/logo.svg\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".admin-theming[data-v-7da8f9a4],.admin-theming-advanced[data-v-7da8f9a4]{display:flex;flex-direction:column;gap:8px 0}.admin-theming__preview[data-v-7da8f9a4]{width:230px;height:140px;background-size:cover;background-position:center;text-align:center;margin-top:10px;background-color:var(--color-primary-element-default, #0082c9);background-image:var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)))}.admin-theming__preview-logo[data-v-7da8f9a4]{width:20%;height:20%;margin-top:20px;display:inline-block;background-size:contain;background-position:center;background-repeat:no-repeat;background-image:var(--image-logo, url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \"))}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/AdminTheming.vue\"],\"names\":[],\"mappings\":\"AACA,yEAEC,YAAA,CACA,qBAAA,CACA,SAAA,CAIA,yCACC,WAAA,CACA,YAAA,CACA,qBAAA,CACA,0BAAA,CACA,iBAAA,CACA,eAAA,CAIA,8DAAA,CAKA,iIAAA,CAEA,8CACC,SAAA,CACA,UAAA,CACA,eAAA,CACA,oBAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,2EAAA\",\"sourcesContent\":[\"\\n.admin-theming,\\n.admin-theming-advanced {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 8px 0;\\n}\\n\\n.admin-theming {\\n\\t&__preview {\\n\\t\\twidth: 230px;\\n\\t\\theight: 140px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center;\\n\\t\\ttext-align: center;\\n\\t\\tmargin-top: 10px;\\n\\t\\t/* This is basically https://github.com/nextcloud/server/blob/master/core/css/guest.css\\n\\t\\t But without the user variables. That way the admin can preview the render as guest*/\\n\\t\\t/* As guest, there is no user color color-background-plain */\\n\\t\\tbackground-color: var(--color-primary-element-default, #0082c9);\\n\\t\\t/* As guest, there is no user background (--image-background)\\n\\t\\t1. Empty background if defined\\n\\t\\t2. Else default background\\n\\t\\t3. Finally default gradient (should not happened, the background is always defined anyway) */\\n\\t\\tbackground-image: var(--image-background-plain, var(--image-background-default, linear-gradient(40deg, #0082c9 0%, #30b6ff 100%)));\\n\\n\\t\\t&-logo {\\n\\t\\t\\twidth: 20%;\\n\\t\\t\\theight: 20%;\\n\\t\\t\\tmargin-top: 20px;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tbackground-size: contain;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-image: var(--image-logo, url('../../../core/img/logo/logo.svg'));\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-17145f08]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-17145f08]{display:flex;gap:0 4px}.field__description[data-v-17145f08]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/CheckboxField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,qCACC,mCAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (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 Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-73de0887]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-73de0887]{display:flex;gap:0 4px}.field__button[data-v-73de0887]{width:230px !important;border-radius:var(--border-radius-large) !important;background-color:var(--color-primary-default) !important}.field__button[data-v-73de0887]:hover::after{background-color:#fff;content:\\\"\\\";position:absolute;width:100%;height:100%;opacity:.2;filter:var(--primary-invert-if-bright)}.field__button[data-v-73de0887] *{z-index:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/ColorPickerField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCxBD,gCACC,sBAAA,CACA,mDAAA,CACA,wDAAA,CAIA,6CACC,qBAAA,CACA,UAAA,CACA,iBAAA,CACA,UAAA,CACA,WAAA,CACA,UAAA,CACA,sCAAA,CAID,kCACC,SAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (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 Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t// Override default NcButton styles\\n\\t&__button {\\n\\t\\twidth: 230px !important;\\n\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\t\\tbackground-color: var(--color-primary-default) !important;\\n\\n\\t\\t// emulated hover state because it would not make sense\\n\\t\\t// to create a dedicated global variable for the color-primary-default\\n\\t\\t&:hover::after {\\n\\t\\t\\tbackground-color: white;\\n\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\topacity: .2;\\n\\t\\t\\tfilter: var(--primary-invert-if-bright);\\n\\t\\t}\\n\\n\\t\\t// Above the ::after\\n\\t\\t&::v-deep * {\\n\\t\\t\\tz-index: 1;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-3d620660]{display:flex;flex-direction:column;gap:4px 0}.field__row[data-v-3d620660]{display:flex;gap:0 4px}.field__loading-icon[data-v-3d620660]{width:44px;height:44px}.field__preview[data-v-3d620660]{width:70px;height:70px;background-size:contain;background-position:center;background-repeat:no-repeat;margin:10px 0}.field__preview--logoheader[data-v-3d620660]{background-image:var(--image-logoheader)}.field__preview--favicon[data-v-3d620660]{background-image:var(--image-favicon)}input[type=file][data-v-3d620660]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/shared/field.scss\",\"webpack://./apps/theming/src/components/admin/FileInputField.vue\"],\"names\":[],\"mappings\":\"AAsBA,wBACC,YAAA,CACA,qBAAA,CACA,SAAA,CAEA,6BACC,YAAA,CACA,SAAA,CCzBD,sCACC,UAAA,CACA,WAAA,CAGD,iCACC,UAAA,CACA,WAAA,CACA,uBAAA,CACA,0BAAA,CACA,2BAAA,CACA,aAAA,CAEA,6CACC,wCAAA,CAGD,0CACC,qCAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"/**\\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\\n *\\n * @author Christopher Ng <chrng8@gmail.com>\\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (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 Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n.field {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 4px 0;\\n\\n\\t&__row {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 4px;\\n\\t}\\n}\\n\",\"\\n@import './shared/field.scss';\\n\\n.field {\\n\\t&__loading-icon {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\t&__preview {\\n\\t\\twidth: 70px;\\n\\t\\theight: 70px;\\n\\t\\tbackground-size: contain;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t&--logoheader {\\n\\t\\t\\tbackground-image: var(--image-logoheader);\\n\\t\\t}\\n\\n\\t\\t&--favicon {\\n\\t\\t\\tbackground-image: var(--image-favicon);\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".field[data-v-21244e1d]{max-width:400px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/admin/TextField.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,eAAA\",\"sourcesContent\":[\"\\n.field {\\n\\tmax-width: 400px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5544;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5544: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(39941)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","styleRefreshFields","emits","data","showSuccess","errorMessage","computed","id","concat","this","name","methods","reset","handleSuccess","setTimeout","includes","$emit","mixins","FieldMixin","watch","value","localValue","async","url","generateUrl","valueToPost","axios","setting","e","_e$response$data$data","response","message","defaultValue","_e$response$data$data2","components","NcCheckboxRadioSwitch","NcNoteCard","TextValueMixin","props","type","String","required","Boolean","displayName","label","description","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","attrs","_v","_s","on","$event","save","_e","NcButton","NcColorPicker","Undo","debounceSave","debounce","t","undo","scopedSlots","_u","key","fn","proxy","Delete","NcLoadingIcon","Upload","mimeName","mimeValue","defaultMimeValue","ariaLabel","showLoading","showReset","showRemove","startsWith","activateLocalFilePicker","$refs","input","click","file","target","files","formData","FormData","append","_e$response$data$data3","removeBackground","class","ref","onChange","NcTextField","placeholder","maxlength","Number","indexOf","_k","keyCode","apply","arguments","backgroundMime","canThemeIcons","color","docUrl","docUrlIcons","faviconMime","isThemable","legalNoticeUrl","logoheaderMime","logoMime","notThemableErrorMessage","privacyPolicyUrl","slogan","userThemingDisabled","loadState","textFields","colorPickerField","fileInputFields","advancedTextFields","advancedFileInputFields","userThemingField","CheckboxField","ColorPickerField","FileInputField","NcSettingsSection","TextField","_l","field","$set","Vue","OC","theming","App","$mount","$on","refreshStyles","document","head","querySelectorAll","forEach","theme","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/theming-personal-theming.js b/dist/theming-personal-theming.js index a3141d9a848..3e8213dcf41 100644 --- a/dist/theming-personal-theming.js +++ b/dist/theming-personal-theming.js @@ -1,3 +1,3 @@ /*! For license information please see theming-personal-theming.js.LICENSE.txt */ -(()=>{"use strict";var e,a={47546:(e,a,n)=>{var r=n(20144),o=n(79753),i=n(79954),s=n(4820),c=n(20571),d=n.n(c),l=n(13299),g=n.n(l),u=n(80419),h=n(82675),m=n(41728),p=n(20296),A=n.n(p),b=n(69867),v=n.n(b),k=n(1082),f=n.n(k),C=(n(97248),n(64024)),_=n(45994),y=n(25108);const w=(0,i.j)("theming","backgroundImage"),x=(0,i.j)("theming","shippedBackgrounds"),T=(0,i.j)("theming","themingDefaultBackground"),B=(0,i.j)("theming","defaultShippedBackground"),I=e=>(0,o.generateFilePath)("theming","","img/background/")+e,D=(0,C.fn)(t("theming","Select a background from your files")).setMultiSelect(!1).setModal(!0).setType(1).setMimeTypeFilter(["image/png","image/gif","image/jpeg","image/svg+xml","image/svg"]).build(),S={name:"BackgroundSettings",components:{Check:u.default,Close:h.default,ImageEdit:m.Z,NcColorPicker:v()},data:()=>({loading:!1,Theming:(0,i.j)("theming","data",{}),backgroundImage:w}),computed:{shippedBackgrounds(){return Object.keys(x).map((e=>({name:e,url:I(e),preview:I("preview/"+e),details:x[e]}))).filter((e=>!(!this.isGlobalBackgroundDeleted&&!this.isGlobalBackgroundDefault)||e.name!==B))},isGlobalBackgroundDefault:()=>!!T,isGlobalBackgroundDeleted:()=>"backgroundColor"===T,isBackgroundDisabled(){return"disabled"===this.backgroundImage||!this.backgroundImage}},methods:{invertTextColor(e){return this.calculateLuma(e)>.6},calculateLuma(e){const[t,a,n]=this.hexToRGB(e);return(.2126*t+.7152*a+.0722*n)/255},hexToRGB(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null},async update(e){this.backgroundImage=e.backgroundImage,this.Theming.color=e.backgroundColor,this.$emit("update:background"),this.loading=!1},async setDefault(){this.loading="default";const e=await s.default.post((0,o.generateUrl)("/apps/theming/background/default"));this.update(e.data)},async setShipped(e){this.loading=e;const t=await s.default.post((0,o.generateUrl)("/apps/theming/background/shipped"),{value:e});this.update(t.data)},async setFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.loading="custom";const a=await s.default.post((0,o.generateUrl)("/apps/theming/background/custom"),{value:e,color:t});this.update(a.data)},async removeBackground(){this.loading="remove";const e=await s.default.delete((0,o.generateUrl)("/apps/theming/background/custom"));this.update(e.data)},async pickColor(e){var t,a,n;this.loading="color";const r=(null==e||null===(t=e.target)||void 0===t||null===(a=t.dataset)||void 0===a?void 0:a.color)||(null===(n=this.Theming)||void 0===n?void 0:n.color)||"#0082c9",i=await s.default.post((0,o.generateUrl)("/apps/theming/background/color"),{color:r});this.update(i.data)},debouncePickColor:A()((function(){this.pickColor(...arguments)}),200),async pickFile(){const e=await D.pick();this.loading="custom";let t=null,a=null;try{var n;const r=(0,o.generateRemoteUrl)("dav/files/"+(0,_.ts)().uid+e);t=await s.default.get(r,{responseType:"blob"});const i=URL.createObjectURL(t.data),c=await this.getColorPaletteFromBlob(i);a=null==c||null===(n=c.DarkVibrant)||void 0===n?void 0:n.hex,this.setFile(e,a),y.debug("Extracted colour",a,"from custom image",e,c)}catch(n){this.setFile(e),y.error("Unable to extract colour from custom image",{error:n,path:e,response:t,color:a})}},getColorPaletteFromBlob:e=>new Promise(((t,a)=>{new(f())(e).getPalette(((e,n)=>{e&&a(e),t(n)}))}))}};var E=n(93379),U=n.n(E),j=n(7795),P=n.n(j),O=n(90569),G=n.n(O),F=n(3565),q=n.n(F),L=n(19216),Z=n.n(L),R=n(44589),N=n.n(R),z=n(80829),W={};W.styleTagTransform=N(),W.setAttributes=q(),W.insert=G().bind(null,"head"),W.domAPI=P(),W.insertStyleElement=Z(),U()(z.Z,W),z.Z&&z.Z.locals&&z.Z.locals;var M=n(51900);const K=(0,M.Z)(S,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"background-selector",attrs:{"data-user-theming-background-settings":""}},[t("button",{staticClass:"background background__filepicker",class:{"icon-loading":"custom"===e.loading,"background--active":"custom"===e.backgroundImage},attrs:{"data-color-bright":e.invertTextColor(e.Theming.color),"data-user-theming-background-custom":"",tabindex:"0"},on:{click:e.pickFile}},[e._v("\n\t\t"+e._s(e.t("theming","Custom background"))+"\n\t\t"),"custom"!==e.backgroundImage?t("ImageEdit",{attrs:{size:26}}):e._e(),e._v(" "),t("Check",{attrs:{size:44}})],1),e._v(" "),t("button",{staticClass:"background background__default",class:{"icon-loading":"default"===e.loading,"background--active":"default"===e.backgroundImage},style:{"--border-color":e.Theming.defaultColor},attrs:{"data-color-bright":e.invertTextColor(e.Theming.defaultColor),"data-user-theming-background-default":"",tabindex:"0"},on:{click:e.setDefault}},[e._v("\n\t\t"+e._s(e.t("theming","Default background"))+"\n\t\t"),t("Check",{attrs:{size:44}})],1),e._v(" "),t("NcColorPicker",{on:{input:e.debouncePickColor},model:{value:e.Theming.color,callback:function(t){e.$set(e.Theming,"color",t)},expression:"Theming.color"}},[t("button",{staticClass:"background background__color",style:{backgroundColor:e.Theming.color,"--border-color":e.Theming.color},attrs:{"data-color":e.Theming.color,"data-color-bright":e.invertTextColor(e.Theming.color),"data-user-theming-background-color":"",tabindex:"0"}},[e._v("\n\t\t\t"+e._s(e.t("theming","Change color"))+"\n\t\t")])]),e._v(" "),t("button",{staticClass:"background background__delete",class:{"background--active":e.isBackgroundDisabled},attrs:{"data-user-theming-background-clear":"",tabindex:"0"},on:{click:e.removeBackground}},[e._v("\n\t\t"+e._s(e.t("theming","No background"))+"\n\t\t"),e.isBackgroundDisabled?e._e():t("Close",{attrs:{size:32}}),e._v(" "),t("Check",{attrs:{size:44}})],1),e._v(" "),e._l(e.shippedBackgrounds,(function(a){return t("button",{key:a.name,staticClass:"background background__shipped",class:{"icon-loading":e.loading===a.name,"background--active":e.backgroundImage===a.name},style:{backgroundImage:"url("+a.preview+")","--border-color":a.details.primary_color},attrs:{title:a.details.attribution,"aria-label":a.details.attribution,"data-color-bright":"dark"===a.details.theming,"data-user-theming-background-shipped":a.name,tabindex:"0"},on:{click:function(t){return e.setShipped(a.name)}}},[t("Check",{attrs:{size:44}})],1)}))],2)}),[],!1,null,"8a72fa3e",null).exports;var $=n(25108);const Y={name:"ItemPreview",components:{NcCheckboxRadioSwitch:d()},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType(){return this.unique?"switch":"radio"},name(){return this.unique?null:this.type},img(){return(0,o.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get(){return this.selected},set(e){$.debug("Changed theme",this.theme.id,e),this.unique?this.$emit("change",{enabled:!0===e,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}};var H=n(36907),V={};V.styleTagTransform=N(),V.setAttributes=q(),V.insert=G().bind(null,"head"),V.domAPI=P(),V.insertStyleElement=Z(),U()(H.Z,V),H.Z&&H.Z.locals&&H.Z.locals;const Q=(0,M.Z)(Y,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"theming__preview",class:"theming__preview--"+e.theme.id},[t("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+e.img+")"},on:{click:e.onToggle}}),e._v(" "),t("div",{staticClass:"theming__preview-description"},[t("h3",[e._v(e._s(e.theme.title))]),e._v(" "),t("p",[e._v(e._s(e.theme.description))]),e._v(" "),e.enforced?t("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[e._v("\n\t\t\t"+e._s(e.t("theming","Theme selection is enforced"))+"\n\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:e.checked,disabled:e.enforced,name:e.name,type:e.switchType},on:{"update:checked":function(t){e.checked=t}}},[e._v("\n\t\t\t"+e._s(e.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"30cd5e6b",null).exports;var J=n(25108);const X=(0,i.j)("theming","themes",[]),ee=(0,i.j)("theming","enforceTheme",""),te=(0,i.j)("theming","shortcutsDisabled",!1),ae=(0,i.j)("theming","isUserThemingDisabled");J.debug("Available themes",X);const ne={name:"UserThemes",components:{ItemPreview:Q,NcCheckboxRadioSwitch:d(),NcSettingsSection:g(),BackgroundSettings:K},data:()=>({availableThemes:X,enforceTheme:ee,shortcutsDisabled:te,isUserThemingDisabled:ae}),computed:{themes(){return this.availableThemes.filter((e=>1===e.type))},fonts(){return this.availableThemes.filter((e=>2===e.type))},selectedTheme(){return this.themes.find((e=>!0===e.enabled))||this.themes[0]},description(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:()=>'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">',descriptionDetail(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:()=>'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">',designteamLink:()=>'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'},watch:{shortcutsDisabled(e){this.changeShortcutsDisabled(e)}},methods:{refreshGlobalStyles(){[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const a=e.cloneNode();a.href=t.toString(),a.onload=()=>e.remove(),document.head.append(a)}))},updateBackground(e){this.background="custom"===e.type||"default"===e.type?e.type:e.value,this.refreshGlobalStyles()},changeTheme(e){let{enabled:t,id:a}=e;this.themes.forEach((e=>{e.id===a&&t?e.enabled=!0:e.enabled=!1})),this.updateBodyAttributes(),this.selectItem(t,a)},changeFont(e){let{enabled:t,id:a}=e;this.fonts.forEach((e=>{e.id===a&&t?e.enabled=!0:e.enabled=!1})),this.updateBodyAttributes(),this.selectItem(t,a)},async changeShortcutsDisabled(e){e?await(0,s.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"}):await(0,s.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"})},updateBodyAttributes(){const e=this.themes.filter((e=>!0===e.enabled)).map((e=>e.id)),t=this.fonts.filter((e=>!0===e.enabled)).map((e=>e.id));this.themes.forEach((e=>{document.body.toggleAttribute("data-theme-".concat(e.id),e.enabled)})),this.fonts.forEach((e=>{document.body.toggleAttribute("data-theme-".concat(e.id),e.enabled)})),document.body.setAttribute("data-themes",[...e,...t].join(","))},async selectItem(e,a){try{e?await(0,s.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:a}),method:"PUT"}):await(0,s.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:a}),method:"DELETE"})}catch(e){J.error(e,e.response),OC.Notification.showTemporary(t("theming",e.response.data.ocs.meta.message+". Unable to apply the setting."))}}}};var re=n(1080),oe={};oe.styleTagTransform=N(),oe.setAttributes=q(),oe.insert=G().bind(null,"head"),oe.domAPI=P(),oe.insertStyleElement=Z(),U()(re.Z,oe),re.Z&&re.Z.locals&&re.Z.locals;const ie=(0,M.Z)(ne,(function(){var e=this,t=e._self._c;return t("section",[t("NcSettingsSection",{staticClass:"theming",attrs:{title:e.t("theming","Appearance and accessibility"),"limit-width":!1}},[t("p",{domProps:{innerHTML:e._s(e.description)}}),e._v(" "),t("p",{domProps:{innerHTML:e._s(e.descriptionDetail)}}),e._v(" "),t("div",{staticClass:"theming__preview-list"},e._l(e.themes,(function(a){return t("ItemPreview",{key:a.id,attrs:{enforced:a.id===e.enforceTheme,selected:e.selectedTheme.id===a.id,theme:a,unique:1===e.themes.length,type:"theme"},on:{change:e.changeTheme}})})),1),e._v(" "),t("div",{staticClass:"theming__preview-list"},e._l(e.fonts,(function(a){return t("ItemPreview",{key:a.id,attrs:{selected:a.enabled,theme:a,unique:1===e.fonts.length,type:"font"},on:{change:e.changeFont}})})),1)]),e._v(" "),t("NcSettingsSection",{attrs:{title:e.t("theming","Keyboard shortcuts")}},[t("p",[e._v(e._s(e.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),e._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:e.shortcutsDisabled,name:"shortcuts_disabled",type:"switch"},on:{"update:checked":function(t){e.shortcutsDisabled=t},change:e.changeShortcutsDisabled}},[e._v("\n\t\t\t"+e._s(e.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),e._v(" "),t("NcSettingsSection",{staticClass:"background",attrs:{title:e.t("theming","Background"),"data-user-theming-background-disabled":""}},[e.isUserThemingDisabled?[t("p",[e._v(e._s(e.t("theming","Customization has been disabled by your administrator")))])]:[t("p",[e._v(e._s(e.t("theming","Set a custom background")))]),e._v(" "),t("BackgroundSettings",{staticClass:"background__grid",on:{"update:background":e.refreshGlobalStyles}})]],2)],1)}),[],!1,null,"4e5e21ba",null).exports;r.default.prototype.OC=OC,r.default.prototype.t=t;const se=new(r.default.extend(ie));se.$mount("#theming"),se.$on("update:background",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const a=e.cloneNode();a.href=t.toString(),a.onload=()=>e.remove(),document.head.append(a)}))}))},1080:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(87537),r=a.n(n),o=a(23645),i=a.n(o)()(r());i.push([e.id,".theming p[data-v-4e5e21ba]{max-width:800px}.theming[data-v-4e5e21ba] a{font-weight:bold}.theming[data-v-4e5e21ba] a:hover,.theming[data-v-4e5e21ba] a:focus{text-decoration:underline}.theming__preview-list[data-v-4e5e21ba]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-4e5e21ba]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-4e5e21ba]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]);const s=i},80829:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(87537),r=a.n(n),o=a(23645),i=a.n(o)()(r());i.push([e.id,".background-selector[data-v-8a72fa3e]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-8a72fa3e]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-8a72fa3e]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-8a72fa3e]{background-color:var(--color-primary-default);background-image:var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-8a72fa3e],.background-selector .background__default[data-v-8a72fa3e],.background-selector .background__color[data-v-8a72fa3e]{border-color:var(--color-border)}.background-selector .background__color[data-v-8a72fa3e]{color:var(--color-primary-text);background-color:var(--color-primary-default)}.background-selector .background__default[data-v-8a72fa3e],.background-selector .background__shipped[data-v-8a72fa3e]{color:#fff}.background-selector .background[data-color-bright][data-v-8a72fa3e]{color:#000}.background-selector .background--active[data-v-8a72fa3e],.background-selector .background[data-v-8a72fa3e]:hover,.background-selector .background[data-v-8a72fa3e]:focus{border:2px solid var(--border-color, var(--color-primary)) !important}.background-selector .background span[data-v-8a72fa3e]{margin:4px}.background-selector .background .check-icon[data-v-8a72fa3e]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-8a72fa3e]{display:block !important}","",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,+EAAA,CAGD,kLACC,gCAAA,CAGD,yDACC,+BAAA,CACA,6CAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAIC,qEAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA",sourcesContent:["\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&__color {\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\t// Use theme color primary, see inline css variable in template\n\t\t\tborder: 2px solid var(--border-color, var(--color-primary)) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=i},36907:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(87537),r=a.n(n),o=a(23645),i=a.n(o)()(r());i.push([e.id,".theming__preview[data-v-30cd5e6b]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-30cd5e6b],.theming__preview *[data-v-30cd5e6b]{user-select:none}.theming__preview-image[data-v-30cd5e6b]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-30cd5e6b]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-30cd5e6b]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-30cd5e6b]{padding:12px 0}.theming__preview--default[data-v-30cd5e6b]{grid-column:span 2}.theming__preview-warning[data-v-30cd5e6b]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-30cd5e6b]{flex-direction:column}.theming__preview-image[data-v-30cd5e6b]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=i}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={id:e,loaded:!1,exports:{}};return a[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=a,e=[],r.O=(t,a,n,o)=>{if(!a){var i=1/0;for(l=0;l<e.length;l++){a=e[l][0],n=e[l][1],o=e[l][2];for(var s=!0,c=0;c<a.length;c++)(!1&o||i>=o)&&Object.keys(r.O).every((e=>r.O[e](a[c])))?a.splice(c--,1):(s=!1,o<i&&(i=o));if(s){e.splice(l--,1);var d=n();void 0!==d&&(t=d)}}return t}o=o||0;for(var l=e.length;l>0&&e[l-1][2]>o;l--)e[l]=e[l-1];e[l]=[a,n,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=1474,(()=>{r.b=document.baseURI||self.location.href;var e={1474:0};r.O.j=t=>0===e[t];var t=(t,a)=>{var n,o,i=a[0],s=a[1],c=a[2],d=0;if(i.some((t=>0!==e[t]))){for(n in s)r.o(s,n)&&(r.m[n]=s[n]);if(c)var l=c(r)}for(t&&t(a);d<i.length;d++)o=i[d],r.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return r.O(l)},a=self.webpackChunknextcloud=self.webpackChunknextcloud||[];a.forEach(t.bind(null,0)),a.push=t.bind(null,a.push.bind(a))})(),r.nc=void 0;var o=r.O(void 0,[7874],(()=>r(47546)));o=r.O(o)})(); -//# sourceMappingURL=theming-personal-theming.js.map?v=1f5be71f263fef96c8f1
\ No newline at end of file +(()=>{"use strict";var e,n={5319:(e,n,a)=>{var r=a(20144),o=a(79753),i=a(79954),s=a(4820),d=a(20571),c=a.n(d),l=a(13299),g=a.n(l),u=a(80419),h=a(82675),m=a(41728),p=a(20296),A=a.n(p),b=a(69867),v=a.n(b),k=a(1082),C=a.n(k),f=(a(97248),a(64024)),_=a(45994),y=a(25108);const w=(0,i.j)("theming","backgroundImage"),x=(0,i.j)("theming","shippedBackgrounds"),T=(0,i.j)("theming","themingDefaultBackground"),B=(0,i.j)("theming","defaultShippedBackground"),I=e=>(0,o.generateFilePath)("theming","","img/background/")+e,D=(0,f.fn)(t("theming","Select a background from your files")).setMultiSelect(!1).setModal(!0).setType(1).setMimeTypeFilter(["image/png","image/gif","image/jpeg","image/svg+xml","image/svg"]).build(),S={name:"BackgroundSettings",components:{Check:u.default,Close:h.default,ImageEdit:m.Z,NcColorPicker:v()},data:()=>({loading:!1,Theming:(0,i.j)("theming","data",{}),backgroundImage:w}),computed:{shippedBackgrounds(){return Object.keys(x).map((e=>({name:e,url:I(e),preview:I("preview/"+e),details:x[e]}))).filter((e=>!(!this.isGlobalBackgroundDeleted&&!this.isGlobalBackgroundDefault)||e.name!==B))},isGlobalBackgroundDefault:()=>!!T,isGlobalBackgroundDeleted:()=>"backgroundColor"===T,isBackgroundDisabled(){return"disabled"===this.backgroundImage||!this.backgroundImage}},methods:{invertTextColor(e){return this.calculateLuma(e)>.6},calculateLuma(e){const[t,n,a]=this.hexToRGB(e);return(.2126*t+.7152*n+.0722*a)/255},hexToRGB(e){const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]:null},async update(e){this.backgroundImage=e.backgroundImage,this.Theming.color=e.backgroundColor,this.$emit("update:background"),this.loading=!1},async setDefault(){this.loading="default";const e=await s.default.post((0,o.generateUrl)("/apps/theming/background/default"));this.update(e.data)},async setShipped(e){this.loading=e;const t=await s.default.post((0,o.generateUrl)("/apps/theming/background/shipped"),{value:e});this.update(t.data)},async setFile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.loading="custom";const n=await s.default.post((0,o.generateUrl)("/apps/theming/background/custom"),{value:e,color:t});this.update(n.data)},async removeBackground(){this.loading="remove";const e=await s.default.delete((0,o.generateUrl)("/apps/theming/background/custom"));this.update(e.data)},async pickColor(e){var t,n,a;this.loading="color";const r=(null==e||null===(t=e.target)||void 0===t||null===(n=t.dataset)||void 0===n?void 0:n.color)||(null===(a=this.Theming)||void 0===a?void 0:a.color)||"#0082c9",i=await s.default.post((0,o.generateUrl)("/apps/theming/background/color"),{color:r});this.update(i.data)},debouncePickColor:A()((function(){this.pickColor(...arguments)}),200),async pickFile(){const e=await D.pick();this.loading="custom";let t=null,n=null;try{var a;const r=(0,o.generateRemoteUrl)("dav/files/"+(0,_.ts)().uid+e);t=await s.default.get(r,{responseType:"blob"});const i=URL.createObjectURL(t.data),d=await this.getColorPaletteFromBlob(i);n=null==d||null===(a=d.DarkVibrant)||void 0===a?void 0:a.hex,this.setFile(e,n),y.debug("Extracted colour",n,"from custom image",e,d)}catch(a){this.setFile(e),y.error("Unable to extract colour from custom image",{error:a,path:e,response:t,color:n})}},getColorPaletteFromBlob:e=>new Promise(((t,n)=>{new(C())(e).getPalette(((e,a)=>{e&&n(e),t(a)}))}))}};var E=a(93379),U=a.n(E),j=a(7795),P=a.n(j),O=a(90569),G=a.n(O),F=a(3565),L=a.n(F),Z=a(19216),q=a.n(Z),R=a(44589),N=a.n(R),z=a(66388),W={};W.styleTagTransform=N(),W.setAttributes=L(),W.insert=G().bind(null,"head"),W.domAPI=P(),W.insertStyleElement=q(),U()(z.Z,W),z.Z&&z.Z.locals&&z.Z.locals;var M=a(51900);const K=(0,M.Z)(S,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"background-selector",attrs:{"data-user-theming-background-settings":""}},[t("button",{staticClass:"background background__filepicker",class:{"icon-loading":"custom"===e.loading,"background--active":"custom"===e.backgroundImage},attrs:{"data-color-bright":e.invertTextColor(e.Theming.color),"data-user-theming-background-custom":"",tabindex:"0"},on:{click:e.pickFile}},[e._v("\n\t\t"+e._s(e.t("theming","Custom background"))+"\n\t\t"),"custom"!==e.backgroundImage?t("ImageEdit",{attrs:{size:26}}):e._e(),e._v(" "),t("Check",{attrs:{size:44}})],1),e._v(" "),t("button",{staticClass:"background background__default",class:{"icon-loading":"default"===e.loading,"background--active":"default"===e.backgroundImage},style:{"--border-color":e.Theming.defaultColor},attrs:{"data-color-bright":e.invertTextColor(e.Theming.defaultColor),"data-user-theming-background-default":"",tabindex:"0"},on:{click:e.setDefault}},[e._v("\n\t\t"+e._s(e.t("theming","Default background"))+"\n\t\t"),t("Check",{attrs:{size:44}})],1),e._v(" "),t("NcColorPicker",{on:{input:e.debouncePickColor},model:{value:e.Theming.color,callback:function(t){e.$set(e.Theming,"color",t)},expression:"Theming.color"}},[t("button",{staticClass:"background background__color",style:{backgroundColor:e.Theming.color,"--border-color":e.Theming.color},attrs:{"data-color":e.Theming.color,"data-color-bright":e.invertTextColor(e.Theming.color),"data-user-theming-background-color":"",tabindex:"0"}},[e._v("\n\t\t\t"+e._s(e.t("theming","Change color"))+"\n\t\t")])]),e._v(" "),t("button",{staticClass:"background background__delete",class:{"background--active":e.isBackgroundDisabled},attrs:{"data-user-theming-background-clear":"",tabindex:"0"},on:{click:e.removeBackground}},[e._v("\n\t\t"+e._s(e.t("theming","No background"))+"\n\t\t"),e.isBackgroundDisabled?e._e():t("Close",{attrs:{size:32}}),e._v(" "),t("Check",{attrs:{size:44}})],1),e._v(" "),e._l(e.shippedBackgrounds,(function(n){return t("button",{key:n.name,staticClass:"background background__shipped",class:{"icon-loading":e.loading===n.name,"background--active":e.backgroundImage===n.name},style:{backgroundImage:"url("+n.preview+")","--border-color":n.details.primary_color},attrs:{title:n.details.attribution,"aria-label":n.details.attribution,"data-color-bright":"dark"===n.details.theming,"data-user-theming-background-shipped":n.name,tabindex:"0"},on:{click:function(t){return e.setShipped(n.name)}}},[t("Check",{attrs:{size:44}})],1)}))],2)}),[],!1,null,"38d8d450",null).exports;var $=a(25108);const Y={name:"ItemPreview",components:{NcCheckboxRadioSwitch:c()},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType(){return this.unique?"switch":"radio"},name(){return this.unique?null:this.type},img(){return(0,o.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get(){return this.selected},set(e){$.debug("Changed theme",this.theme.id,e),this.unique?this.$emit("change",{enabled:!0===e,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}};var H=a(36907),V={};V.styleTagTransform=N(),V.setAttributes=L(),V.insert=G().bind(null,"head"),V.domAPI=P(),V.insertStyleElement=q(),U()(H.Z,V),H.Z&&H.Z.locals&&H.Z.locals;const Q=(0,M.Z)(Y,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"theming__preview",class:"theming__preview--"+e.theme.id},[t("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+e.img+")"},on:{click:e.onToggle}}),e._v(" "),t("div",{staticClass:"theming__preview-description"},[t("h3",[e._v(e._s(e.theme.title))]),e._v(" "),t("p",[e._v(e._s(e.theme.description))]),e._v(" "),e.enforced?t("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[e._v("\n\t\t\t"+e._s(e.t("theming","Theme selection is enforced"))+"\n\t\t")]):e._e(),e._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:e.checked,disabled:e.enforced,name:e.name,type:e.switchType},on:{"update:checked":function(t){e.checked=t}}},[e._v("\n\t\t\t"+e._s(e.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"30cd5e6b",null).exports;var J=a(25108);const X=(0,i.j)("theming","themes",[]),ee=(0,i.j)("theming","enforceTheme",""),te=(0,i.j)("theming","shortcutsDisabled",!1),ne=(0,i.j)("theming","isUserThemingDisabled");J.debug("Available themes",X);const ae={name:"UserThemes",components:{ItemPreview:Q,NcCheckboxRadioSwitch:c(),NcSettingsSection:g(),BackgroundSettings:K},data:()=>({availableThemes:X,enforceTheme:ee,shortcutsDisabled:te,isUserThemingDisabled:ne}),computed:{themes(){return this.availableThemes.filter((e=>1===e.type))},fonts(){return this.availableThemes.filter((e=>2===e.type))},selectedTheme(){return this.themes.find((e=>!0===e.enabled))||this.themes[0]},description(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:()=>'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">',descriptionDetail(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:()=>'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">',designteamLink:()=>'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'},watch:{shortcutsDisabled(e){this.changeShortcutsDisabled(e)}},methods:{refreshGlobalStyles(){[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const n=e.cloneNode();n.href=t.toString(),n.onload=()=>e.remove(),document.head.append(n)}))},updateBackground(e){this.background="custom"===e.type||"default"===e.type?e.type:e.value,this.refreshGlobalStyles()},changeTheme(e){let{enabled:t,id:n}=e;this.themes.forEach((e=>{e.id===n&&t?e.enabled=!0:e.enabled=!1})),this.updateBodyAttributes(),this.selectItem(t,n)},changeFont(e){let{enabled:t,id:n}=e;this.fonts.forEach((e=>{e.id===n&&t?e.enabled=!0:e.enabled=!1})),this.updateBodyAttributes(),this.selectItem(t,n)},async changeShortcutsDisabled(e){e?await(0,s.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"}):await(0,s.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"})},updateBodyAttributes(){const e=this.themes.filter((e=>!0===e.enabled)).map((e=>e.id)),t=this.fonts.filter((e=>!0===e.enabled)).map((e=>e.id));this.themes.forEach((e=>{document.body.toggleAttribute("data-theme-".concat(e.id),e.enabled)})),this.fonts.forEach((e=>{document.body.toggleAttribute("data-theme-".concat(e.id),e.enabled)})),document.body.setAttribute("data-themes",[...e,...t].join(","))},async selectItem(e,n){try{e?await(0,s.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:n}),method:"PUT"}):await(0,s.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:n}),method:"DELETE"})}catch(e){J.error(e,e.response),OC.Notification.showTemporary(t("theming",e.response.data.ocs.meta.message+". Unable to apply the setting."))}}}};var re=a(1080),oe={};oe.styleTagTransform=N(),oe.setAttributes=L(),oe.insert=G().bind(null,"head"),oe.domAPI=P(),oe.insertStyleElement=q(),U()(re.Z,oe),re.Z&&re.Z.locals&&re.Z.locals;const ie=(0,M.Z)(ae,(function(){var e=this,t=e._self._c;return t("section",[t("NcSettingsSection",{staticClass:"theming",attrs:{title:e.t("theming","Appearance and accessibility"),"limit-width":!1}},[t("p",{domProps:{innerHTML:e._s(e.description)}}),e._v(" "),t("p",{domProps:{innerHTML:e._s(e.descriptionDetail)}}),e._v(" "),t("div",{staticClass:"theming__preview-list"},e._l(e.themes,(function(n){return t("ItemPreview",{key:n.id,attrs:{enforced:n.id===e.enforceTheme,selected:e.selectedTheme.id===n.id,theme:n,unique:1===e.themes.length,type:"theme"},on:{change:e.changeTheme}})})),1),e._v(" "),t("div",{staticClass:"theming__preview-list"},e._l(e.fonts,(function(n){return t("ItemPreview",{key:n.id,attrs:{selected:n.enabled,theme:n,unique:1===e.fonts.length,type:"font"},on:{change:e.changeFont}})})),1)]),e._v(" "),t("NcSettingsSection",{attrs:{title:e.t("theming","Keyboard shortcuts")}},[t("p",[e._v(e._s(e.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),e._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:e.shortcutsDisabled,name:"shortcuts_disabled",type:"switch"},on:{"update:checked":function(t){e.shortcutsDisabled=t},change:e.changeShortcutsDisabled}},[e._v("\n\t\t\t"+e._s(e.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),e._v(" "),t("NcSettingsSection",{staticClass:"background",attrs:{title:e.t("theming","Background"),"data-user-theming-background-disabled":""}},[e.isUserThemingDisabled?[t("p",[e._v(e._s(e.t("theming","Customization has been disabled by your administrator")))])]:[t("p",[e._v(e._s(e.t("theming","Set a custom background")))]),e._v(" "),t("BackgroundSettings",{staticClass:"background__grid",on:{"update:background":e.refreshGlobalStyles}})]],2)],1)}),[],!1,null,"4e5e21ba",null).exports;r.default.prototype.OC=OC,r.default.prototype.t=t;const se=new(r.default.extend(ie));se.$mount("#theming"),se.$on("update:background",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((e=>{const t=new URL(e.href);t.searchParams.set("v",Date.now());const n=e.cloneNode();n.href=t.toString(),n.onload=()=>e.remove(),document.head.append(n)}))}))},1080:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(87537),r=n.n(a),o=n(23645),i=n.n(o)()(r());i.push([e.id,".theming p[data-v-4e5e21ba]{max-width:800px}.theming[data-v-4e5e21ba] a{font-weight:bold}.theming[data-v-4e5e21ba] a:hover,.theming[data-v-4e5e21ba] a:focus{text-decoration:underline}.theming__preview-list[data-v-4e5e21ba]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-4e5e21ba]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-4e5e21ba]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]);const s=i},66388:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(87537),r=n.n(a),o=n(23645),i=n.n(o)()(r());i.push([e.id,".background-selector[data-v-38d8d450]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-38d8d450]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-38d8d450]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-38d8d450]{background-color:var(--color-primary-default);background-image:var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-38d8d450],.background-selector .background__default[data-v-38d8d450],.background-selector .background__color[data-v-38d8d450]{border-color:var(--color-border)}.background-selector .background__color[data-v-38d8d450]{color:var(--color-primary-text);background-color:var(--color-primary-default)}.background-selector .background__default[data-v-38d8d450],.background-selector .background__shipped[data-v-38d8d450]{color:#fff}.background-selector .background[data-color-bright][data-v-38d8d450]{color:#000}.background-selector .background--active[data-v-38d8d450],.background-selector .background[data-v-38d8d450]:hover,.background-selector .background[data-v-38d8d450]:focus{border:2px solid var(--border-color, var(--color-primary-element)) !important}.background-selector .background span[data-v-38d8d450]{margin:4px}.background-selector .background .check-icon[data-v-38d8d450]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-38d8d450]{display:block !important}","",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,+EAAA,CAGD,kLACC,gCAAA,CAGD,yDACC,+BAAA,CACA,6CAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAIC,6EAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA",sourcesContent:["\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&__color {\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\t// Use theme color primary, see inline css variable in template\n\t\t\tborder: 2px solid var(--border-color, var(--color-primary-element)) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=i},36907:(e,t,n)=>{n.d(t,{Z:()=>s});var a=n(87537),r=n.n(a),o=n(23645),i=n.n(o)()(r());i.push([e.id,".theming__preview[data-v-30cd5e6b]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-30cd5e6b],.theming__preview *[data-v-30cd5e6b]{user-select:none}.theming__preview-image[data-v-30cd5e6b]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-30cd5e6b]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-30cd5e6b]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-30cd5e6b]{padding:12px 0}.theming__preview--default[data-v-30cd5e6b]{grid-column:span 2}.theming__preview-warning[data-v-30cd5e6b]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-30cd5e6b]{flex-direction:column}.theming__preview-image[data-v-30cd5e6b]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=i}},a={};function r(e){var t=a[e];if(void 0!==t)return t.exports;var o=a[e]={id:e,loaded:!1,exports:{}};return n[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.m=n,e=[],r.O=(t,n,a,o)=>{if(!n){var i=1/0;for(l=0;l<e.length;l++){n=e[l][0],a=e[l][1],o=e[l][2];for(var s=!0,d=0;d<n.length;d++)(!1&o||i>=o)&&Object.keys(r.O).every((e=>r.O[e](n[d])))?n.splice(d--,1):(s=!1,o<i&&(i=o));if(s){e.splice(l--,1);var c=a();void 0!==c&&(t=c)}}return t}o=o||0;for(var l=e.length;l>0&&e[l-1][2]>o;l--)e[l]=e[l-1];e[l]=[n,a,o]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=1474,(()=>{r.b=document.baseURI||self.location.href;var e={1474:0};r.O.j=t=>0===e[t];var t=(t,n)=>{var a,o,i=n[0],s=n[1],d=n[2],c=0;if(i.some((t=>0!==e[t]))){for(a in s)r.o(s,a)&&(r.m[a]=s[a]);if(d)var l=d(r)}for(t&&t(n);c<i.length;c++)o=i[c],r.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return r.O(l)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),r.nc=void 0;var o=r.O(void 0,[7874],(()=>r(5319)));o=r.O(o)})(); +//# sourceMappingURL=theming-personal-theming.js.map?v=26230dcbc9e2d8effb2a
\ No newline at end of file diff --git a/dist/theming-personal-theming.js.map b/dist/theming-personal-theming.js.map index 1fcae06571d..f01c0a14862 100644 --- a/dist/theming-personal-theming.js.map +++ b/dist/theming-personal-theming.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-personal-theming.js?v=1f5be71f263fef96c8f1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?1780","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?da76","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?7631","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?fb82","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/UserThemes.vue?385c","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?b683","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=8a72fa3e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\" data-user-theming-background-settings>\n\t\t<!-- Custom background -->\n\t\t<button class=\"background background__filepicker\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'custom', 'background--active': backgroundImage === 'custom' }\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\tdata-user-theming-background-custom\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Custom background') }}\n\t\t\t<ImageEdit v-if=\"backgroundImage !== 'custom'\" :size=\"26\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Default background -->\n\t\t<button class=\"background background__default\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', 'background--active': backgroundImage === 'default' }\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.defaultColor)\"\n\t\t\t:style=\"{ '--border-color': Theming.defaultColor }\"\n\t\t\tdata-user-theming-background-default\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default background') }}\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Custom color picker -->\n\t\t<NcColorPicker v-model=\"Theming.color\" @input=\"debouncePickColor\">\n\t\t\t<button class=\"background background__color\"\n\t\t\t\t:data-color=\"Theming.color\"\n\t\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\t\t:style=\"{ backgroundColor: Theming.color, '--border-color': Theming.color}\"\n\t\t\t\tdata-user-theming-background-color\n\t\t\t\ttabindex=\"0\">\n\t\t\t\t{{ t('theming', 'Change color') }}\n\t\t\t</button>\n\t\t</NcColorPicker>\n\n\t\t<!-- Remove background -->\n\t\t<button class=\"background background__delete\"\n\t\t\t:class=\"{ 'background--active': isBackgroundDisabled }\"\n\t\t\tdata-user-theming-background-clear\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"removeBackground\">\n\t\t\t{{ t('theming', 'No background') }}\n\t\t\t<Close v-if=\"!isBackgroundDisabled\" :size=\"32\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Background set selection -->\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\t:title=\"shippedBackground.details.attribution\"\n\t\t\t:aria-label=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, 'background--active': backgroundImage === shippedBackground.name }\"\n\t\t\t:data-color-bright=\"shippedBackground.details.theming === 'dark'\"\n\t\t\t:data-user-theming-background-shipped=\"shippedBackground.name\"\n\t\t\t:style=\"{ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }\"\n\t\t\tclass=\"background background__shipped\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\">\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath, generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport ImageEdit from 'vue-material-design-icons/ImageEdit.vue'\nimport debounce from 'debounce'\nimport NcColorPicker from '@nextcloud/vue/dist/Components/NcColorPicker.js'\nimport Vibrant from 'node-vibrant'\nimport { Palette } from 'node-vibrant/lib/color.js'\nimport { getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nconst backgroundImage = loadState('theming', 'backgroundImage')\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst defaultShippedBackground = loadState('theming', 'defaultShippedBackground')\n\nconst prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\nconst picker = getFilePickerBuilder(t('theming', 'Select a background from your files'))\n\t.setMultiSelect(false)\n\t.setModal(true)\n\t.setType(1)\n\t.setMimeTypeFilter(['image/png', 'image/gif', 'image/jpeg', 'image/svg+xml', 'image/svg'])\n\t.build()\n\nexport default {\n\tname: 'BackgroundSettings',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClose,\n\t\tImageEdit,\n\t\tNcColorPicker,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tTheming: loadState('theming', 'data', {}),\n\n\t\t\t// User background image and color settings\n\t\t\tbackgroundImage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList)\n\t\t\t\t.map(fileName => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(background => {\n\t\t\t\t\t// If the admin did not changed the global background\n\t\t\t\t\t// let's hide the default background to not show it twice\n\t\t\t\t\tif (!this.isGlobalBackgroundDeleted && !this.isGlobalBackgroundDefault) {\n\t\t\t\t\t\treturn background.name !== defaultShippedBackground\n\t\t\t\t\t}\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t},\n\n\t\tisGlobalBackgroundDefault() {\n\t\t\treturn !!themingDefaultBackground\n\t\t},\n\n\t\tisGlobalBackgroundDeleted() {\n\t\t\treturn themingDefaultBackground === 'backgroundColor'\n\t\t},\n\n\t\tisBackgroundDisabled() {\n\t\t\treturn this.backgroundImage === 'disabled'\n\t\t\t|| !this.backgroundImage\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Do we need to invert the text if color is too bright?\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tinvertTextColor(color) {\n\t\t\treturn this.calculateLuma(color) > 0.6\n\t\t},\n\n\t\t/**\n\t\t * Calculate luminance of provided hex color\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tcalculateLuma(color) {\n\t\t\tconst [red, green, blue] = this.hexToRGB(color)\n\t\t\treturn (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255\n\t\t},\n\n\t\t/**\n\t\t * Convert hex color to RGB\n\t\t *\n\t\t * @param {string} hex the hex color\n\t\t */\n\t\thexToRGB(hex) {\n\t\t\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\t\t\treturn result\n\t\t\t\t? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]\n\t\t\t\t: null\n\t\t},\n\n\t\t/**\n\t\t * Update local state\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.backgroundColor background color value\n\t\t * @param {string} data.backgroundImage background image value\n\t\t * @param {string} data.version cache buster number\n\t\t * @see https://github.com/nextcloud/server/blob/c78bd45c64d9695724fc44fe8453a88824b85f2f/apps/theming/lib/Controller/UserThemeController.php#L187-L191\n\t\t */\n\t\tasync update(data) {\n\t\t\t// Update state\n\t\t\tthis.backgroundImage = data.backgroundImage\n\t\t\tthis.Theming.color = data.backgroundColor\n\n\t\t\t// Notify parent and reload style\n\t\t\tthis.$emit('update:background')\n\t\t\tthis.loading = false\n\t\t},\n\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setFile(path, color = null) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path, color })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.loading = 'remove'\n\t\t\tconst result = await axios.delete(generateUrl('/apps/theming/background/custom'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync pickColor(event) {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = event?.target?.dataset?.color || this.Theming?.color || '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tdebouncePickColor: debounce(function() {\n\t\t\tthis.pickColor(...arguments)\n\t\t}, 200),\n\n\t\tasync pickFile() {\n\t\t\tconst path = await picker.pick()\n\t\t\tthis.loading = 'custom'\n\n\t\t\t// Extract primary color from image\n\t\t\tlet response = null\n\t\t\tlet color = null\n\t\t\ttry {\n\t\t\t\tconst fileUrl = generateRemoteUrl('dav/files/' + getCurrentUser().uid + path)\n\t\t\t\tresponse = await axios.get(fileUrl, { responseType: 'blob' })\n\t\t\t\tconst blobUrl = URL.createObjectURL(response.data)\n\t\t\t\tconst palette = await this.getColorPaletteFromBlob(blobUrl)\n\n\t\t\t\t// DarkVibrant is accessible AND visually pleasing\n\t\t\t\t// Vibrant is not accessible enough and others are boring\n\t\t\t\tcolor = palette?.DarkVibrant?.hex\n\t\t\t\tthis.setFile(path, color)\n\n\t\t\t\t// Log data\n\t\t\t\tconsole.debug('Extracted colour', color, 'from custom image', path, palette)\n\t\t\t} catch (error) {\n\t\t\t\tthis.setFile(path)\n\t\t\t\tconsole.error('Unable to extract colour from custom image', { error, path, response, color })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extract a Vibrant color palette from a blob URL\n\t\t *\n\t\t * @param {string} blobUrl the blob URL\n\t\t * @return {Promise<Palette>}\n\t\t */\n\t\tgetColorPaletteFromBlob(blobUrl) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst vibrant = new Vibrant(blobUrl)\n\t\t\t\tvibrant.getPalette((error, palette) => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(palette)\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&__color {\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\t// Use theme color primary, see inline css variable in template\n\t\t\tborder: 2px solid var(--border-color, var(--color-primary)) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=8a72fa3e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=8a72fa3e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=8a72fa3e&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=8a72fa3e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8a72fa3e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"background-selector\",attrs:{\"data-user-theming-background-settings\":\"\"}},[_c('button',{staticClass:\"background background__filepicker\",class:{ 'icon-loading': _vm.loading === 'custom', 'background--active': _vm.backgroundImage === 'custom' },attrs:{\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-custom\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Custom background'))+\"\\n\\t\\t\"),(_vm.backgroundImage !== 'custom')?_c('ImageEdit',{attrs:{\"size\":26}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('button',{staticClass:\"background background__default\",class:{ 'icon-loading': _vm.loading === 'default', 'background--active': _vm.backgroundImage === 'default' },style:({ '--border-color': _vm.Theming.defaultColor }),attrs:{\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor),\"data-user-theming-background-default\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('button',{staticClass:\"background background__color\",style:({ backgroundColor: _vm.Theming.color, '--border-color': _vm.Theming.color}),attrs:{\"data-color\":_vm.Theming.color,\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-color\":\"\",\"tabindex\":\"0\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('button',{staticClass:\"background background__delete\",class:{ 'background--active': _vm.isBackgroundDisabled },attrs:{\"data-user-theming-background-clear\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.removeBackground}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'No background'))+\"\\n\\t\\t\"),(!_vm.isBackgroundDisabled)?_c('Close',{attrs:{\"size\":32}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{key:shippedBackground.name,staticClass:\"background background__shipped\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, 'background--active': _vm.backgroundImage === shippedBackground.name },style:({ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }),attrs:{\"title\":shippedBackground.details.attribution,\"aria-label\":shippedBackground.details.attribution,\"data-color-bright\":shippedBackground.details.theming === 'dark',\"data-user-theming-background-shipped\":shippedBackground.name,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}},[_c('Check',{attrs:{\"size\":44}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p>{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=30cd5e6b&scoped=true&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30cd5e6b\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Appearance and accessibility')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<p v-html=\"description\" />\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\tname=\"shortcuts_disabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\"\n\t\t\tdata-user-theming-background-disabled>\n\t\t\t<template v-if=\"isUserThemingDisabled\">\n\t\t\t\t<p>{{ t('theming', 'Customization has been disabled by your administrator') }}</p>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t\t<BackgroundSettings class=\"background__grid\" @update:background=\"refreshGlobalStyles\" />\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\n\nconst isUserThemingDisabled = loadState('theming', 'isUserThemingDisabled')\n\nconsole.debug('Available themes', availableThemes)\n\nexport default {\n\tname: 'UserThemes',\n\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\n\t\t\t// Admin defined configs\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tisUserThemingDisabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t// Refresh server-side generated theming CSS\n\t\trefreshGlobalStyles() {\n\t\t\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\t\t\tconst url = new URL(theme.href)\n\t\t\t\turl.searchParams.set('v', Date.now())\n\t\t\t\tconst newTheme = theme.cloneNode()\n\t\t\t\tnewTheme.href = url.toString()\n\t\t\t\tnewTheme.onload = () => theme.remove()\n\t\t\t\tdocument.head.append(newTheme)\n\t\t\t})\n\t\t},\n\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.refreshGlobalStyles()\n\t\t},\n\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=4e5e21ba&scoped=true&\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js&\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e5e21ba\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"title\":_vm.t('theming', 'Appearance and accessibility'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"name\":\"shortcuts_disabled\",\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"title\":_vm.t('theming', 'Background'),\"data-user-theming-background-disabled\":\"\"}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",on:{\"update:background\":_vm.refreshGlobalStyles}})]],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './UserThemes.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming p[data-v-4e5e21ba]{max-width:800px}.theming[data-v-4e5e21ba] a{font-weight:bold}.theming[data-v-4e5e21ba] a:hover,.theming[data-v-4e5e21ba] a:focus{text-decoration:underline}.theming__preview-list[data-v-4e5e21ba]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-4e5e21ba]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-4e5e21ba]{display:flex;flex-direction:column}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-8a72fa3e]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-8a72fa3e]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-8a72fa3e]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-8a72fa3e]{background-color:var(--color-primary-default);background-image:var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-8a72fa3e],.background-selector .background__default[data-v-8a72fa3e],.background-selector .background__color[data-v-8a72fa3e]{border-color:var(--color-border)}.background-selector .background__color[data-v-8a72fa3e]{color:var(--color-primary-text);background-color:var(--color-primary-default)}.background-selector .background__default[data-v-8a72fa3e],.background-selector .background__shipped[data-v-8a72fa3e]{color:#fff}.background-selector .background[data-color-bright][data-v-8a72fa3e]{color:#000}.background-selector .background--active[data-v-8a72fa3e],.background-selector .background[data-v-8a72fa3e]:hover,.background-selector .background[data-v-8a72fa3e]:focus{border:2px solid var(--border-color, var(--color-primary)) !important}.background-selector .background span[data-v-8a72fa3e]{margin:4px}.background-selector .background .check-icon[data-v-8a72fa3e]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-8a72fa3e]{display:block !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,+EAAA,CAGD,kLACC,gCAAA,CAGD,yDACC,+BAAA,CACA,6CAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAIC,qEAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA\",\"sourcesContent\":[\"\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\ttext-align: center;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: cover;\\n\\n\\t\\t&__filepicker {\\n\\t\\t\\t&.background--active {\\n\\t\\t\\t\\tcolor: white;\\n\\t\\t\\t\\tbackground-image: var(--image-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__default {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tbackground-image: var(--image-background-plain, var(--image-background-default));\\n\\t\\t}\\n\\n\\t\\t&__filepicker, &__default, &__color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&__color {\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t}\\n\\n\\t\\t// Over a background image\\n\\t\\t&__default,\\n\\t\\t&__shipped {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t// Text and svg icon dark on bright background\\n\\t\\t&[data-color-bright] {\\n\\t\\t\\tcolor: black;\\n\\t\\t}\\n\\n\\t\\t&--active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\t// Use theme color primary, see inline css variable in template\\n\\t\\t\\tborder: 2px solid var(--border-color, var(--color-primary)) !important;\\n\\t\\t}\\n\\n\\t\\t// Icon\\n\\t\\tspan {\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t.check-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t&--active:not(.icon-loading) {\\n\\t\\t\\t.check-icon {\\n\\t\\t\\t\\t// Show checkmark\\n\\t\\t\\t\\tdisplay: block !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming__preview[data-v-30cd5e6b]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-30cd5e6b],.theming__preview *[data-v-30cd5e6b]{user-select:none}.theming__preview-image[data-v-30cd5e6b]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-30cd5e6b]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-30cd5e6b]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-30cd5e6b]{padding:12px 0}.theming__preview--default[data-v-30cd5e6b]{grid-column:span 2}.theming__preview-warning[data-v-30cd5e6b]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-30cd5e6b]{flex-direction:column}.theming__preview-image[data-v-30cd5e6b]{margin:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3 {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: math.div(1024px, 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1474;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1474: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(47546)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","backgroundImage","loadState","shippedBackgroundList","themingDefaultBackground","defaultShippedBackground","prefixWithBaseUrl","url","generateFilePath","picker","getFilePickerBuilder","t","setMultiSelect","setModal","setType","setMimeTypeFilter","build","name","components","Check","Close","ImageEdit","NcColorPicker","data","loading","Theming","computed","shippedBackgrounds","Object","keys","map","fileName","preview","details","filter","background","isGlobalBackgroundDeleted","isGlobalBackgroundDefault","isBackgroundDisabled","methods","invertTextColor","color","calculateLuma","red","green","blue","hexToRGB","hex","result","exec","parseInt","backgroundColor","$emit","axios","generateUrl","update","shipped","value","path","arguments","length","undefined","event","_event$target","_event$target$dataset","_this$Theming","target","dataset","debouncePickColor","debounce","pickColor","pick","response","_palette$DarkVibrant","fileUrl","generateRemoteUrl","getCurrentUser","uid","responseType","blobUrl","URL","createObjectURL","palette","getColorPaletteFromBlob","DarkVibrant","setFile","console","debug","error","Promise","resolve","reject","Vibrant","getPalette","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","class","on","pickFile","_v","_s","_e","style","defaultColor","setDefault","model","callback","$$v","$set","expression","removeBackground","_l","shippedBackground","key","primary_color","attribution","theming","$event","setShipped","NcCheckboxRadioSwitch","props","enforced","type","Boolean","default","selected","theme","required","String","unique","switchType","img","id","checked","get","set","enabled","onToggle","title","description","enableLabel","availableThemes","enforceTheme","shortcutsDisabled","isUserThemingDisabled","ItemPreview","NcSettingsSection","BackgroundSettings","themes","fonts","selectedTheme","find","replace","guidelinesLink","descriptionDetail","issuetrackerLink","designteamLink","watch","newState","changeShortcutsDisabled","refreshGlobalStyles","document","head","querySelectorAll","forEach","href","searchParams","Date","now","newTheme","cloneNode","toString","onload","remove","append","updateBackground","changeTheme","_ref","updateBodyAttributes","selectItem","changeFont","_ref2","font","generateOcsUrl","appId","configKey","configValue","method","enabledThemesIDs","enabledFontsIDs","body","toggleAttribute","concat","setAttribute","join","themeId","err","OC","Notification","showTemporary","ocs","meta","message","domProps","Vue","App","$mount","$on","refreshStyles","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"theming-personal-theming.js?v=26230dcbc9e2d8effb2a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?045c","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?da76","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?7631","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?fb82","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/UserThemes.vue?385c","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?b683","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=38d8d450&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\" data-user-theming-background-settings>\n\t\t<!-- Custom background -->\n\t\t<button class=\"background background__filepicker\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'custom', 'background--active': backgroundImage === 'custom' }\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\tdata-user-theming-background-custom\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Custom background') }}\n\t\t\t<ImageEdit v-if=\"backgroundImage !== 'custom'\" :size=\"26\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Default background -->\n\t\t<button class=\"background background__default\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', 'background--active': backgroundImage === 'default' }\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.defaultColor)\"\n\t\t\t:style=\"{ '--border-color': Theming.defaultColor }\"\n\t\t\tdata-user-theming-background-default\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default background') }}\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Custom color picker -->\n\t\t<NcColorPicker v-model=\"Theming.color\" @input=\"debouncePickColor\">\n\t\t\t<button class=\"background background__color\"\n\t\t\t\t:data-color=\"Theming.color\"\n\t\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\t\t:style=\"{ backgroundColor: Theming.color, '--border-color': Theming.color}\"\n\t\t\t\tdata-user-theming-background-color\n\t\t\t\ttabindex=\"0\">\n\t\t\t\t{{ t('theming', 'Change color') }}\n\t\t\t</button>\n\t\t</NcColorPicker>\n\n\t\t<!-- Remove background -->\n\t\t<button class=\"background background__delete\"\n\t\t\t:class=\"{ 'background--active': isBackgroundDisabled }\"\n\t\t\tdata-user-theming-background-clear\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"removeBackground\">\n\t\t\t{{ t('theming', 'No background') }}\n\t\t\t<Close v-if=\"!isBackgroundDisabled\" :size=\"32\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Background set selection -->\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\t:title=\"shippedBackground.details.attribution\"\n\t\t\t:aria-label=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, 'background--active': backgroundImage === shippedBackground.name }\"\n\t\t\t:data-color-bright=\"shippedBackground.details.theming === 'dark'\"\n\t\t\t:data-user-theming-background-shipped=\"shippedBackground.name\"\n\t\t\t:style=\"{ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }\"\n\t\t\tclass=\"background background__shipped\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\">\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath, generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport ImageEdit from 'vue-material-design-icons/ImageEdit.vue'\nimport debounce from 'debounce'\nimport NcColorPicker from '@nextcloud/vue/dist/Components/NcColorPicker.js'\nimport Vibrant from 'node-vibrant'\nimport { Palette } from 'node-vibrant/lib/color.js'\nimport { getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nconst backgroundImage = loadState('theming', 'backgroundImage')\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst defaultShippedBackground = loadState('theming', 'defaultShippedBackground')\n\nconst prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\nconst picker = getFilePickerBuilder(t('theming', 'Select a background from your files'))\n\t.setMultiSelect(false)\n\t.setModal(true)\n\t.setType(1)\n\t.setMimeTypeFilter(['image/png', 'image/gif', 'image/jpeg', 'image/svg+xml', 'image/svg'])\n\t.build()\n\nexport default {\n\tname: 'BackgroundSettings',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClose,\n\t\tImageEdit,\n\t\tNcColorPicker,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tTheming: loadState('theming', 'data', {}),\n\n\t\t\t// User background image and color settings\n\t\t\tbackgroundImage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList)\n\t\t\t\t.map(fileName => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(background => {\n\t\t\t\t\t// If the admin did not changed the global background\n\t\t\t\t\t// let's hide the default background to not show it twice\n\t\t\t\t\tif (!this.isGlobalBackgroundDeleted && !this.isGlobalBackgroundDefault) {\n\t\t\t\t\t\treturn background.name !== defaultShippedBackground\n\t\t\t\t\t}\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t},\n\n\t\tisGlobalBackgroundDefault() {\n\t\t\treturn !!themingDefaultBackground\n\t\t},\n\n\t\tisGlobalBackgroundDeleted() {\n\t\t\treturn themingDefaultBackground === 'backgroundColor'\n\t\t},\n\n\t\tisBackgroundDisabled() {\n\t\t\treturn this.backgroundImage === 'disabled'\n\t\t\t|| !this.backgroundImage\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Do we need to invert the text if color is too bright?\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tinvertTextColor(color) {\n\t\t\treturn this.calculateLuma(color) > 0.6\n\t\t},\n\n\t\t/**\n\t\t * Calculate luminance of provided hex color\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tcalculateLuma(color) {\n\t\t\tconst [red, green, blue] = this.hexToRGB(color)\n\t\t\treturn (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255\n\t\t},\n\n\t\t/**\n\t\t * Convert hex color to RGB\n\t\t *\n\t\t * @param {string} hex the hex color\n\t\t */\n\t\thexToRGB(hex) {\n\t\t\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\t\t\treturn result\n\t\t\t\t? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]\n\t\t\t\t: null\n\t\t},\n\n\t\t/**\n\t\t * Update local state\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.backgroundColor background color value\n\t\t * @param {string} data.backgroundImage background image value\n\t\t * @param {string} data.version cache buster number\n\t\t * @see https://github.com/nextcloud/server/blob/c78bd45c64d9695724fc44fe8453a88824b85f2f/apps/theming/lib/Controller/UserThemeController.php#L187-L191\n\t\t */\n\t\tasync update(data) {\n\t\t\t// Update state\n\t\t\tthis.backgroundImage = data.backgroundImage\n\t\t\tthis.Theming.color = data.backgroundColor\n\n\t\t\t// Notify parent and reload style\n\t\t\tthis.$emit('update:background')\n\t\t\tthis.loading = false\n\t\t},\n\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setFile(path, color = null) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path, color })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.loading = 'remove'\n\t\t\tconst result = await axios.delete(generateUrl('/apps/theming/background/custom'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync pickColor(event) {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = event?.target?.dataset?.color || this.Theming?.color || '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tdebouncePickColor: debounce(function() {\n\t\t\tthis.pickColor(...arguments)\n\t\t}, 200),\n\n\t\tasync pickFile() {\n\t\t\tconst path = await picker.pick()\n\t\t\tthis.loading = 'custom'\n\n\t\t\t// Extract primary color from image\n\t\t\tlet response = null\n\t\t\tlet color = null\n\t\t\ttry {\n\t\t\t\tconst fileUrl = generateRemoteUrl('dav/files/' + getCurrentUser().uid + path)\n\t\t\t\tresponse = await axios.get(fileUrl, { responseType: 'blob' })\n\t\t\t\tconst blobUrl = URL.createObjectURL(response.data)\n\t\t\t\tconst palette = await this.getColorPaletteFromBlob(blobUrl)\n\n\t\t\t\t// DarkVibrant is accessible AND visually pleasing\n\t\t\t\t// Vibrant is not accessible enough and others are boring\n\t\t\t\tcolor = palette?.DarkVibrant?.hex\n\t\t\t\tthis.setFile(path, color)\n\n\t\t\t\t// Log data\n\t\t\t\tconsole.debug('Extracted colour', color, 'from custom image', path, palette)\n\t\t\t} catch (error) {\n\t\t\t\tthis.setFile(path)\n\t\t\t\tconsole.error('Unable to extract colour from custom image', { error, path, response, color })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extract a Vibrant color palette from a blob URL\n\t\t *\n\t\t * @param {string} blobUrl the blob URL\n\t\t * @return {Promise<Palette>}\n\t\t */\n\t\tgetColorPaletteFromBlob(blobUrl) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst vibrant = new Vibrant(blobUrl)\n\t\t\t\tvibrant.getPalette((error, palette) => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(palette)\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&__color {\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\t// Use theme color primary, see inline css variable in template\n\t\t\tborder: 2px solid var(--border-color, var(--color-primary-element)) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=38d8d450&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=38d8d450&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=38d8d450&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=38d8d450&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38d8d450\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"background-selector\",attrs:{\"data-user-theming-background-settings\":\"\"}},[_c('button',{staticClass:\"background background__filepicker\",class:{ 'icon-loading': _vm.loading === 'custom', 'background--active': _vm.backgroundImage === 'custom' },attrs:{\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-custom\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Custom background'))+\"\\n\\t\\t\"),(_vm.backgroundImage !== 'custom')?_c('ImageEdit',{attrs:{\"size\":26}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('button',{staticClass:\"background background__default\",class:{ 'icon-loading': _vm.loading === 'default', 'background--active': _vm.backgroundImage === 'default' },style:({ '--border-color': _vm.Theming.defaultColor }),attrs:{\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor),\"data-user-theming-background-default\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('button',{staticClass:\"background background__color\",style:({ backgroundColor: _vm.Theming.color, '--border-color': _vm.Theming.color}),attrs:{\"data-color\":_vm.Theming.color,\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-color\":\"\",\"tabindex\":\"0\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('button',{staticClass:\"background background__delete\",class:{ 'background--active': _vm.isBackgroundDisabled },attrs:{\"data-user-theming-background-clear\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.removeBackground}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'No background'))+\"\\n\\t\\t\"),(!_vm.isBackgroundDisabled)?_c('Close',{attrs:{\"size\":32}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{key:shippedBackground.name,staticClass:\"background background__shipped\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, 'background--active': _vm.backgroundImage === shippedBackground.name },style:({ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }),attrs:{\"title\":shippedBackground.details.attribution,\"aria-label\":shippedBackground.details.attribution,\"data-color-bright\":shippedBackground.details.theming === 'dark',\"data-user-theming-background-shipped\":shippedBackground.name,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}},[_c('Check',{attrs:{\"size\":44}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p>{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=30cd5e6b&scoped=true&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=30cd5e6b&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"30cd5e6b\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Appearance and accessibility')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<p v-html=\"description\" />\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\tname=\"shortcuts_disabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\"\n\t\t\tdata-user-theming-background-disabled>\n\t\t\t<template v-if=\"isUserThemingDisabled\">\n\t\t\t\t<p>{{ t('theming', 'Customization has been disabled by your administrator') }}</p>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t\t<BackgroundSettings class=\"background__grid\" @update:background=\"refreshGlobalStyles\" />\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\n\nconst isUserThemingDisabled = loadState('theming', 'isUserThemingDisabled')\n\nconsole.debug('Available themes', availableThemes)\n\nexport default {\n\tname: 'UserThemes',\n\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\n\t\t\t// Admin defined configs\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tisUserThemingDisabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t// Refresh server-side generated theming CSS\n\t\trefreshGlobalStyles() {\n\t\t\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\t\t\tconst url = new URL(theme.href)\n\t\t\t\turl.searchParams.set('v', Date.now())\n\t\t\t\tconst newTheme = theme.cloneNode()\n\t\t\t\tnewTheme.href = url.toString()\n\t\t\t\tnewTheme.onload = () => theme.remove()\n\t\t\t\tdocument.head.append(newTheme)\n\t\t\t})\n\t\t},\n\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.refreshGlobalStyles()\n\t\t},\n\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=4e5e21ba&scoped=true&\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js&\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=4e5e21ba&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e5e21ba\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"title\":_vm.t('theming', 'Appearance and accessibility'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"name\":\"shortcuts_disabled\",\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"title\":_vm.t('theming', 'Background'),\"data-user-theming-background-disabled\":\"\"}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",on:{\"update:background\":_vm.refreshGlobalStyles}})]],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './UserThemes.vue'\nimport { refreshStyles } from './helpers/refreshStyles.js'\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming p[data-v-4e5e21ba]{max-width:800px}.theming[data-v-4e5e21ba] a{font-weight:bold}.theming[data-v-4e5e21ba] a:hover,.theming[data-v-4e5e21ba] a:focus{text-decoration:underline}.theming__preview-list[data-v-4e5e21ba]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-4e5e21ba]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-4e5e21ba]{display:flex;flex-direction:column}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-38d8d450]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-38d8d450]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-38d8d450]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-38d8d450]{background-color:var(--color-primary-default);background-image:var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-38d8d450],.background-selector .background__default[data-v-38d8d450],.background-selector .background__color[data-v-38d8d450]{border-color:var(--color-border)}.background-selector .background__color[data-v-38d8d450]{color:var(--color-primary-text);background-color:var(--color-primary-default)}.background-selector .background__default[data-v-38d8d450],.background-selector .background__shipped[data-v-38d8d450]{color:#fff}.background-selector .background[data-color-bright][data-v-38d8d450]{color:#000}.background-selector .background--active[data-v-38d8d450],.background-selector .background[data-v-38d8d450]:hover,.background-selector .background[data-v-38d8d450]:focus{border:2px solid var(--border-color, var(--color-primary-element)) !important}.background-selector .background span[data-v-38d8d450]{margin:4px}.background-selector .background .check-icon[data-v-38d8d450]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-38d8d450]{display:block !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,+EAAA,CAGD,kLACC,gCAAA,CAGD,yDACC,+BAAA,CACA,6CAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAIC,6EAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA\",\"sourcesContent\":[\"\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\ttext-align: center;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: cover;\\n\\n\\t\\t&__filepicker {\\n\\t\\t\\t&.background--active {\\n\\t\\t\\t\\tcolor: white;\\n\\t\\t\\t\\tbackground-image: var(--image-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__default {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tbackground-image: var(--image-background-plain, var(--image-background-default));\\n\\t\\t}\\n\\n\\t\\t&__filepicker, &__default, &__color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&__color {\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t}\\n\\n\\t\\t// Over a background image\\n\\t\\t&__default,\\n\\t\\t&__shipped {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t// Text and svg icon dark on bright background\\n\\t\\t&[data-color-bright] {\\n\\t\\t\\tcolor: black;\\n\\t\\t}\\n\\n\\t\\t&--active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\t// Use theme color primary, see inline css variable in template\\n\\t\\t\\tborder: 2px solid var(--border-color, var(--color-primary-element)) !important;\\n\\t\\t}\\n\\n\\t\\t// Icon\\n\\t\\tspan {\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t.check-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t&--active:not(.icon-loading) {\\n\\t\\t\\t.check-icon {\\n\\t\\t\\t\\t// Show checkmark\\n\\t\\t\\t\\tdisplay: block !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming__preview[data-v-30cd5e6b]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-30cd5e6b],.theming__preview *[data-v-30cd5e6b]{user-select:none}.theming__preview-image[data-v-30cd5e6b]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-30cd5e6b]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-30cd5e6b]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-30cd5e6b]{padding:12px 0}.theming__preview--default[data-v-30cd5e6b]{grid-column:span 2}.theming__preview-warning[data-v-30cd5e6b]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-30cd5e6b]{flex-direction:column}.theming__preview-image[data-v-30cd5e6b]{margin:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3 {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: math.div(1024px, 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1474;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1474: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(5319)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","backgroundImage","loadState","shippedBackgroundList","themingDefaultBackground","defaultShippedBackground","prefixWithBaseUrl","url","generateFilePath","picker","getFilePickerBuilder","t","setMultiSelect","setModal","setType","setMimeTypeFilter","build","name","components","Check","Close","ImageEdit","NcColorPicker","data","loading","Theming","computed","shippedBackgrounds","Object","keys","map","fileName","preview","details","filter","background","isGlobalBackgroundDeleted","isGlobalBackgroundDefault","isBackgroundDisabled","methods","invertTextColor","color","calculateLuma","red","green","blue","hexToRGB","hex","result","exec","parseInt","backgroundColor","$emit","axios","generateUrl","update","shipped","value","path","arguments","length","undefined","event","_event$target","_event$target$dataset","_this$Theming","target","dataset","debouncePickColor","debounce","pickColor","pick","response","_palette$DarkVibrant","fileUrl","generateRemoteUrl","getCurrentUser","uid","responseType","blobUrl","URL","createObjectURL","palette","getColorPaletteFromBlob","DarkVibrant","setFile","console","debug","error","Promise","resolve","reject","Vibrant","getPalette","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","class","on","pickFile","_v","_s","_e","style","defaultColor","setDefault","model","callback","$$v","$set","expression","removeBackground","_l","shippedBackground","key","primary_color","attribution","theming","$event","setShipped","NcCheckboxRadioSwitch","props","enforced","type","Boolean","default","selected","theme","required","String","unique","switchType","img","id","checked","get","set","enabled","onToggle","title","description","enableLabel","availableThemes","enforceTheme","shortcutsDisabled","isUserThemingDisabled","ItemPreview","NcSettingsSection","BackgroundSettings","themes","fonts","selectedTheme","find","replace","guidelinesLink","descriptionDetail","issuetrackerLink","designteamLink","watch","newState","changeShortcutsDisabled","refreshGlobalStyles","document","head","querySelectorAll","forEach","href","searchParams","Date","now","newTheme","cloneNode","toString","onload","remove","append","updateBackground","changeTheme","_ref","updateBodyAttributes","selectItem","changeFont","_ref2","font","generateOcsUrl","appId","configKey","configValue","method","enabledThemesIDs","enabledFontsIDs","body","toggleAttribute","concat","setAttribute","join","themeId","err","OC","Notification","showTemporary","ocs","meta","message","domProps","Vue","App","$mount","$on","refreshStyles","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","window","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/user-status-modal-8299.js b/dist/user-status-modal-8299.js index 4c4c43a0a4a..fa8fba5899b 100644 --- a/dist/user-status-modal-8299.js +++ b/dist/user-status-modal-8299.js @@ -1,3 +1,3 @@ /*! For license information please see user-status-modal-8299.js.LICENSE.txt */ -"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[8299],{31481:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".clear-at-select[data-v-bfc4d14a]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-bfc4d14a]{margin-right:12px}.clear-at-select__select[data-v-bfc4d14a]{flex-grow:1}","",{version:3,sources:["webpack://./apps/user_status/src/components/ClearAtSelect.vue"],names:[],mappings:"AACA,kCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,yCACC,iBAAA,CAGD,0CACC,WAAA",sourcesContent:["\n.clear-at-select {\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\talign-items: center;\n\n\t&__label {\n\t\tmargin-right: 12px;\n\t}\n\n\t&__select {\n\t\tflex-grow: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=i},54254:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".custom-input[data-v-59f118ca]{display:flex;width:100%}.custom-input__emoji-button[data-v-59f118ca]{min-height:36px;padding:0;border:2px solid var(--color-border-maxcontrast);border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.custom-input__emoji-button[data-v-59f118ca]:hover{border-color:var(--color-primary-element)}.custom-input__container[data-v-59f118ca]{width:100%}.custom-input__container input[data-v-59f118ca]{width:100%;margin:0;border-radius:0 var(--border-radius) var(--border-radius) 0}","",{version:3,sources:["webpack://./apps/user_status/src/components/CustomMessageInput.vue"],names:[],mappings:"AACA,+BACC,YAAA,CACA,UAAA,CAEA,6CACC,eAAA,CACA,SAAA,CACA,gDAAA,CACA,iBAAA,CACA,2DAAA,CAEA,mDACC,yCAAA,CAIF,0CACC,UAAA,CAEA,gDACC,UAAA,CACA,QAAA,CACA,2DAAA",sourcesContent:["\n.custom-input {\n\tdisplay: flex;\n\twidth: 100%;\n\n\t&__emoji-button {\n\t\tmin-height: 36px;\n\t\tpadding: 0;\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-right: none;\n\t\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\n\n\t\t&:hover {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t&__container {\n\t\twidth: 100%;\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tmargin: 0;\n\t\t\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=i},42394:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".user-status-online-select__input[data-v-0692bb92]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-0692bb92]{position:relative;display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__label span[data-v-0692bb92],.user-status-online-select__label[data-v-0692bb92]{cursor:pointer}.user-status-online-select__label span[data-v-0692bb92]{position:absolute;top:calc(50% - 12px);left:8px;display:block;width:24px;height:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-0692bb92],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-0692bb92],.user-status-online-select__label[data-v-0692bb92]:hover{border-color:var(--color-primary)}.user-status-online-select__label[data-v-0692bb92]:active{border-color:var(--color-border-dark)}.user-status-online-select__subline[data-v-0692bb92]{display:block;color:var(--color-text-lighter)}","",{version:3,sources:["webpack://./apps/user_status/src/components/OnlineStatusSelect.vue"],names:[],mappings:"AAOC,mDACC,iBAAA,CACA,QAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CAGD,mDACC,iBAAA,CACA,aAAA,CACA,UAhBc,CAiBd,WAjBc,CAkBd,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,8CAAA,CACA,8BAAA,CACA,oBAxBU,CA0BV,2GAEC,cAAA,CAGD,wDACC,iBAAA,CACA,oBAAA,CACA,QAjCa,CAkCb,aAAA,CACA,UApCS,CAqCT,WArCS,CAyCX,iPAGC,iCAAA,CAGD,0DACC,qCAAA,CAGD,qDACC,aAAA,CACA,+BAAA",sourcesContent:["\n@use 'sass:math';\n$icon-size: 24px;\n$label-padding: 8px;\n\n.user-status-online-select {\n\t// Inputs are here for keyboard navigation, they are not visually visible\n\t&__input {\n\t\tposition: absolute;\n\t\ttop: auto;\n\t\tleft: -10000px;\n\t\toverflow: hidden;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t}\n\n\t&__label {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tmargin: $label-padding;\n\t\tpadding: $label-padding;\n\t\tpadding-left: $icon-size + $label-padding * 2;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-background-hover);\n\t\tbackground-position: $label-padding center;\n\t\tbackground-size: $icon-size;\n\n\t\tspan,\n\t\t& {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\ttop: calc(50% - math.div($icon-size, 2));\n\t\t\tleft: $label-padding;\n\t\t\tdisplay: block;\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t}\n\t}\n\n\t&__input:checked + &__label,\n\t&__input:focus + &__label,\n\t&__label:hover {\n\t\tborder-color: var(--color-primary);\n\t}\n\n\t&__label:active {\n\t\tborder-color: var(--color-border-dark);\n\t}\n\n\t&__subline {\n\t\tdisplay: block;\n\t\tcolor: var(--color-text-lighter);\n\t}\n}\n\n"],sourceRoot:""}]);const o=i},92848:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,'.predefined-status[data-v-26621de0]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-26621de0]:hover,.predefined-status[data-v-26621de0]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-26621de0]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-26621de0]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-26621de0]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-26621de0]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-26621de0]::before{content:" – "}',"",{version:3,sources:["webpack://./PredefinedStatus.vue","webpack://./apps/user_status/src/components/PredefinedStatus.vue"],names:[],mappings:"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC",sourcesContent:['.predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:" – "}',"\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=i},91590:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".predefined-statuses-list[data-v-57150604]{display:flex;flex-direction:column;margin-bottom:10px}","",{version:3,sources:["webpack://./apps/user_status/src/components/PredefinedStatusesList.vue"],names:[],mappings:"AACA,2CACC,YAAA,CACA,qBAAA,CACA,kBAAA",sourcesContent:["\n.predefined-statuses-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 10px;\n}\n"],sourceRoot:""}]);const o=i},60699:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,'.predefined-status[data-v-ba802d4c]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-ba802d4c]:hover,.predefined-status[data-v-ba802d4c]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-ba802d4c]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-ba802d4c]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-ba802d4c]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-ba802d4c]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-ba802d4c]::before{content:" – "}.backup-status__reset-button[data-v-ba802d4c]{justify-content:flex-end;display:flex;flex-grow:1}',"",{version:3,sources:["webpack://./PreviousStatus.vue","webpack://./apps/user_status/src/components/PreviousStatus.vue"],names:[],mappings:"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC,CAAA,8CAKF,wBACC,CAAA,YACA,CAAA,WACA",sourcesContent:['.predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:" – "}.backup-status__reset-button{justify-content:flex-end;display:flex;flex-grow:1}',"\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n.backup-status {\n\t&__reset-button {\n\t\tjustify-content: flex-end;\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=i},2678:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".set-status-modal[data-v-09245728]{padding:8px 20px 20px 20px}.set-status-modal__header[data-v-09245728]{text-align:center;font-weight:bold;margin:15px 0}.set-status-modal__online-status[data-v-09245728]{display:grid;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-09245728]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__automation-hint[data-v-09245728]{display:flex;width:100%;margin-bottom:10px;color:var(--color-text-maxcontrast)}.set-status-modal .status-buttons[data-v-09245728]{display:flex;padding:3px;padding-left:0;gap:3px}@media only screen and (max-width: 500px){.set-status-modal__online-status[data-v-09245728]{grid-template-columns:none !important}}","",{version:3,sources:["webpack://./apps/user_status/src/components/SetStatusModal.vue"],names:[],mappings:"AAEA,mCACC,0BAAA,CAEA,2CACC,iBAAA,CACA,gBAAA,CACA,aAAA,CAGD,kDACC,YAAA,CACA,6BAAA,CAGD,iDACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,oDACC,YAAA,CACA,UAAA,CACA,kBAAA,CACA,mCAAA,CAGD,mDACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,OAAA,CAIF,0CACC,kDACC,qCAAA,CAAA",sourcesContent:["\n\n.set-status-modal {\n\tpadding: 8px 20px 20px 20px;\n\n\t&__header {\n\t\ttext-align: center;\n\t\tfont-weight: bold;\n\t\tmargin: 15px 0;\n\t}\n\n\t&__online-status {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n\n\t&__custom-input {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&__automation-hint {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.status-buttons {\n\t\tdisplay: flex;\n\t\tpadding: 3px;\n\t\tpadding-left:0;\n\t\tgap: 3px;\n\t}\n}\n\n@media only screen and (max-width: 500px) {\n\t.set-status-modal__online-status {\n\t\tgrid-template-columns: none !important;\n\t}\n}\n\n"],sourceRoot:""}]);const o=i},47054:(t,e,s)=>{s.r(e),s.d(e,{default:()=>rt});var a=s(64024),n=s(70110),r=s.n(n),i=s(10861),o=s.n(i),l=s(31352),u=s(84387),c=s(80351),d=s.n(c),A=s(64039);const p=t=>{if(null===t)return(0,l.Iu)("user_status","Don't clear");if("end-of"===t.type)switch(t.time){case"day":return(0,l.Iu)("user_status","Today");case"week":return(0,l.Iu)("user_status","This week");default:return null}if("period"===t.type)return d().duration(1e3*t.time).humanize();if("_time"===t.type){const e=d()((0,A.n)()),s=d()(t.time,"X");return d().duration(e.diff(s)).humanize()}return null},C={name:"PredefinedStatus",filters:{clearAtFilter:p},props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null}},methods:{select(){this.$emit("select")}}};var _=s(93379),m=s.n(_),b=s(7795),g=s.n(b),v=s(90569),h=s.n(v),f=s(3565),x=s.n(f),y=s(19216),k=s.n(y),S=s(44589),w=s.n(S),$=s(92848),B={};B.styleTagTransform=w(),B.setAttributes=x(),B.insert=h().bind(null,"head"),B.domAPI=g(),B.insertStyleElement=k(),m()($.Z,B),$.Z&&$.Z.locals&&$.Z.locals;var I=s(51900);const Z=(0,I.Z)(C,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"predefined-status",attrs:{tabindex:"0"},on:{keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.select.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:t.select.apply(null,arguments)}],click:t.select}},[e("span",{staticClass:"predefined-status__icon",attrs:{"aria-hidden":"true"}},[t._v("\n\t\t"+t._s(t.icon)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__message"},[t._v("\n\t\t"+t._s(t.message)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__clear-at"},[t._v("\n\t\t"+t._s(t._f("clearAtFilter")(t.clearAt))+"\n\t")])])}),[],!1,null,"26621de0",null).exports;var D=s(20629);const M={name:"PredefinedStatusesList",components:{PredefinedStatus:Z},computed:{...(0,D.rn)({predefinedStatuses:t=>t.predefinedStatuses.predefinedStatuses}),...(0,D.Se)(["statusesHaveLoaded"])},created(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{selectStatus(t){this.$emit("select-status",t)}}};var P=s(91590),T={};T.styleTagTransform=w(),T.setAttributes=x(),T.insert=h().bind(null,"head"),T.domAPI=g(),T.insertStyleElement=k(),m()(P.Z,T),P.Z&&P.Z.locals&&P.Z.locals;const E=(0,I.Z)(M,(function(){var t=this,e=t._self._c;return t.statusesHaveLoaded?e("div",{staticClass:"predefined-statuses-list"},t._l(t.predefinedStatuses,(function(s){return e("PredefinedStatus",{key:s.id,attrs:{"message-id":s.id,icon:s.icon,message:s.message,"clear-at":s.clearAt},on:{select:function(e){return t.selectStatus(s)}}})})),1):e("div",{staticClass:"predefined-statuses-list"},[e("div",{staticClass:"icon icon-loading-small"})])}),[],!1,null,"57150604",null).exports,j={name:"PreviousStatus",components:{NcButton:o()},props:{icon:{type:[String,null],required:!0},message:{type:String,required:!0}},methods:{select(){this.$emit("select")}}};var G=s(60699),q={};q.styleTagTransform=w(),q.setAttributes=x(),q.insert=h().bind(null,"head"),q.domAPI=g(),q.insertStyleElement=k(),m()(G.Z,q),G.Z&&G.Z.locals&&G.Z.locals;const O=(0,I.Z)(j,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"predefined-status backup-status",attrs:{tabindex:"0"},on:{keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.select.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:t.select.apply(null,arguments)}],click:t.select}},[e("span",{staticClass:"predefined-status__icon"},[t._v("\n\t\t"+t._s(t.icon)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__message"},[t._v("\n\t\t"+t._s(t.message)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__clear-at"},[t._v("\n\t\t"+t._s(t.$t("user_status","Previously set"))+"\n\t")]),t._v(" "),e("div",{staticClass:"backup-status__reset-button"},[e("NcButton",{on:{click:t.select}},[t._v("\n\t\t\t"+t._s(t.$t("user_status","Reset status"))+"\n\t\t")])],1)])}),[],!1,null,"ba802d4c",null).exports;var N=s(21968),R=s.n(N);const z={name:"CustomMessageInput",components:{NcButton:o(),NcEmojiPicker:R()},props:{icon:{type:String,default:"😀"},message:{type:String,required:!0,default:()=>""},disabled:{type:Boolean,default:!1}},emits:["change","submit","icon-selected"],computed:{visibleIcon(){return this.icon||"😀"}},methods:{focus(){this.$refs.input.focus()},onKeyup(t){this.$emit("change",t.target.value)},onChange(t){this.$emit("submit",t.target.value)},setIcon(t){this.$emit("select-icon",t)}}};var F=s(54254),Y={};Y.styleTagTransform=w(),Y.setAttributes=x(),Y.insert=h().bind(null,"head"),Y.domAPI=g(),Y.insertStyleElement=k(),m()(F.Z,Y),F.Z&&F.Z.locals&&F.Z.locals;const U=(0,I.Z)(z,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-input"},[e("NcEmojiPicker",{attrs:{container:".custom-input"},on:{select:t.setIcon}},[e("NcButton",{staticClass:"custom-input__emoji-button",attrs:{type:"tertiary"}},[t._v("\n\t\t\t"+t._s(t.visibleIcon)+"\n\t\t")])],1),t._v(" "),e("div",{staticClass:"custom-input__container"},[e("label",{staticClass:"hidden-visually",attrs:{for:"user_status_message"}},[t._v("\n\t\t\t"+t._s(t.t("user_status","What is your status?"))+"\n\t\t")]),t._v(" "),e("input",{ref:"input",attrs:{id:"user_status_message",maxlength:"80",disabled:t.disabled,placeholder:t.$t("user_status","What is your status?"),type:"text"},domProps:{value:t.message},on:{change:t.onChange,keyup:t.onKeyup,paste:t.onKeyup}})])],1)}),[],!1,null,"59f118ca",null).exports;var W=s(36456);const L={name:"ClearAtSelect",components:{NcSelect:s.n(W)()},props:{clearAt:{type:Object,default:null}},data:()=>({options:[{label:(0,l.Iu)("user_status","Don't clear"),clearAt:null},{label:(0,l.Iu)("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:(0,l.Iu)("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:(0,l.Iu)("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:(0,l.Iu)("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:(0,l.Iu)("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}),computed:{option(){return{clearAt:this.clearAt,label:p(this.clearAt)}}},methods:{select(t){t&&this.$emit("select-clear-at",t.clearAt)}}};var K=s(31481),Q={};Q.styleTagTransform=w(),Q.setAttributes=x(),Q.insert=h().bind(null,"head"),Q.domAPI=g(),Q.insertStyleElement=k(),m()(K.Z,Q),K.Z&&K.Z.locals&&K.Z.locals;const H=(0,I.Z)(L,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"clear-at-select"},[e("label",{staticClass:"clear-at-select__label",attrs:{for:"clearStatus"}},[t._v("\n\t\t"+t._s(t.$t("user_status","Clear status after"))+"\n\t")]),t._v(" "),e("NcSelect",{staticClass:"clear-at-select__select",attrs:{"input-id":"clearStatus",options:t.options,value:t.option,clearable:!1,placement:"top"},on:{"option:selected":t.select}})],1)}),[],!1,null,"bfc4d14a",null).exports,X={name:"OnlineStatusSelect",props:{checked:{type:Boolean,default:!1},icon:{type:String,required:!0},type:{type:String,required:!0},label:{type:String,required:!0},subline:{type:String,default:null}},computed:{id(){return"user-status-online-status-".concat(this.type)}},methods:{onChange(){this.$emit("select",this.type)}}};var V=s(42394),J={};J.styleTagTransform=w(),J.setAttributes=x(),J.insert=h().bind(null,"head"),J.domAPI=g(),J.insertStyleElement=k(),m()(V.Z,J),V.Z&&V.Z.locals&&V.Z.locals;const tt=(0,I.Z)(X,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"user-status-online-select"},[e("input",{staticClass:"user-status-online-select__input",attrs:{id:t.id,type:"radio",name:"user-status-online"},domProps:{checked:t.checked},on:{change:t.onChange}}),t._v(" "),e("label",{staticClass:"user-status-online-select__label",attrs:{for:t.id}},[t._v("\n\t\t"+t._s(t.label)+"\n\t\t"),e("span",{class:t.icon,attrs:{"aria-hidden":"true",role:"img"}}),t._v(" "),e("em",{staticClass:"user-status-online-select__subline"},[t._v(t._s(t.subline))])])])}),[],!1,null,"0692bb92",null).exports;var et=s(25108);const st={name:"SetStatusModal",components:{ClearAtSelect:H,CustomMessageInput:U,NcModal:r(),OnlineStatusSelect:tt,PredefinedStatusesList:E,PreviousStatus:O,NcButton:o()},mixins:[u.Z],data:()=>({clearAt:null,editedMessage:"",isSavingStatus:!1,statuses:[{type:"online",label:(0,l.Iu)("user_status","Online"),icon:"icon-user-status-online"},{type:"away",label:(0,l.Iu)("user_status","Away"),icon:"icon-user-status-away"},{type:"dnd",label:(0,l.Iu)("user_status","Do not disturb"),subline:(0,l.Iu)("user_status","Mute all notifications"),icon:"icon-user-status-dnd"},{type:"invisible",label:(0,l.Iu)("user_status","Invisible"),subline:(0,l.Iu)("user_status","Appear offline"),icon:"icon-user-status-invisible"}]}),computed:{messageId(){return this.$store.state.userStatus.messageId},icon(){return this.$store.state.userStatus.icon},message(){return this.$store.state.userStatus.message||""},hasBackupStatus(){return this.messageId&&(this.backupIcon||this.backupMessage)},backupIcon(){return this.$store.state.userBackupStatus.icon||""},backupMessage(){return this.$store.state.userBackupStatus.message||""},resetButtonText(){return this.backupIcon&&this.backupMessage?this.$t("user_status",'Reset status to "{icon} {message}"',{icon:this.backupIcon,message:this.backupMessage}):this.backupMessage?this.$t("user_status",'Reset status to "{message}"',{message:this.backupMessage}):this.backupIcon?this.$t("user_status",'Reset status to "{icon}"',{icon:this.backupIcon}):this.$t("user_status","Reset status")}},watch:{message:{immediate:!0,handler(t){this.editedMessage=t}}},mounted(){this.$store.dispatch("fetchBackupFromServer"),null!==this.$store.state.userStatus.clearAt&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{closeModal(){this.$emit("close")},setIcon(t){this.$store.dispatch("setCustomMessage",{message:this.message,icon:t,clearAt:this.clearAt}),this.$nextTick((()=>{this.$refs.customMessageInput.focus()}))},setMessage(t){this.editedMessage=t},setClearAt(t){this.clearAt=t},selectPredefinedMessage(t){this.clearAt=t.clearAt,this.$store.dispatch("setPredefinedMessage",{messageId:t.id,clearAt:t.clearAt})},async saveStatus(){if(!this.isSavingStatus){try{this.isSavingStatus=!0,void 0!==this.messageId&&null!==this.messageId?await this.$store.dispatch("setPredefinedMessage",{messageId:this.messageId,clearAt:this.clearAt}):await this.$store.dispatch("setCustomMessage",{message:this.editedMessage,icon:this.icon,clearAt:this.clearAt})}catch(t){return(0,a.x2)(this.$t("user_status","There was an error saving the status")),et.debug(t),void(this.isSavingStatus=!1)}this.isSavingStatus=!1,this.closeModal()}},async clearStatus(){try{this.isSavingStatus=!0,await this.$store.dispatch("clearMessage")}catch(t){return(0,a.x2)(this.$t("user_status","There was an error clearing the status")),et.debug(t),void(this.isSavingStatus=!1)}this.isSavingStatus=!1,this.closeModal()},async revertBackupFromServer(){try{this.isSavingStatus=!0,await this.$store.dispatch("revertBackupFromServer",{messageId:this.messageId})}catch(t){return(0,a.x2)(this.$t("user_status","There was an error reverting the status")),et.debug(t),void(this.isSavingStatus=!1)}this.isSavingStatus=!1}}};var at=s(2678),nt={};nt.styleTagTransform=w(),nt.setAttributes=x(),nt.insert=h().bind(null,"head"),nt.domAPI=g(),nt.insertStyleElement=k(),m()(at.Z,nt),at.Z&&at.Z.locals&&at.Z.locals;const rt=(0,I.Z)(st,(function(){var t=this,e=t._self._c;return e("NcModal",{attrs:{size:"normal",title:t.$t("user_status","Set status")},on:{close:t.closeModal}},[e("div",{staticClass:"set-status-modal"},[e("div",{staticClass:"set-status-modal__header"},[e("h2",[t._v(t._s(t.$t("user_status","Online status")))])]),t._v(" "),e("div",{staticClass:"set-status-modal__online-status"},t._l(t.statuses,(function(s){return e("OnlineStatusSelect",t._b({key:s.type,attrs:{checked:s.type===t.statusType},on:{select:t.changeStatus}},"OnlineStatusSelect",s,!1))})),1),t._v(" "),e("div",{staticClass:"set-status-modal__header"},[e("h2",[t._v(t._s(t.$t("user_status","Status message")))])]),t._v(" "),e("div",{staticClass:"set-status-modal__custom-input"},[e("CustomMessageInput",{ref:"customMessageInput",attrs:{icon:t.icon,message:t.editedMessage},on:{change:t.setMessage,submit:t.saveStatus,"select-icon":t.setIcon}})],1),t._v(" "),t.hasBackupStatus?e("div",{staticClass:"set-status-modal__automation-hint"},[t._v("\n\t\t\t"+t._s(t.$t("user_status","Your status was set automatically"))+"\n\t\t")]):t._e(),t._v(" "),t.hasBackupStatus?e("PreviousStatus",{attrs:{icon:t.backupIcon,message:t.backupMessage},on:{select:t.revertBackupFromServer}}):t._e(),t._v(" "),e("PredefinedStatusesList",{on:{"select-status":t.selectPredefinedMessage}}),t._v(" "),e("ClearAtSelect",{attrs:{"clear-at":t.clearAt},on:{"select-clear-at":t.setClearAt}}),t._v(" "),e("div",{staticClass:"status-buttons"},[e("NcButton",{attrs:{wide:!0,type:"tertiary",text:t.$t("user_status","Clear status message"),disabled:t.isSavingStatus},on:{click:t.clearStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Clear status message"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{wide:!0,type:"primary",text:t.$t("user_status","Set status message"),disabled:t.isSavingStatus},on:{click:t.saveStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Set status message"))+"\n\t\t\t")])],1)],1)])}),[],!1,null,"09245728",null).exports}}]); -//# sourceMappingURL=user-status-modal-8299.js.map?v=6e854834b8343a9b289e
\ No newline at end of file +"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[8299],{31481:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".clear-at-select[data-v-bfc4d14a]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-bfc4d14a]{margin-right:12px}.clear-at-select__select[data-v-bfc4d14a]{flex-grow:1}","",{version:3,sources:["webpack://./apps/user_status/src/components/ClearAtSelect.vue"],names:[],mappings:"AACA,kCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,yCACC,iBAAA,CAGD,0CACC,WAAA",sourcesContent:["\n.clear-at-select {\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\talign-items: center;\n\n\t&__label {\n\t\tmargin-right: 12px;\n\t}\n\n\t&__select {\n\t\tflex-grow: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=i},54254:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".custom-input[data-v-59f118ca]{display:flex;width:100%}.custom-input__emoji-button[data-v-59f118ca]{min-height:36px;padding:0;border:2px solid var(--color-border-maxcontrast);border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.custom-input__emoji-button[data-v-59f118ca]:hover{border-color:var(--color-primary-element)}.custom-input__container[data-v-59f118ca]{width:100%}.custom-input__container input[data-v-59f118ca]{width:100%;margin:0;border-radius:0 var(--border-radius) var(--border-radius) 0}","",{version:3,sources:["webpack://./apps/user_status/src/components/CustomMessageInput.vue"],names:[],mappings:"AACA,+BACC,YAAA,CACA,UAAA,CAEA,6CACC,eAAA,CACA,SAAA,CACA,gDAAA,CACA,iBAAA,CACA,2DAAA,CAEA,mDACC,yCAAA,CAIF,0CACC,UAAA,CAEA,gDACC,UAAA,CACA,QAAA,CACA,2DAAA",sourcesContent:["\n.custom-input {\n\tdisplay: flex;\n\twidth: 100%;\n\n\t&__emoji-button {\n\t\tmin-height: 36px;\n\t\tpadding: 0;\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-right: none;\n\t\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\n\n\t\t&:hover {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t&__container {\n\t\twidth: 100%;\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tmargin: 0;\n\t\t\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=i},21237:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".user-status-online-select__input[data-v-eaafd0b0]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-eaafd0b0]{position:relative;display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__label span[data-v-eaafd0b0],.user-status-online-select__label[data-v-eaafd0b0]{cursor:pointer}.user-status-online-select__label span[data-v-eaafd0b0]{position:absolute;top:calc(50% - 12px);left:8px;display:block;width:24px;height:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-eaafd0b0],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-eaafd0b0],.user-status-online-select__label[data-v-eaafd0b0]:hover{border-color:var(--color-primary-element)}.user-status-online-select__label[data-v-eaafd0b0]:active{border-color:var(--color-border-dark)}.user-status-online-select__subline[data-v-eaafd0b0]{display:block;color:var(--color-text-lighter)}","",{version:3,sources:["webpack://./apps/user_status/src/components/OnlineStatusSelect.vue"],names:[],mappings:"AAOC,mDACC,iBAAA,CACA,QAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CAGD,mDACC,iBAAA,CACA,aAAA,CACA,UAhBc,CAiBd,WAjBc,CAkBd,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,8CAAA,CACA,8BAAA,CACA,oBAxBU,CA0BV,2GAEC,cAAA,CAGD,wDACC,iBAAA,CACA,oBAAA,CACA,QAjCa,CAkCb,aAAA,CACA,UApCS,CAqCT,WArCS,CAyCX,iPAGC,yCAAA,CAGD,0DACC,qCAAA,CAGD,qDACC,aAAA,CACA,+BAAA",sourcesContent:["\n@use 'sass:math';\n$icon-size: 24px;\n$label-padding: 8px;\n\n.user-status-online-select {\n\t// Inputs are here for keyboard navigation, they are not visually visible\n\t&__input {\n\t\tposition: absolute;\n\t\ttop: auto;\n\t\tleft: -10000px;\n\t\toverflow: hidden;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t}\n\n\t&__label {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tmargin: $label-padding;\n\t\tpadding: $label-padding;\n\t\tpadding-left: $icon-size + $label-padding * 2;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-background-hover);\n\t\tbackground-position: $label-padding center;\n\t\tbackground-size: $icon-size;\n\n\t\tspan,\n\t\t& {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\ttop: calc(50% - math.div($icon-size, 2));\n\t\t\tleft: $label-padding;\n\t\t\tdisplay: block;\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t}\n\t}\n\n\t&__input:checked + &__label,\n\t&__input:focus + &__label,\n\t&__label:hover {\n\t\tborder-color: var(--color-primary-element);\n\t}\n\n\t&__label:active {\n\t\tborder-color: var(--color-border-dark);\n\t}\n\n\t&__subline {\n\t\tdisplay: block;\n\t\tcolor: var(--color-text-lighter);\n\t}\n}\n\n"],sourceRoot:""}]);const o=i},92848:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,'.predefined-status[data-v-26621de0]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-26621de0]:hover,.predefined-status[data-v-26621de0]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-26621de0]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-26621de0]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-26621de0]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-26621de0]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-26621de0]::before{content:" – "}',"",{version:3,sources:["webpack://./PredefinedStatus.vue","webpack://./apps/user_status/src/components/PredefinedStatus.vue"],names:[],mappings:"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC",sourcesContent:['.predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:" – "}',"\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=i},91590:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".predefined-statuses-list[data-v-57150604]{display:flex;flex-direction:column;margin-bottom:10px}","",{version:3,sources:["webpack://./apps/user_status/src/components/PredefinedStatusesList.vue"],names:[],mappings:"AACA,2CACC,YAAA,CACA,qBAAA,CACA,kBAAA",sourcesContent:["\n.predefined-statuses-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 10px;\n}\n"],sourceRoot:""}]);const o=i},60699:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,'.predefined-status[data-v-ba802d4c]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-ba802d4c]:hover,.predefined-status[data-v-ba802d4c]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-ba802d4c]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-ba802d4c]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-ba802d4c]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-ba802d4c]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-ba802d4c]::before{content:" – "}.backup-status__reset-button[data-v-ba802d4c]{justify-content:flex-end;display:flex;flex-grow:1}',"",{version:3,sources:["webpack://./PreviousStatus.vue","webpack://./apps/user_status/src/components/PreviousStatus.vue"],names:[],mappings:"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC,CAAA,8CAKF,wBACC,CAAA,YACA,CAAA,WACA",sourcesContent:['.predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:" – "}.backup-status__reset-button{justify-content:flex-end;display:flex;flex-grow:1}',"\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n.backup-status {\n\t&__reset-button {\n\t\tjustify-content: flex-end;\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t}\n}\n"],sourceRoot:""}]);const o=i},2678:(t,e,s)=>{s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".set-status-modal[data-v-09245728]{padding:8px 20px 20px 20px}.set-status-modal__header[data-v-09245728]{text-align:center;font-weight:bold;margin:15px 0}.set-status-modal__online-status[data-v-09245728]{display:grid;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-09245728]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__automation-hint[data-v-09245728]{display:flex;width:100%;margin-bottom:10px;color:var(--color-text-maxcontrast)}.set-status-modal .status-buttons[data-v-09245728]{display:flex;padding:3px;padding-left:0;gap:3px}@media only screen and (max-width: 500px){.set-status-modal__online-status[data-v-09245728]{grid-template-columns:none !important}}","",{version:3,sources:["webpack://./apps/user_status/src/components/SetStatusModal.vue"],names:[],mappings:"AAEA,mCACC,0BAAA,CAEA,2CACC,iBAAA,CACA,gBAAA,CACA,aAAA,CAGD,kDACC,YAAA,CACA,6BAAA,CAGD,iDACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,oDACC,YAAA,CACA,UAAA,CACA,kBAAA,CACA,mCAAA,CAGD,mDACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,OAAA,CAIF,0CACC,kDACC,qCAAA,CAAA",sourcesContent:["\n\n.set-status-modal {\n\tpadding: 8px 20px 20px 20px;\n\n\t&__header {\n\t\ttext-align: center;\n\t\tfont-weight: bold;\n\t\tmargin: 15px 0;\n\t}\n\n\t&__online-status {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n\n\t&__custom-input {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&__automation-hint {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.status-buttons {\n\t\tdisplay: flex;\n\t\tpadding: 3px;\n\t\tpadding-left:0;\n\t\tgap: 3px;\n\t}\n}\n\n@media only screen and (max-width: 500px) {\n\t.set-status-modal__online-status {\n\t\tgrid-template-columns: none !important;\n\t}\n}\n\n"],sourceRoot:""}]);const o=i},43730:(t,e,s)=>{s.r(e),s.d(e,{default:()=>rt});var a=s(64024),n=s(70110),r=s.n(n),i=s(10861),o=s.n(i),l=s(31352),u=s(84387),c=s(80351),d=s.n(c),A=s(64039);const p=t=>{if(null===t)return(0,l.Iu)("user_status","Don't clear");if("end-of"===t.type)switch(t.time){case"day":return(0,l.Iu)("user_status","Today");case"week":return(0,l.Iu)("user_status","This week");default:return null}if("period"===t.type)return d().duration(1e3*t.time).humanize();if("_time"===t.type){const e=d()((0,A.n)()),s=d()(t.time,"X");return d().duration(e.diff(s)).humanize()}return null},C={name:"PredefinedStatus",filters:{clearAtFilter:p},props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null}},methods:{select(){this.$emit("select")}}};var _=s(93379),m=s.n(_),b=s(7795),g=s.n(b),v=s(90569),f=s.n(v),h=s(3565),x=s.n(h),y=s(19216),k=s.n(y),S=s(44589),w=s.n(S),$=s(92848),B={};B.styleTagTransform=w(),B.setAttributes=x(),B.insert=f().bind(null,"head"),B.domAPI=g(),B.insertStyleElement=k(),m()($.Z,B),$.Z&&$.Z.locals&&$.Z.locals;var I=s(51900);const Z=(0,I.Z)(C,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"predefined-status",attrs:{tabindex:"0"},on:{keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.select.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:t.select.apply(null,arguments)}],click:t.select}},[e("span",{staticClass:"predefined-status__icon",attrs:{"aria-hidden":"true"}},[t._v("\n\t\t"+t._s(t.icon)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__message"},[t._v("\n\t\t"+t._s(t.message)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__clear-at"},[t._v("\n\t\t"+t._s(t._f("clearAtFilter")(t.clearAt))+"\n\t")])])}),[],!1,null,"26621de0",null).exports;var D=s(20629);const M={name:"PredefinedStatusesList",components:{PredefinedStatus:Z},computed:{...(0,D.rn)({predefinedStatuses:t=>t.predefinedStatuses.predefinedStatuses}),...(0,D.Se)(["statusesHaveLoaded"])},created(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{selectStatus(t){this.$emit("select-status",t)}}};var P=s(91590),T={};T.styleTagTransform=w(),T.setAttributes=x(),T.insert=f().bind(null,"head"),T.domAPI=g(),T.insertStyleElement=k(),m()(P.Z,T),P.Z&&P.Z.locals&&P.Z.locals;const E=(0,I.Z)(M,(function(){var t=this,e=t._self._c;return t.statusesHaveLoaded?e("div",{staticClass:"predefined-statuses-list"},t._l(t.predefinedStatuses,(function(s){return e("PredefinedStatus",{key:s.id,attrs:{"message-id":s.id,icon:s.icon,message:s.message,"clear-at":s.clearAt},on:{select:function(e){return t.selectStatus(s)}}})})),1):e("div",{staticClass:"predefined-statuses-list"},[e("div",{staticClass:"icon icon-loading-small"})])}),[],!1,null,"57150604",null).exports,j={name:"PreviousStatus",components:{NcButton:o()},props:{icon:{type:[String,null],required:!0},message:{type:String,required:!0}},methods:{select(){this.$emit("select")}}};var G=s(60699),q={};q.styleTagTransform=w(),q.setAttributes=x(),q.insert=f().bind(null,"head"),q.domAPI=g(),q.insertStyleElement=k(),m()(G.Z,q),G.Z&&G.Z.locals&&G.Z.locals;const O=(0,I.Z)(j,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"predefined-status backup-status",attrs:{tabindex:"0"},on:{keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.select.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:t.select.apply(null,arguments)}],click:t.select}},[e("span",{staticClass:"predefined-status__icon"},[t._v("\n\t\t"+t._s(t.icon)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__message"},[t._v("\n\t\t"+t._s(t.message)+"\n\t")]),t._v(" "),e("span",{staticClass:"predefined-status__clear-at"},[t._v("\n\t\t"+t._s(t.$t("user_status","Previously set"))+"\n\t")]),t._v(" "),e("div",{staticClass:"backup-status__reset-button"},[e("NcButton",{on:{click:t.select}},[t._v("\n\t\t\t"+t._s(t.$t("user_status","Reset status"))+"\n\t\t")])],1)])}),[],!1,null,"ba802d4c",null).exports;var N=s(21968),R=s.n(N);const z={name:"CustomMessageInput",components:{NcButton:o(),NcEmojiPicker:R()},props:{icon:{type:String,default:"😀"},message:{type:String,required:!0,default:()=>""},disabled:{type:Boolean,default:!1}},emits:["change","submit","icon-selected"],computed:{visibleIcon(){return this.icon||"😀"}},methods:{focus(){this.$refs.input.focus()},onKeyup(t){this.$emit("change",t.target.value)},onChange(t){this.$emit("submit",t.target.value)},setIcon(t){this.$emit("select-icon",t)}}};var F=s(54254),Y={};Y.styleTagTransform=w(),Y.setAttributes=x(),Y.insert=f().bind(null,"head"),Y.domAPI=g(),Y.insertStyleElement=k(),m()(F.Z,Y),F.Z&&F.Z.locals&&F.Z.locals;const U=(0,I.Z)(z,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"custom-input"},[e("NcEmojiPicker",{attrs:{container:".custom-input"},on:{select:t.setIcon}},[e("NcButton",{staticClass:"custom-input__emoji-button",attrs:{type:"tertiary"}},[t._v("\n\t\t\t"+t._s(t.visibleIcon)+"\n\t\t")])],1),t._v(" "),e("div",{staticClass:"custom-input__container"},[e("label",{staticClass:"hidden-visually",attrs:{for:"user_status_message"}},[t._v("\n\t\t\t"+t._s(t.t("user_status","What is your status?"))+"\n\t\t")]),t._v(" "),e("input",{ref:"input",attrs:{id:"user_status_message",maxlength:"80",disabled:t.disabled,placeholder:t.$t("user_status","What is your status?"),type:"text"},domProps:{value:t.message},on:{change:t.onChange,keyup:t.onKeyup,paste:t.onKeyup}})])],1)}),[],!1,null,"59f118ca",null).exports;var W=s(36456);const L={name:"ClearAtSelect",components:{NcSelect:s.n(W)()},props:{clearAt:{type:Object,default:null}},data:()=>({options:[{label:(0,l.Iu)("user_status","Don't clear"),clearAt:null},{label:(0,l.Iu)("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:(0,l.Iu)("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:(0,l.Iu)("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:(0,l.Iu)("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:(0,l.Iu)("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}),computed:{option(){return{clearAt:this.clearAt,label:p(this.clearAt)}}},methods:{select(t){t&&this.$emit("select-clear-at",t.clearAt)}}};var K=s(31481),Q={};Q.styleTagTransform=w(),Q.setAttributes=x(),Q.insert=f().bind(null,"head"),Q.domAPI=g(),Q.insertStyleElement=k(),m()(K.Z,Q),K.Z&&K.Z.locals&&K.Z.locals;const H=(0,I.Z)(L,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"clear-at-select"},[e("label",{staticClass:"clear-at-select__label",attrs:{for:"clearStatus"}},[t._v("\n\t\t"+t._s(t.$t("user_status","Clear status after"))+"\n\t")]),t._v(" "),e("NcSelect",{staticClass:"clear-at-select__select",attrs:{"input-id":"clearStatus",options:t.options,value:t.option,clearable:!1,placement:"top"},on:{"option:selected":t.select}})],1)}),[],!1,null,"bfc4d14a",null).exports,X={name:"OnlineStatusSelect",props:{checked:{type:Boolean,default:!1},icon:{type:String,required:!0},type:{type:String,required:!0},label:{type:String,required:!0},subline:{type:String,default:null}},computed:{id(){return"user-status-online-status-".concat(this.type)}},methods:{onChange(){this.$emit("select",this.type)}}};var V=s(21237),J={};J.styleTagTransform=w(),J.setAttributes=x(),J.insert=f().bind(null,"head"),J.domAPI=g(),J.insertStyleElement=k(),m()(V.Z,J),V.Z&&V.Z.locals&&V.Z.locals;const tt=(0,I.Z)(X,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"user-status-online-select"},[e("input",{staticClass:"user-status-online-select__input",attrs:{id:t.id,type:"radio",name:"user-status-online"},domProps:{checked:t.checked},on:{change:t.onChange}}),t._v(" "),e("label",{staticClass:"user-status-online-select__label",attrs:{for:t.id}},[t._v("\n\t\t"+t._s(t.label)+"\n\t\t"),e("span",{class:t.icon,attrs:{"aria-hidden":"true",role:"img"}}),t._v(" "),e("em",{staticClass:"user-status-online-select__subline"},[t._v(t._s(t.subline))])])])}),[],!1,null,"eaafd0b0",null).exports;var et=s(25108);const st={name:"SetStatusModal",components:{ClearAtSelect:H,CustomMessageInput:U,NcModal:r(),OnlineStatusSelect:tt,PredefinedStatusesList:E,PreviousStatus:O,NcButton:o()},mixins:[u.Z],data:()=>({clearAt:null,editedMessage:"",isSavingStatus:!1,statuses:[{type:"online",label:(0,l.Iu)("user_status","Online"),icon:"icon-user-status-online"},{type:"away",label:(0,l.Iu)("user_status","Away"),icon:"icon-user-status-away"},{type:"dnd",label:(0,l.Iu)("user_status","Do not disturb"),subline:(0,l.Iu)("user_status","Mute all notifications"),icon:"icon-user-status-dnd"},{type:"invisible",label:(0,l.Iu)("user_status","Invisible"),subline:(0,l.Iu)("user_status","Appear offline"),icon:"icon-user-status-invisible"}]}),computed:{messageId(){return this.$store.state.userStatus.messageId},icon(){return this.$store.state.userStatus.icon},message(){return this.$store.state.userStatus.message||""},hasBackupStatus(){return this.messageId&&(this.backupIcon||this.backupMessage)},backupIcon(){return this.$store.state.userBackupStatus.icon||""},backupMessage(){return this.$store.state.userBackupStatus.message||""},resetButtonText(){return this.backupIcon&&this.backupMessage?this.$t("user_status",'Reset status to "{icon} {message}"',{icon:this.backupIcon,message:this.backupMessage}):this.backupMessage?this.$t("user_status",'Reset status to "{message}"',{message:this.backupMessage}):this.backupIcon?this.$t("user_status",'Reset status to "{icon}"',{icon:this.backupIcon}):this.$t("user_status","Reset status")}},watch:{message:{immediate:!0,handler(t){this.editedMessage=t}}},mounted(){this.$store.dispatch("fetchBackupFromServer"),null!==this.$store.state.userStatus.clearAt&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{closeModal(){this.$emit("close")},setIcon(t){this.$store.dispatch("setCustomMessage",{message:this.message,icon:t,clearAt:this.clearAt}),this.$nextTick((()=>{this.$refs.customMessageInput.focus()}))},setMessage(t){this.editedMessage=t},setClearAt(t){this.clearAt=t},selectPredefinedMessage(t){this.clearAt=t.clearAt,this.$store.dispatch("setPredefinedMessage",{messageId:t.id,clearAt:t.clearAt})},async saveStatus(){if(!this.isSavingStatus){try{this.isSavingStatus=!0,void 0!==this.messageId&&null!==this.messageId?await this.$store.dispatch("setPredefinedMessage",{messageId:this.messageId,clearAt:this.clearAt}):await this.$store.dispatch("setCustomMessage",{message:this.editedMessage,icon:this.icon,clearAt:this.clearAt})}catch(t){return(0,a.x2)(this.$t("user_status","There was an error saving the status")),et.debug(t),void(this.isSavingStatus=!1)}this.isSavingStatus=!1,this.closeModal()}},async clearStatus(){try{this.isSavingStatus=!0,await this.$store.dispatch("clearMessage")}catch(t){return(0,a.x2)(this.$t("user_status","There was an error clearing the status")),et.debug(t),void(this.isSavingStatus=!1)}this.isSavingStatus=!1,this.closeModal()},async revertBackupFromServer(){try{this.isSavingStatus=!0,await this.$store.dispatch("revertBackupFromServer",{messageId:this.messageId})}catch(t){return(0,a.x2)(this.$t("user_status","There was an error reverting the status")),et.debug(t),void(this.isSavingStatus=!1)}this.isSavingStatus=!1}}};var at=s(2678),nt={};nt.styleTagTransform=w(),nt.setAttributes=x(),nt.insert=f().bind(null,"head"),nt.domAPI=g(),nt.insertStyleElement=k(),m()(at.Z,nt),at.Z&&at.Z.locals&&at.Z.locals;const rt=(0,I.Z)(st,(function(){var t=this,e=t._self._c;return e("NcModal",{attrs:{size:"normal",title:t.$t("user_status","Set status")},on:{close:t.closeModal}},[e("div",{staticClass:"set-status-modal"},[e("div",{staticClass:"set-status-modal__header"},[e("h2",[t._v(t._s(t.$t("user_status","Online status")))])]),t._v(" "),e("div",{staticClass:"set-status-modal__online-status"},t._l(t.statuses,(function(s){return e("OnlineStatusSelect",t._b({key:s.type,attrs:{checked:s.type===t.statusType},on:{select:t.changeStatus}},"OnlineStatusSelect",s,!1))})),1),t._v(" "),e("div",{staticClass:"set-status-modal__header"},[e("h2",[t._v(t._s(t.$t("user_status","Status message")))])]),t._v(" "),e("div",{staticClass:"set-status-modal__custom-input"},[e("CustomMessageInput",{ref:"customMessageInput",attrs:{icon:t.icon,message:t.editedMessage},on:{change:t.setMessage,submit:t.saveStatus,"select-icon":t.setIcon}})],1),t._v(" "),t.hasBackupStatus?e("div",{staticClass:"set-status-modal__automation-hint"},[t._v("\n\t\t\t"+t._s(t.$t("user_status","Your status was set automatically"))+"\n\t\t")]):t._e(),t._v(" "),t.hasBackupStatus?e("PreviousStatus",{attrs:{icon:t.backupIcon,message:t.backupMessage},on:{select:t.revertBackupFromServer}}):t._e(),t._v(" "),e("PredefinedStatusesList",{on:{"select-status":t.selectPredefinedMessage}}),t._v(" "),e("ClearAtSelect",{attrs:{"clear-at":t.clearAt},on:{"select-clear-at":t.setClearAt}}),t._v(" "),e("div",{staticClass:"status-buttons"},[e("NcButton",{attrs:{wide:!0,type:"tertiary",text:t.$t("user_status","Clear status message"),disabled:t.isSavingStatus},on:{click:t.clearStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Clear status message"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{wide:!0,type:"primary",text:t.$t("user_status","Set status message"),disabled:t.isSavingStatus},on:{click:t.saveStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Set status message"))+"\n\t\t\t")])],1)],1)])}),[],!1,null,"09245728",null).exports}}]); +//# sourceMappingURL=user-status-modal-8299.js.map?v=1aa6f08709a7157ce48a
\ No newline at end of file diff --git a/dist/user-status-modal-8299.js.map b/dist/user-status-modal-8299.js.map index c393b992b5c..0e8fa4c180e 100644 --- a/dist/user-status-modal-8299.js.map +++ b/dist/user-status-modal-8299.js.map @@ -1 +1 @@ -{"version":3,"file":"user-status-modal-8299.js?v=6e854834b8343a9b289e","mappings":"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","sources":["webpack:///nextcloud/apps/user_status/src/components/ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/OnlineStatusSelect.vue?vue&type=style&index=0&id=0692bb92&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&","webpack://nextcloud/./apps/user_status/src/components/SetStatusModal.vue?dc19","webpack:///nextcloud/apps/user_status/src/filters/clearAtFilter.js","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatus.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatus.vue","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatus.vue?0083","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatus.vue?159c","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatus.vue?74a5","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatusesList.vue","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatusesList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatusesList.vue?251e","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatusesList.vue?944d","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatusesList.vue?26ad","webpack:///nextcloud/apps/user_status/src/components/PreviousStatus.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/PreviousStatus.vue","webpack://nextcloud/./apps/user_status/src/components/PreviousStatus.vue?ecd7","webpack://nextcloud/./apps/user_status/src/components/PreviousStatus.vue?e294","webpack://nextcloud/./apps/user_status/src/components/PreviousStatus.vue?a03f","webpack://nextcloud/./apps/user_status/src/components/CustomMessageInput.vue?d5a9","webpack:///nextcloud/apps/user_status/src/components/CustomMessageInput.vue","webpack:///nextcloud/apps/user_status/src/components/CustomMessageInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/components/CustomMessageInput.vue?1ade","webpack://nextcloud/./apps/user_status/src/components/CustomMessageInput.vue?87a5","webpack://nextcloud/./apps/user_status/src/components/ClearAtSelect.vue?2c76","webpack:///nextcloud/apps/user_status/src/services/clearAtOptionsService.js","webpack:///nextcloud/apps/user_status/src/components/ClearAtSelect.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/ClearAtSelect.vue","webpack://nextcloud/./apps/user_status/src/components/ClearAtSelect.vue?3e4c","webpack://nextcloud/./apps/user_status/src/components/ClearAtSelect.vue?b1cd","webpack:///nextcloud/apps/user_status/src/components/OnlineStatusSelect.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/OnlineStatusSelect.vue","webpack://nextcloud/./apps/user_status/src/components/OnlineStatusSelect.vue?0997","webpack://nextcloud/./apps/user_status/src/components/OnlineStatusSelect.vue?1ac6","webpack://nextcloud/./apps/user_status/src/components/OnlineStatusSelect.vue?12b9","webpack:///nextcloud/apps/user_status/src/components/SetStatusModal.vue","webpack:///nextcloud/apps/user_status/src/components/SetStatusModal.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/services/statusOptionsService.js","webpack://nextcloud/./apps/user_status/src/components/SetStatusModal.vue?5663","webpack://nextcloud/./apps/user_status/src/components/SetStatusModal.vue?4fb2"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".clear-at-select[data-v-bfc4d14a]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-bfc4d14a]{margin-right:12px}.clear-at-select__select[data-v-bfc4d14a]{flex-grow:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/ClearAtSelect.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,yCACC,iBAAA,CAGD,0CACC,WAAA\",\"sourcesContent\":[\"\\n.clear-at-select {\\n\\tdisplay: flex;\\n\\tmargin-bottom: 10px;\\n\\talign-items: center;\\n\\n\\t&__label {\\n\\t\\tmargin-right: 12px;\\n\\t}\\n\\n\\t&__select {\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".custom-input[data-v-59f118ca]{display:flex;width:100%}.custom-input__emoji-button[data-v-59f118ca]{min-height:36px;padding:0;border:2px solid var(--color-border-maxcontrast);border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.custom-input__emoji-button[data-v-59f118ca]:hover{border-color:var(--color-primary-element)}.custom-input__container[data-v-59f118ca]{width:100%}.custom-input__container input[data-v-59f118ca]{width:100%;margin:0;border-radius:0 var(--border-radius) var(--border-radius) 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/CustomMessageInput.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,YAAA,CACA,UAAA,CAEA,6CACC,eAAA,CACA,SAAA,CACA,gDAAA,CACA,iBAAA,CACA,2DAAA,CAEA,mDACC,yCAAA,CAIF,0CACC,UAAA,CAEA,gDACC,UAAA,CACA,QAAA,CACA,2DAAA\",\"sourcesContent\":[\"\\n.custom-input {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\n\\t&__emoji-button {\\n\\t\\tmin-height: 36px;\\n\\t\\tpadding: 0;\\n\\t\\tborder: 2px solid var(--color-border-maxcontrast);\\n\\t\\tborder-right: none;\\n\\t\\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\\n\\n\\t\\t&:hover {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t&__container {\\n\\t\\twidth: 100%;\\n\\n\\t\\tinput {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-status-online-select__input[data-v-0692bb92]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-0692bb92]{position:relative;display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__label span[data-v-0692bb92],.user-status-online-select__label[data-v-0692bb92]{cursor:pointer}.user-status-online-select__label span[data-v-0692bb92]{position:absolute;top:calc(50% - 12px);left:8px;display:block;width:24px;height:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-0692bb92],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-0692bb92],.user-status-online-select__label[data-v-0692bb92]:hover{border-color:var(--color-primary)}.user-status-online-select__label[data-v-0692bb92]:active{border-color:var(--color-border-dark)}.user-status-online-select__subline[data-v-0692bb92]{display:block;color:var(--color-text-lighter)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/OnlineStatusSelect.vue\"],\"names\":[],\"mappings\":\"AAOC,mDACC,iBAAA,CACA,QAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CAGD,mDACC,iBAAA,CACA,aAAA,CACA,UAhBc,CAiBd,WAjBc,CAkBd,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,8CAAA,CACA,8BAAA,CACA,oBAxBU,CA0BV,2GAEC,cAAA,CAGD,wDACC,iBAAA,CACA,oBAAA,CACA,QAjCa,CAkCb,aAAA,CACA,UApCS,CAqCT,WArCS,CAyCX,iPAGC,iCAAA,CAGD,0DACC,qCAAA,CAGD,qDACC,aAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n$icon-size: 24px;\\n$label-padding: 8px;\\n\\n.user-status-online-select {\\n\\t// Inputs are here for keyboard navigation, they are not visually visible\\n\\t&__input {\\n\\t\\tposition: absolute;\\n\\t\\ttop: auto;\\n\\t\\tleft: -10000px;\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 1px;\\n\\t\\theight: 1px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: block;\\n\\t\\tmargin: $label-padding;\\n\\t\\tpadding: $label-padding;\\n\\t\\tpadding-left: $icon-size + $label-padding * 2;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tbackground-position: $label-padding center;\\n\\t\\tbackground-size: $icon-size;\\n\\n\\t\\tspan,\\n\\t\\t& {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: calc(50% - math.div($icon-size, 2));\\n\\t\\t\\tleft: $label-padding;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\theight: $icon-size;\\n\\t\\t}\\n\\t}\\n\\n\\t&__input:checked + &__label,\\n\\t&__input:focus + &__label,\\n\\t&__label:hover {\\n\\t\\tborder-color: var(--color-primary);\\n\\t}\\n\\n\\t&__label:active {\\n\\t\\tborder-color: var(--color-border-dark);\\n\\t}\\n\\n\\t&__subline {\\n\\t\\tdisplay: block;\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".predefined-status[data-v-26621de0]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-26621de0]:hover,.predefined-status[data-v-26621de0]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-26621de0]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-26621de0]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-26621de0]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-26621de0]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-26621de0]::before{content:\\\" – \\\"}\", \"\",{\"version\":3,\"sources\":[\"webpack://./PredefinedStatus.vue\",\"webpack://./apps/user_status/src/components/PredefinedStatus.vue\"],\"names\":[],\"mappings\":\"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC\",\"sourcesContent\":[\".predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:\\\" – \\\"}\",\"\\n.predefined-status {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: flex-start;\\n\\tflex-basis: 100%;\\n\\tborder-radius: var(--border-radius);\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t&:active{\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tflex-basis: 40px;\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\t&__message {\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\n\\t&__clear-at {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&::before {\\n\\t\\t\\tcontent: ' – ';\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".predefined-statuses-list[data-v-57150604]{display:flex;flex-direction:column;margin-bottom:10px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/PredefinedStatusesList.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,YAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.predefined-statuses-list {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 10px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".predefined-status[data-v-ba802d4c]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-ba802d4c]:hover,.predefined-status[data-v-ba802d4c]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-ba802d4c]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-ba802d4c]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-ba802d4c]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-ba802d4c]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-ba802d4c]::before{content:\\\" – \\\"}.backup-status__reset-button[data-v-ba802d4c]{justify-content:flex-end;display:flex;flex-grow:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./PreviousStatus.vue\",\"webpack://./apps/user_status/src/components/PreviousStatus.vue\"],\"names\":[],\"mappings\":\"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC,CAAA,8CAKF,wBACC,CAAA,YACA,CAAA,WACA\",\"sourcesContent\":[\".predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:\\\" – \\\"}.backup-status__reset-button{justify-content:flex-end;display:flex;flex-grow:1}\",\"\\n.predefined-status {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: flex-start;\\n\\tflex-basis: 100%;\\n\\tborder-radius: var(--border-radius);\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t&:active{\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tflex-basis: 40px;\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\t&__message {\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\n\\t&__clear-at {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&::before {\\n\\t\\t\\tcontent: ' – ';\\n\\t\\t}\\n\\t}\\n}\\n.backup-status {\\n\\t&__reset-button {\\n\\t\\tjustify-content: flex-end;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".set-status-modal[data-v-09245728]{padding:8px 20px 20px 20px}.set-status-modal__header[data-v-09245728]{text-align:center;font-weight:bold;margin:15px 0}.set-status-modal__online-status[data-v-09245728]{display:grid;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-09245728]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__automation-hint[data-v-09245728]{display:flex;width:100%;margin-bottom:10px;color:var(--color-text-maxcontrast)}.set-status-modal .status-buttons[data-v-09245728]{display:flex;padding:3px;padding-left:0;gap:3px}@media only screen and (max-width: 500px){.set-status-modal__online-status[data-v-09245728]{grid-template-columns:none !important}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/SetStatusModal.vue\"],\"names\":[],\"mappings\":\"AAEA,mCACC,0BAAA,CAEA,2CACC,iBAAA,CACA,gBAAA,CACA,aAAA,CAGD,kDACC,YAAA,CACA,6BAAA,CAGD,iDACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,oDACC,YAAA,CACA,UAAA,CACA,kBAAA,CACA,mCAAA,CAGD,mDACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,OAAA,CAIF,0CACC,kDACC,qCAAA,CAAA\",\"sourcesContent\":[\"\\n\\n.set-status-modal {\\n\\tpadding: 8px 20px 20px 20px;\\n\\n\\t&__header {\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin: 15px 0;\\n\\t}\\n\\n\\t&__online-status {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n\\n\\t&__custom-input {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 10px;\\n\\t}\\n\\n\\t&__automation-hint {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 10px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.status-buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tpadding: 3px;\\n\\t\\tpadding-left:0;\\n\\t\\tgap: 3px;\\n\\t}\\n}\\n\\n@media only screen and (max-width: 500px) {\\n\\t.set-status-modal__online-status {\\n\\t\\tgrid-template-columns: none !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',{attrs:{\"size\":\"normal\",\"title\":_vm.$t('user_status', 'Set status')},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"set-status-modal\"},[_c('div',{staticClass:\"set-status-modal__header\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('user_status', 'Online status')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__online-status\"},_vm._l((_vm.statuses),function(status){return _c('OnlineStatusSelect',_vm._b({key:status.type,attrs:{\"checked\":status.type === _vm.statusType},on:{\"select\":_vm.changeStatus}},'OnlineStatusSelect',status,false))}),1),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__header\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('user_status', 'Status message')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__custom-input\"},[_c('CustomMessageInput',{ref:\"customMessageInput\",attrs:{\"icon\":_vm.icon,\"message\":_vm.editedMessage},on:{\"change\":_vm.setMessage,\"submit\":_vm.saveStatus,\"select-icon\":_vm.setIcon}})],1),_vm._v(\" \"),(_vm.hasBackupStatus)?_c('div',{staticClass:\"set-status-modal__automation-hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Your status was set automatically'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasBackupStatus)?_c('PreviousStatus',{attrs:{\"icon\":_vm.backupIcon,\"message\":_vm.backupMessage},on:{\"select\":_vm.revertBackupFromServer}}):_vm._e(),_vm._v(\" \"),_c('PredefinedStatusesList',{on:{\"select-status\":_vm.selectPredefinedMessage}}),_vm._v(\" \"),_c('ClearAtSelect',{attrs:{\"clear-at\":_vm.clearAt},on:{\"select-clear-at\":_vm.setClearAt}}),_vm._v(\" \"),_c('div',{staticClass:\"status-buttons\"},[_c('NcButton',{attrs:{\"wide\":true,\"type\":\"tertiary\",\"text\":_vm.$t('user_status', 'Clear status message'),\"disabled\":_vm.isSavingStatus},on:{\"click\":_vm.clearStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status message'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"wide\":true,\"type\":\"primary\",\"text\":_vm.$t('user_status', 'Set status message'),\"disabled\":_vm.isSavingStatus},on:{\"click\":_vm.saveStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Set status message'))+\"\\n\\t\\t\\t\")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\nimport moment from '@nextcloud/moment'\nimport { dateFactory } from '../services/dateService.js'\n\n/**\n * Formats a clearAt object to be human readable\n *\n * @param {object} clearAt The clearAt object\n * @return {string|null}\n */\nconst clearAtFilter = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn t('user_status', 'Don\\'t clear')\n\t}\n\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\t\treturn t('user_status', 'Today')\n\t\tcase 'week':\n\t\t\treturn t('user_status', 'This week')\n\n\t\tdefault:\n\t\t\treturn null\n\t\t}\n\t}\n\n\tif (clearAt.type === 'period') {\n\t\treturn moment.duration(clearAt.time * 1000).humanize()\n\t}\n\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\tconst momentNow = moment(dateFactory())\n\t\tconst momentClearAt = moment(clearAt.time, 'X')\n\n\t\treturn moment.duration(momentNow.diff(momentClearAt)).humanize()\n\t}\n\n\treturn null\n}\n\nexport {\n\tclearAtFilter,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"predefined-status\"\n\t\ttabindex=\"0\"\n\t\t@keyup.enter=\"select\"\n\t\t@keyup.space=\"select\"\n\t\t@click=\"select\">\n\t\t<span aria-hidden=\"true\" class=\"predefined-status__icon\">\n\t\t\t{{ icon }}\n\t\t</span>\n\t\t<span class=\"predefined-status__message\">\n\t\t\t{{ message }}\n\t\t</span>\n\t\t<span class=\"predefined-status__clear-at\">\n\t\t\t{{ clearAt | clearAtFilter }}\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { clearAtFilter } from '../filters/clearAtFilter.js'\n\nexport default {\n\tname: 'PredefinedStatus',\n\tfilters: {\n\t\tclearAtFilter,\n\t},\n\tprops: {\n\t\tmessageId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user clicks the row\n\t\t */\n\t\tselect() {\n\t\t\tthis.$emit('select')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PredefinedStatus.vue?vue&type=template&id=26621de0&scoped=true&\"\nimport script from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26621de0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"predefined-status\",attrs:{\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.select.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _vm.select.apply(null, arguments)}],\"click\":_vm.select}},[_c('span',{staticClass:\"predefined-status__icon\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.icon)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__message\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__clear-at\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm._f(\"clearAtFilter\")(_vm.clearAt))+\"\\n\\t\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div v-if=\"statusesHaveLoaded\"\n\t\tclass=\"predefined-statuses-list\">\n\t\t<PredefinedStatus v-for=\"status in predefinedStatuses\"\n\t\t\t:key=\"status.id\"\n\t\t\t:message-id=\"status.id\"\n\t\t\t:icon=\"status.icon\"\n\t\t\t:message=\"status.message\"\n\t\t\t:clear-at=\"status.clearAt\"\n\t\t\t@select=\"selectStatus(status)\" />\n\t</div>\n\t<div v-else\n\t\tclass=\"predefined-statuses-list\">\n\t\t<div class=\"icon icon-loading-small\" />\n\t</div>\n</template>\n\n<script>\nimport PredefinedStatus from './PredefinedStatus.vue'\nimport { mapGetters, mapState } from 'vuex'\n\nexport default {\n\tname: 'PredefinedStatusesList',\n\tcomponents: {\n\t\tPredefinedStatus,\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tpredefinedStatuses: state => state.predefinedStatuses.predefinedStatuses,\n\t\t}),\n\t\t...mapGetters(['statusesHaveLoaded']),\n\t},\n\t/**\n\t * Loads all predefined statuses from the server\n\t * when this component is mounted\n\t */\n\tcreated() {\n\t\tthis.$store.dispatch('loadAllPredefinedStatuses')\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user selects a status\n\t\t *\n\t\t * @param {object} status The selected status\n\t\t */\n\t\tselectStatus(status) {\n\t\t\tthis.$emit('select-status', status)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-statuses-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 10px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PredefinedStatusesList.vue?vue&type=template&id=57150604&scoped=true&\"\nimport script from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57150604\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.statusesHaveLoaded)?_c('div',{staticClass:\"predefined-statuses-list\"},_vm._l((_vm.predefinedStatuses),function(status){return _c('PredefinedStatus',{key:status.id,attrs:{\"message-id\":status.id,\"icon\":status.icon,\"message\":status.message,\"clear-at\":status.clearAt},on:{\"select\":function($event){return _vm.selectStatus(status)}}})}),1):_c('div',{staticClass:\"predefined-statuses-list\"},[_c('div',{staticClass:\"icon icon-loading-small\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"predefined-status backup-status\"\n\t\ttabindex=\"0\"\n\t\t@keyup.enter=\"select\"\n\t\t@keyup.space=\"select\"\n\t\t@click=\"select\">\n\t\t<span class=\"predefined-status__icon\">\n\t\t\t{{ icon }}\n\t\t</span>\n\t\t<span class=\"predefined-status__message\">\n\t\t\t{{ message }}\n\t\t</span>\n\t\t<span class=\"predefined-status__clear-at\">\n\t\t\t{{ $t('user_status', 'Previously set') }}\n\t\t</span>\n\n\t\t<div class=\"backup-status__reset-button\">\n\t\t\t<NcButton @click=\"select\">\n\t\t\t\t{{ $t('user_status', 'Reset status') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'PreviousStatus',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: [String, null],\n\t\t\trequired: true,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user clicks the row\n\t\t */\n\t\tselect() {\n\t\t\tthis.$emit('select')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n.backup-status {\n\t&__reset-button {\n\t\tjustify-content: flex-end;\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PreviousStatus.vue?vue&type=template&id=ba802d4c&scoped=true&\"\nimport script from \"./PreviousStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PreviousStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ba802d4c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"predefined-status backup-status\",attrs:{\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.select.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _vm.select.apply(null, arguments)}],\"click\":_vm.select}},[_c('span',{staticClass:\"predefined-status__icon\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.icon)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__message\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__clear-at\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('user_status', 'Previously set'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"backup-status__reset-button\"},[_c('NcButton',{on:{\"click\":_vm.select}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Reset status'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"custom-input\"},[_c('NcEmojiPicker',{attrs:{\"container\":\".custom-input\"},on:{\"select\":_vm.setIcon}},[_c('NcButton',{staticClass:\"custom-input__emoji-button\",attrs:{\"type\":\"tertiary\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.visibleIcon)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"custom-input__container\"},[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":\"user_status_message\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'What is your status?'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"id\":\"user_status_message\",\"maxlength\":\"80\",\"disabled\":_vm.disabled,\"placeholder\":_vm.$t('user_status', 'What is your status?'),\"type\":\"text\"},domProps:{\"value\":_vm.message},on:{\"change\":_vm.onChange,\"keyup\":_vm.onKeyup,\"paste\":_vm.onKeyup}})])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"custom-input\">\n\t\t<NcEmojiPicker container=\".custom-input\" @select=\"setIcon\">\n\t\t\t<NcButton class=\"custom-input__emoji-button\" type=\"tertiary\">\n\t\t\t\t{{ visibleIcon }}\n\t\t\t</NcButton>\n\t\t</NcEmojiPicker>\n\t\t<div class=\"custom-input__container\">\n\t\t\t<label class=\"hidden-visually\" for=\"user_status_message\">\n\t\t\t\t{{ t('user_status', 'What is your status?') }}\n\t\t\t</label>\n\t\t\t<input id=\"user_status_message\"\n\t\t\t\tref=\"input\"\n\t\t\t\tmaxlength=\"80\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:placeholder=\"$t('user_status', 'What is your status?')\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"message\"\n\t\t\t\t@change=\"onChange\"\n\t\t\t\t@keyup=\"onKeyup\"\n\t\t\t\t@paste=\"onKeyup\">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcEmojiPicker from '@nextcloud/vue/dist/Components/NcEmojiPicker.js'\n\nexport default {\n\tname: 'CustomMessageInput',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcEmojiPicker,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '😀',\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tdefault: () => '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'change',\n\t\t'submit',\n\t\t'icon-selected',\n\t],\n\n\tcomputed: {\n\t\t/**\n\t\t * Returns the user-set icon or a smiley in case no icon is set\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleIcon() {\n\t\t\treturn this.icon || '😀'\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs.input.focus()\n\t\t},\n\n\t\t/**\n\t\t * Notifies the parent component about a changed input\n\t\t *\n\t\t * @param {Event} event The Change Event\n\t\t */\n\t\tonKeyup(event) {\n\t\t\tthis.$emit('change', event.target.value)\n\t\t},\n\n\t\tonChange(event) {\n\t\t\tthis.$emit('submit', event.target.value)\n\t\t},\n\n\t\tsetIcon(icon) {\n\t\t\tthis.$emit('select-icon', icon)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.custom-input {\n\tdisplay: flex;\n\twidth: 100%;\n\n\t&__emoji-button {\n\t\tmin-height: 36px;\n\t\tpadding: 0;\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-right: none;\n\t\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\n\n\t\t&:hover {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t&__container {\n\t\twidth: 100%;\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tmargin: 0;\n\t\t\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomMessageInput.vue?vue&type=template&id=59f118ca&scoped=true&\"\nimport script from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59f118ca\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"clear-at-select\"},[_c('label',{staticClass:\"clear-at-select__label\",attrs:{\"for\":\"clearStatus\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status after'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"clear-at-select__select\",attrs:{\"input-id\":\"clearStatus\",\"options\":_vm.options,\"value\":_vm.option,\"clearable\":false,\"placement\":\"top\"},on:{\"option:selected\":_vm.select}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @return {object[]}\n */\nconst getAllClearAtOptions = () => {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"clear-at-select\">\n\t\t<label class=\"clear-at-select__label\" for=\"clearStatus\">\n\t\t\t{{ $t('user_status', 'Clear status after') }}\n\t\t</label>\n\t\t<NcSelect input-id=\"clearStatus\"\n\t\t\tclass=\"clear-at-select__select\"\n\t\t\t:options=\"options\"\n\t\t\t:value=\"option\"\n\t\t\t:clearable=\"false\"\n\t\t\tplacement=\"top\"\n\t\t\t@option:selected=\"select\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport { getAllClearAtOptions } from '../services/clearAtOptionsService.js'\nimport { clearAtFilter } from '../filters/clearAtFilter.js'\n\nexport default {\n\tname: 'ClearAtSelect',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tprops: {\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\toptions: getAllClearAtOptions(),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Returns an object of the currently selected option\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\toption() {\n\t\t\treturn {\n\t\t\t\tclearAt: this.clearAt,\n\t\t\t\tlabel: clearAtFilter(this.clearAt),\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Triggered when the user selects a new option.\n\t\t *\n\t\t * @param {object=} option The new selected option\n\t\t */\n\t\tselect(option) {\n\t\t\tif (!option) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('select-clear-at', option.clearAt)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.clear-at-select {\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\talign-items: center;\n\n\t&__label {\n\t\tmargin-right: 12px;\n\t}\n\n\t&__select {\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ClearAtSelect.vue?vue&type=template&id=bfc4d14a&scoped=true&\"\nimport script from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bfc4d14a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"user-status-online-select\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\tclass=\"user-status-online-select__input\"\n\t\t\ttype=\"radio\"\n\t\t\tname=\"user-status-online\"\n\t\t\t@change=\"onChange\">\n\t\t<label :for=\"id\" class=\"user-status-online-select__label\">\n\t\t\t{{ label }}\n\t\t\t<span :class=\"icon\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t<em class=\"user-status-online-select__subline\">{{ subline }}</em>\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'OnlineStatusSelect',\n\n\tprops: {\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `user-status-online-status-${this.type}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonChange() {\n\t\t\tthis.$emit('select', this.type)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n$icon-size: 24px;\n$label-padding: 8px;\n\n.user-status-online-select {\n\t// Inputs are here for keyboard navigation, they are not visually visible\n\t&__input {\n\t\tposition: absolute;\n\t\ttop: auto;\n\t\tleft: -10000px;\n\t\toverflow: hidden;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t}\n\n\t&__label {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tmargin: $label-padding;\n\t\tpadding: $label-padding;\n\t\tpadding-left: $icon-size + $label-padding * 2;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-background-hover);\n\t\tbackground-position: $label-padding center;\n\t\tbackground-size: $icon-size;\n\n\t\tspan,\n\t\t& {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\ttop: calc(50% - math.div($icon-size, 2));\n\t\t\tleft: $label-padding;\n\t\t\tdisplay: block;\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t}\n\t}\n\n\t&__input:checked + &__label,\n\t&__input:focus + &__label,\n\t&__label:hover {\n\t\tborder-color: var(--color-primary);\n\t}\n\n\t&__label:active {\n\t\tborder-color: var(--color-border-dark);\n\t}\n\n\t&__subline {\n\t\tdisplay: block;\n\t\tcolor: var(--color-text-lighter);\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=0692bb92&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=0692bb92&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OnlineStatusSelect.vue?vue&type=template&id=0692bb92&scoped=true&\"\nimport script from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OnlineStatusSelect.vue?vue&type=style&index=0&id=0692bb92&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0692bb92\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"user-status-online-select\"},[_c('input',{staticClass:\"user-status-online-select__input\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"user-status-online\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onChange}}),_vm._v(\" \"),_c('label',{staticClass:\"user-status-online-select__label\",attrs:{\"for\":_vm.id}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\"),_c('span',{class:_vm.icon,attrs:{\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\" \"),_c('em',{staticClass:\"user-status-online-select__subline\"},[_vm._v(_vm._s(_vm.subline))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcModal size=\"normal\"\n\t\t:title=\"$t('user_status', 'Set status')\"\n\t\t@close=\"closeModal\">\n\t\t<div class=\"set-status-modal\">\n\t\t\t<!-- Status selector -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h2>{{ $t('user_status', 'Online status') }}</h2>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__online-status\">\n\t\t\t\t<OnlineStatusSelect v-for=\"status in statuses\"\n\t\t\t\t\t:key=\"status.type\"\n\t\t\t\t\tv-bind=\"status\"\n\t\t\t\t\t:checked=\"status.type === statusType\"\n\t\t\t\t\t@select=\"changeStatus\" />\n\t\t\t</div>\n\n\t\t\t<!-- Status message -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h2>{{ $t('user_status', 'Status message') }}</h2>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__custom-input\">\n\t\t\t\t<CustomMessageInput ref=\"customMessageInput\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\t:message=\"editedMessage\"\n\t\t\t\t\t@change=\"setMessage\"\n\t\t\t\t\t@submit=\"saveStatus\"\n\t\t\t\t\t@select-icon=\"setIcon\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"hasBackupStatus\"\n\t\t\t\tclass=\"set-status-modal__automation-hint\">\n\t\t\t\t{{ $t('user_status', 'Your status was set automatically') }}\n\t\t\t</div>\n\t\t\t<PreviousStatus v-if=\"hasBackupStatus\"\n\t\t\t\t:icon=\"backupIcon\"\n\t\t\t\t:message=\"backupMessage\"\n\t\t\t\t@select=\"revertBackupFromServer\" />\n\t\t\t<PredefinedStatusesList @select-status=\"selectPredefinedMessage\" />\n\t\t\t<ClearAtSelect :clear-at=\"clearAt\"\n\t\t\t\t@select-clear-at=\"setClearAt\" />\n\t\t\t<div class=\"status-buttons\">\n\t\t\t\t<NcButton :wide=\"true\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:text=\"$t('user_status', 'Clear status message')\"\n\t\t\t\t\t:disabled=\"isSavingStatus\"\n\t\t\t\t\t@click=\"clearStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Clear status message') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton :wide=\"true\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:text=\"$t('user_status', 'Set status message')\"\n\t\t\t\t\t:disabled=\"isSavingStatus\"\n\t\t\t\t\t@click=\"saveStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Set status message') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport { getAllStatusOptions } from '../services/statusOptionsService.js'\nimport OnlineStatusMixin from '../mixins/OnlineStatusMixin.js'\nimport PredefinedStatusesList from './PredefinedStatusesList.vue'\nimport PreviousStatus from './PreviousStatus.vue'\nimport CustomMessageInput from './CustomMessageInput.vue'\nimport ClearAtSelect from './ClearAtSelect.vue'\nimport OnlineStatusSelect from './OnlineStatusSelect.vue'\n\nexport default {\n\tname: 'SetStatusModal',\n\n\tcomponents: {\n\t\tClearAtSelect,\n\t\tCustomMessageInput,\n\t\tNcModal,\n\t\tOnlineStatusSelect,\n\t\tPredefinedStatusesList,\n\t\tPreviousStatus,\n\t\tNcButton,\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tclearAt: null,\n\t\t\teditedMessage: '',\n\t\t\tisSavingStatus: false,\n\t\t\tstatuses: getAllStatusOptions(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmessageId() {\n\t\t\treturn this.$store.state.userStatus.messageId\n\t\t},\n\t\ticon() {\n\t\t\treturn this.$store.state.userStatus.icon\n\t\t},\n\t\tmessage() {\n\t\t\treturn this.$store.state.userStatus.message || ''\n\t\t},\n\t\thasBackupStatus() {\n\t\t\treturn this.messageId && (this.backupIcon || this.backupMessage)\n\t\t},\n\t\tbackupIcon() {\n\t\t\treturn this.$store.state.userBackupStatus.icon || ''\n\t\t},\n\t\tbackupMessage() {\n\t\t\treturn this.$store.state.userBackupStatus.message || ''\n\t\t},\n\n\t\tresetButtonText() {\n\t\t\tif (this.backupIcon && this.backupMessage) {\n\t\t\t\treturn this.$t('user_status', 'Reset status to \"{icon} {message}\"', {\n\t\t\t\t\ticon: this.backupIcon,\n\t\t\t\t\tmessage: this.backupMessage,\n\t\t\t\t})\n\t\t\t} else if (this.backupMessage) {\n\t\t\t\treturn this.$t('user_status', 'Reset status to \"{message}\"', {\n\t\t\t\t\tmessage: this.backupMessage,\n\t\t\t\t})\n\t\t\t} else if (this.backupIcon) {\n\t\t\t\treturn this.$t('user_status', 'Reset status to \"{icon}\"', {\n\t\t\t\t\ticon: this.backupIcon,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Reset status')\n\t\t},\n\t},\n\n\twatch: {\n\t\tmessage: {\n\t\t\timmediate: true,\n\t\t\thandler(newValue) {\n\t\t\t\tthis.editedMessage = newValue\n\t\t\t},\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current status when a user opens dialog\n\t */\n\tmounted() {\n\t\tthis.$store.dispatch('fetchBackupFromServer')\n\n\t\tif (this.$store.state.userStatus.clearAt !== null) {\n\t\t\tthis.clearAt = {\n\t\t\t\ttype: '_time',\n\t\t\t\ttime: this.$store.state.userStatus.clearAt,\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Closes the Set Status modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.$emit('close')\n\t\t},\n\t\t/**\n\t\t * Sets a new icon\n\t\t *\n\t\t * @param {string} icon The new icon\n\t\t */\n\t\tsetIcon(icon) {\n\t\t\tthis.$store.dispatch('setCustomMessage', {\n\t\t\t\tmessage: this.message,\n\t\t\t\ticon,\n\t\t\t\tclearAt: this.clearAt,\n\t\t\t})\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.customMessageInput.focus()\n\t\t\t})\n\t\t},\n\t\t/**\n\t\t * Sets a new message\n\t\t *\n\t\t * @param {string} message The new message\n\t\t */\n\t\tsetMessage(message) {\n\t\t\tthis.editedMessage = message\n\t\t},\n\t\t/**\n\t\t * Sets a new clearAt value\n\t\t *\n\t\t * @param {object} clearAt The new clearAt object\n\t\t */\n\t\tsetClearAt(clearAt) {\n\t\t\tthis.clearAt = clearAt\n\t\t},\n\t\t/**\n\t\t * Sets new icon/message/clearAt based on a predefined message\n\t\t *\n\t\t * @param {object} status The predefined status object\n\t\t */\n\t\tselectPredefinedMessage(status) {\n\t\t\tthis.clearAt = status.clearAt\n\t\t\tthis.$store.dispatch('setPredefinedMessage', {\n\t\t\t\tmessageId: status.id,\n\t\t\t\tclearAt: status.clearAt,\n\t\t\t})\n\t\t},\n\t\t/**\n\t\t * Saves the status and closes the\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync saveStatus() {\n\t\t\tif (this.isSavingStatus) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tif (this.messageId !== undefined && this.messageId !== null) {\n\t\t\t\t\tawait this.$store.dispatch('setPredefinedMessage', {\n\t\t\t\t\t\tmessageId: this.messageId,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('setCustomMessage', {\n\t\t\t\t\t\tmessage: this.editedMessage,\n\t\t\t\t\t\ticon: this.icon,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync clearStatus() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tawait this.$store.dispatch('clearMessage')\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error clearing the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync revertBackupFromServer() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tawait this.$store.dispatch('revertBackupFromServer', {\n\t\t\t\t\tmessageId: this.messageId,\n\t\t\t\t})\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error reverting the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.set-status-modal {\n\tpadding: 8px 20px 20px 20px;\n\n\t&__header {\n\t\ttext-align: center;\n\t\tfont-weight: bold;\n\t\tmargin: 15px 0;\n\t}\n\n\t&__online-status {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n\n\t&__custom-input {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&__automation-hint {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.status-buttons {\n\t\tdisplay: flex;\n\t\tpadding: 3px;\n\t\tpadding-left:0;\n\t\tgap: 3px;\n\t}\n}\n\n@media only screen and (max-width: 500px) {\n\t.set-status-modal__online-status {\n\t\tgrid-template-columns: none !important;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nconst getAllStatusOptions = () => {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t\ticon: 'icon-user-status-online',\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t\ticon: 'icon-user-status-away',\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t\ticon: 'icon-user-status-dnd',\n\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t\ticon: 'icon-user-status-invisible',\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SetStatusModal.vue?vue&type=template&id=09245728&scoped=true&\"\nimport script from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09245728\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","clearAtFilter","clearAt","t","type","time","moment","humanize","momentNow","dateFactory","momentClearAt","diff","name","filters","props","messageId","String","required","icon","message","Object","default","methods","select","$emit","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","on","$event","indexOf","_k","keyCode","key","apply","arguments","_v","_s","_f","components","PredefinedStatus","computed","mapState","predefinedStatuses","state","mapGetters","created","$store","dispatch","selectStatus","status","statusesHaveLoaded","_l","NcButton","$t","NcEmojiPicker","disabled","Boolean","emits","visibleIcon","focus","$refs","input","onKeyup","event","target","value","onChange","setIcon","ref","domProps","NcSelect","data","label","option","checked","subline","concat","class","ClearAtSelect","CustomMessageInput","NcModal","OnlineStatusSelect","PredefinedStatusesList","PreviousStatus","mixins","OnlineStatusMixin","editedMessage","isSavingStatus","statuses","userStatus","hasBackupStatus","backupIcon","backupMessage","userBackupStatus","resetButtonText","watch","immediate","handler","newValue","mounted","closeModal","$nextTick","customMessageInput","setMessage","setClearAt","selectPredefinedMessage","undefined","err","showError","console","debug","_b","statusType","changeStatus","saveStatus","_e","revertBackupFromServer","clearStatus"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"user-status-modal-8299.js?v=1aa6f08709a7157ce48a","mappings":"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","sources":["webpack:///nextcloud/apps/user_status/src/components/ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/OnlineStatusSelect.vue?vue&type=style&index=0&id=eaafd0b0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/user_status/src/components/SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&","webpack://nextcloud/./apps/user_status/src/components/SetStatusModal.vue?dc19","webpack:///nextcloud/apps/user_status/src/filters/clearAtFilter.js","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatus.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatus.vue","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatus.vue?0083","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatus.vue?159c","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatus.vue?74a5","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatusesList.vue","webpack:///nextcloud/apps/user_status/src/components/PredefinedStatusesList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatusesList.vue?251e","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatusesList.vue?944d","webpack://nextcloud/./apps/user_status/src/components/PredefinedStatusesList.vue?26ad","webpack:///nextcloud/apps/user_status/src/components/PreviousStatus.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/PreviousStatus.vue","webpack://nextcloud/./apps/user_status/src/components/PreviousStatus.vue?ecd7","webpack://nextcloud/./apps/user_status/src/components/PreviousStatus.vue?e294","webpack://nextcloud/./apps/user_status/src/components/PreviousStatus.vue?a03f","webpack://nextcloud/./apps/user_status/src/components/CustomMessageInput.vue?d5a9","webpack:///nextcloud/apps/user_status/src/components/CustomMessageInput.vue","webpack:///nextcloud/apps/user_status/src/components/CustomMessageInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/components/CustomMessageInput.vue?1ade","webpack://nextcloud/./apps/user_status/src/components/CustomMessageInput.vue?87a5","webpack://nextcloud/./apps/user_status/src/components/ClearAtSelect.vue?2c76","webpack:///nextcloud/apps/user_status/src/services/clearAtOptionsService.js","webpack:///nextcloud/apps/user_status/src/components/ClearAtSelect.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/ClearAtSelect.vue","webpack://nextcloud/./apps/user_status/src/components/ClearAtSelect.vue?3e4c","webpack://nextcloud/./apps/user_status/src/components/ClearAtSelect.vue?b1cd","webpack:///nextcloud/apps/user_status/src/components/OnlineStatusSelect.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/components/OnlineStatusSelect.vue","webpack://nextcloud/./apps/user_status/src/components/OnlineStatusSelect.vue?4234","webpack://nextcloud/./apps/user_status/src/components/OnlineStatusSelect.vue?1ac6","webpack://nextcloud/./apps/user_status/src/components/OnlineStatusSelect.vue?12b9","webpack:///nextcloud/apps/user_status/src/components/SetStatusModal.vue","webpack:///nextcloud/apps/user_status/src/components/SetStatusModal.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/user_status/src/services/statusOptionsService.js","webpack://nextcloud/./apps/user_status/src/components/SetStatusModal.vue?5663","webpack://nextcloud/./apps/user_status/src/components/SetStatusModal.vue?4fb2"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".clear-at-select[data-v-bfc4d14a]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-bfc4d14a]{margin-right:12px}.clear-at-select__select[data-v-bfc4d14a]{flex-grow:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/ClearAtSelect.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,yCACC,iBAAA,CAGD,0CACC,WAAA\",\"sourcesContent\":[\"\\n.clear-at-select {\\n\\tdisplay: flex;\\n\\tmargin-bottom: 10px;\\n\\talign-items: center;\\n\\n\\t&__label {\\n\\t\\tmargin-right: 12px;\\n\\t}\\n\\n\\t&__select {\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".custom-input[data-v-59f118ca]{display:flex;width:100%}.custom-input__emoji-button[data-v-59f118ca]{min-height:36px;padding:0;border:2px solid var(--color-border-maxcontrast);border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.custom-input__emoji-button[data-v-59f118ca]:hover{border-color:var(--color-primary-element)}.custom-input__container[data-v-59f118ca]{width:100%}.custom-input__container input[data-v-59f118ca]{width:100%;margin:0;border-radius:0 var(--border-radius) var(--border-radius) 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/CustomMessageInput.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,YAAA,CACA,UAAA,CAEA,6CACC,eAAA,CACA,SAAA,CACA,gDAAA,CACA,iBAAA,CACA,2DAAA,CAEA,mDACC,yCAAA,CAIF,0CACC,UAAA,CAEA,gDACC,UAAA,CACA,QAAA,CACA,2DAAA\",\"sourcesContent\":[\"\\n.custom-input {\\n\\tdisplay: flex;\\n\\twidth: 100%;\\n\\n\\t&__emoji-button {\\n\\t\\tmin-height: 36px;\\n\\t\\tpadding: 0;\\n\\t\\tborder: 2px solid var(--color-border-maxcontrast);\\n\\t\\tborder-right: none;\\n\\t\\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\\n\\n\\t\\t&:hover {\\n\\t\\t\\tborder-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t&__container {\\n\\t\\twidth: 100%;\\n\\n\\t\\tinput {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-status-online-select__input[data-v-eaafd0b0]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-eaafd0b0]{position:relative;display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__label span[data-v-eaafd0b0],.user-status-online-select__label[data-v-eaafd0b0]{cursor:pointer}.user-status-online-select__label span[data-v-eaafd0b0]{position:absolute;top:calc(50% - 12px);left:8px;display:block;width:24px;height:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-eaafd0b0],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-eaafd0b0],.user-status-online-select__label[data-v-eaafd0b0]:hover{border-color:var(--color-primary-element)}.user-status-online-select__label[data-v-eaafd0b0]:active{border-color:var(--color-border-dark)}.user-status-online-select__subline[data-v-eaafd0b0]{display:block;color:var(--color-text-lighter)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/OnlineStatusSelect.vue\"],\"names\":[],\"mappings\":\"AAOC,mDACC,iBAAA,CACA,QAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CAGD,mDACC,iBAAA,CACA,aAAA,CACA,UAhBc,CAiBd,WAjBc,CAkBd,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,8CAAA,CACA,8BAAA,CACA,oBAxBU,CA0BV,2GAEC,cAAA,CAGD,wDACC,iBAAA,CACA,oBAAA,CACA,QAjCa,CAkCb,aAAA,CACA,UApCS,CAqCT,WArCS,CAyCX,iPAGC,yCAAA,CAGD,0DACC,qCAAA,CAGD,qDACC,aAAA,CACA,+BAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n$icon-size: 24px;\\n$label-padding: 8px;\\n\\n.user-status-online-select {\\n\\t// Inputs are here for keyboard navigation, they are not visually visible\\n\\t&__input {\\n\\t\\tposition: absolute;\\n\\t\\ttop: auto;\\n\\t\\tleft: -10000px;\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 1px;\\n\\t\\theight: 1px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: block;\\n\\t\\tmargin: $label-padding;\\n\\t\\tpadding: $label-padding;\\n\\t\\tpadding-left: $icon-size + $label-padding * 2;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tbackground-position: $label-padding center;\\n\\t\\tbackground-size: $icon-size;\\n\\n\\t\\tspan,\\n\\t\\t& {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: calc(50% - math.div($icon-size, 2));\\n\\t\\t\\tleft: $label-padding;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\theight: $icon-size;\\n\\t\\t}\\n\\t}\\n\\n\\t&__input:checked + &__label,\\n\\t&__input:focus + &__label,\\n\\t&__label:hover {\\n\\t\\tborder-color: var(--color-primary-element);\\n\\t}\\n\\n\\t&__label:active {\\n\\t\\tborder-color: var(--color-border-dark);\\n\\t}\\n\\n\\t&__subline {\\n\\t\\tdisplay: block;\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".predefined-status[data-v-26621de0]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-26621de0]:hover,.predefined-status[data-v-26621de0]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-26621de0]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-26621de0]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-26621de0]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-26621de0]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-26621de0]::before{content:\\\" – \\\"}\", \"\",{\"version\":3,\"sources\":[\"webpack://./PredefinedStatus.vue\",\"webpack://./apps/user_status/src/components/PredefinedStatus.vue\"],\"names\":[],\"mappings\":\"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC\",\"sourcesContent\":[\".predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:\\\" – \\\"}\",\"\\n.predefined-status {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: flex-start;\\n\\tflex-basis: 100%;\\n\\tborder-radius: var(--border-radius);\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t&:active{\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tflex-basis: 40px;\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\t&__message {\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\n\\t&__clear-at {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&::before {\\n\\t\\t\\tcontent: ' – ';\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".predefined-statuses-list[data-v-57150604]{display:flex;flex-direction:column;margin-bottom:10px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/PredefinedStatusesList.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,YAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.predefined-statuses-list {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 10px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".predefined-status[data-v-ba802d4c]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-ba802d4c]:hover,.predefined-status[data-v-ba802d4c]:focus{background-color:var(--color-background-hover)}.predefined-status[data-v-ba802d4c]:active{background-color:var(--color-background-dark)}.predefined-status__icon[data-v-ba802d4c]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-ba802d4c]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-ba802d4c]{color:var(--color-text-maxcontrast)}.predefined-status__clear-at[data-v-ba802d4c]::before{content:\\\" – \\\"}.backup-status__reset-button[data-v-ba802d4c]{justify-content:flex-end;display:flex;flex-grow:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./PreviousStatus.vue\",\"webpack://./apps/user_status/src/components/PreviousStatus.vue\"],\"names\":[],\"mappings\":\"AAAA,oCCCA,YACC,CAAA,gBACA,CAAA,0BACA,CAAA,eACA,CAAA,kCACA,CAAA,kBACA,CAAA,eACA,CAAA,oFAEA,8CAEC,CAAA,2CAGD,6CACC,CAAA,0CAGD,eACC,CAAA,iBACA,CAAA,6CAGD,gBACC,CAAA,aACA,CAAA,8CAGD,mCACC,CAAA,sDAEA,aACC,CAAA,8CAKF,wBACC,CAAA,YACA,CAAA,WACA\",\"sourcesContent\":[\".predefined-status{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status:hover,.predefined-status:focus{background-color:var(--color-background-hover)}.predefined-status:active{background-color:var(--color-background-dark)}.predefined-status__icon{flex-basis:40px;text-align:center}.predefined-status__message{font-weight:bold;padding:0 6px}.predefined-status__clear-at{color:var(--color-text-maxcontrast)}.predefined-status__clear-at::before{content:\\\" – \\\"}.backup-status__reset-button{justify-content:flex-end;display:flex;flex-grow:1}\",\"\\n.predefined-status {\\n\\tdisplay: flex;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: flex-start;\\n\\tflex-basis: 100%;\\n\\tborder-radius: var(--border-radius);\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t&:active{\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tflex-basis: 40px;\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\t&__message {\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\n\\t&__clear-at {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&::before {\\n\\t\\t\\tcontent: ' – ';\\n\\t\\t}\\n\\t}\\n}\\n.backup-status {\\n\\t&__reset-button {\\n\\t\\tjustify-content: flex-end;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".set-status-modal[data-v-09245728]{padding:8px 20px 20px 20px}.set-status-modal__header[data-v-09245728]{text-align:center;font-weight:bold;margin:15px 0}.set-status-modal__online-status[data-v-09245728]{display:grid;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-09245728]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__automation-hint[data-v-09245728]{display:flex;width:100%;margin-bottom:10px;color:var(--color-text-maxcontrast)}.set-status-modal .status-buttons[data-v-09245728]{display:flex;padding:3px;padding-left:0;gap:3px}@media only screen and (max-width: 500px){.set-status-modal__online-status[data-v-09245728]{grid-template-columns:none !important}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/components/SetStatusModal.vue\"],\"names\":[],\"mappings\":\"AAEA,mCACC,0BAAA,CAEA,2CACC,iBAAA,CACA,gBAAA,CACA,aAAA,CAGD,kDACC,YAAA,CACA,6BAAA,CAGD,iDACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,oDACC,YAAA,CACA,UAAA,CACA,kBAAA,CACA,mCAAA,CAGD,mDACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,OAAA,CAIF,0CACC,kDACC,qCAAA,CAAA\",\"sourcesContent\":[\"\\n\\n.set-status-modal {\\n\\tpadding: 8px 20px 20px 20px;\\n\\n\\t&__header {\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin: 15px 0;\\n\\t}\\n\\n\\t&__online-status {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n\\n\\t&__custom-input {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 10px;\\n\\t}\\n\\n\\t&__automation-hint {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 10px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.status-buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tpadding: 3px;\\n\\t\\tpadding-left:0;\\n\\t\\tgap: 3px;\\n\\t}\\n}\\n\\n@media only screen and (max-width: 500px) {\\n\\t.set-status-modal__online-status {\\n\\t\\tgrid-template-columns: none !important;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcModal',{attrs:{\"size\":\"normal\",\"title\":_vm.$t('user_status', 'Set status')},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"set-status-modal\"},[_c('div',{staticClass:\"set-status-modal__header\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('user_status', 'Online status')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__online-status\"},_vm._l((_vm.statuses),function(status){return _c('OnlineStatusSelect',_vm._b({key:status.type,attrs:{\"checked\":status.type === _vm.statusType},on:{\"select\":_vm.changeStatus}},'OnlineStatusSelect',status,false))}),1),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__header\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('user_status', 'Status message')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__custom-input\"},[_c('CustomMessageInput',{ref:\"customMessageInput\",attrs:{\"icon\":_vm.icon,\"message\":_vm.editedMessage},on:{\"change\":_vm.setMessage,\"submit\":_vm.saveStatus,\"select-icon\":_vm.setIcon}})],1),_vm._v(\" \"),(_vm.hasBackupStatus)?_c('div',{staticClass:\"set-status-modal__automation-hint\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Your status was set automatically'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasBackupStatus)?_c('PreviousStatus',{attrs:{\"icon\":_vm.backupIcon,\"message\":_vm.backupMessage},on:{\"select\":_vm.revertBackupFromServer}}):_vm._e(),_vm._v(\" \"),_c('PredefinedStatusesList',{on:{\"select-status\":_vm.selectPredefinedMessage}}),_vm._v(\" \"),_c('ClearAtSelect',{attrs:{\"clear-at\":_vm.clearAt},on:{\"select-clear-at\":_vm.setClearAt}}),_vm._v(\" \"),_c('div',{staticClass:\"status-buttons\"},[_c('NcButton',{attrs:{\"wide\":true,\"type\":\"tertiary\",\"text\":_vm.$t('user_status', 'Clear status message'),\"disabled\":_vm.isSavingStatus},on:{\"click\":_vm.clearStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status message'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"wide\":true,\"type\":\"primary\",\"text\":_vm.$t('user_status', 'Set status message'),\"disabled\":_vm.isSavingStatus},on:{\"click\":_vm.saveStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Set status message'))+\"\\n\\t\\t\\t\")])],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\nimport moment from '@nextcloud/moment'\nimport { dateFactory } from '../services/dateService.js'\n\n/**\n * Formats a clearAt object to be human readable\n *\n * @param {object} clearAt The clearAt object\n * @return {string|null}\n */\nconst clearAtFilter = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn t('user_status', 'Don\\'t clear')\n\t}\n\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\t\treturn t('user_status', 'Today')\n\t\tcase 'week':\n\t\t\treturn t('user_status', 'This week')\n\n\t\tdefault:\n\t\t\treturn null\n\t\t}\n\t}\n\n\tif (clearAt.type === 'period') {\n\t\treturn moment.duration(clearAt.time * 1000).humanize()\n\t}\n\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\tconst momentNow = moment(dateFactory())\n\t\tconst momentClearAt = moment(clearAt.time, 'X')\n\n\t\treturn moment.duration(momentNow.diff(momentClearAt)).humanize()\n\t}\n\n\treturn null\n}\n\nexport {\n\tclearAtFilter,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"predefined-status\"\n\t\ttabindex=\"0\"\n\t\t@keyup.enter=\"select\"\n\t\t@keyup.space=\"select\"\n\t\t@click=\"select\">\n\t\t<span aria-hidden=\"true\" class=\"predefined-status__icon\">\n\t\t\t{{ icon }}\n\t\t</span>\n\t\t<span class=\"predefined-status__message\">\n\t\t\t{{ message }}\n\t\t</span>\n\t\t<span class=\"predefined-status__clear-at\">\n\t\t\t{{ clearAt | clearAtFilter }}\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { clearAtFilter } from '../filters/clearAtFilter.js'\n\nexport default {\n\tname: 'PredefinedStatus',\n\tfilters: {\n\t\tclearAtFilter,\n\t},\n\tprops: {\n\t\tmessageId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user clicks the row\n\t\t */\n\t\tselect() {\n\t\t\tthis.$emit('select')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PredefinedStatus.vue?vue&type=template&id=26621de0&scoped=true&\"\nimport script from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatus.vue?vue&type=style&index=0&id=26621de0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26621de0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"predefined-status\",attrs:{\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.select.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _vm.select.apply(null, arguments)}],\"click\":_vm.select}},[_c('span',{staticClass:\"predefined-status__icon\",attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.icon)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__message\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__clear-at\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm._f(\"clearAtFilter\")(_vm.clearAt))+\"\\n\\t\")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div v-if=\"statusesHaveLoaded\"\n\t\tclass=\"predefined-statuses-list\">\n\t\t<PredefinedStatus v-for=\"status in predefinedStatuses\"\n\t\t\t:key=\"status.id\"\n\t\t\t:message-id=\"status.id\"\n\t\t\t:icon=\"status.icon\"\n\t\t\t:message=\"status.message\"\n\t\t\t:clear-at=\"status.clearAt\"\n\t\t\t@select=\"selectStatus(status)\" />\n\t</div>\n\t<div v-else\n\t\tclass=\"predefined-statuses-list\">\n\t\t<div class=\"icon icon-loading-small\" />\n\t</div>\n</template>\n\n<script>\nimport PredefinedStatus from './PredefinedStatus.vue'\nimport { mapGetters, mapState } from 'vuex'\n\nexport default {\n\tname: 'PredefinedStatusesList',\n\tcomponents: {\n\t\tPredefinedStatus,\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tpredefinedStatuses: state => state.predefinedStatuses.predefinedStatuses,\n\t\t}),\n\t\t...mapGetters(['statusesHaveLoaded']),\n\t},\n\t/**\n\t * Loads all predefined statuses from the server\n\t * when this component is mounted\n\t */\n\tcreated() {\n\t\tthis.$store.dispatch('loadAllPredefinedStatuses')\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user selects a status\n\t\t *\n\t\t * @param {object} status The selected status\n\t\t */\n\t\tselectStatus(status) {\n\t\t\tthis.$emit('select-status', status)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-statuses-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 10px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PredefinedStatusesList.vue?vue&type=template&id=57150604&scoped=true&\"\nimport script from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatusesList.vue?vue&type=style&index=0&id=57150604&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57150604\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.statusesHaveLoaded)?_c('div',{staticClass:\"predefined-statuses-list\"},_vm._l((_vm.predefinedStatuses),function(status){return _c('PredefinedStatus',{key:status.id,attrs:{\"message-id\":status.id,\"icon\":status.icon,\"message\":status.message,\"clear-at\":status.clearAt},on:{\"select\":function($event){return _vm.selectStatus(status)}}})}),1):_c('div',{staticClass:\"predefined-statuses-list\"},[_c('div',{staticClass:\"icon icon-loading-small\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"predefined-status backup-status\"\n\t\ttabindex=\"0\"\n\t\t@keyup.enter=\"select\"\n\t\t@keyup.space=\"select\"\n\t\t@click=\"select\">\n\t\t<span class=\"predefined-status__icon\">\n\t\t\t{{ icon }}\n\t\t</span>\n\t\t<span class=\"predefined-status__message\">\n\t\t\t{{ message }}\n\t\t</span>\n\t\t<span class=\"predefined-status__clear-at\">\n\t\t\t{{ $t('user_status', 'Previously set') }}\n\t\t</span>\n\n\t\t<div class=\"backup-status__reset-button\">\n\t\t\t<NcButton @click=\"select\">\n\t\t\t\t{{ $t('user_status', 'Reset status') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'PreviousStatus',\n\n\tcomponents: {\n\t\tNcButton,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: [String, null],\n\t\t\trequired: true,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user clicks the row\n\t\t */\n\t\tselect() {\n\t\t\tthis.$emit('select')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&:active{\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&::before {\n\t\t\tcontent: ' – ';\n\t\t}\n\t}\n}\n.backup-status {\n\t&__reset-button {\n\t\tjustify-content: flex-end;\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PreviousStatus.vue?vue&type=template&id=ba802d4c&scoped=true&\"\nimport script from \"./PreviousStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PreviousStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PreviousStatus.vue?vue&type=style&index=0&id=ba802d4c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ba802d4c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"predefined-status backup-status\",attrs:{\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.select.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _vm.select.apply(null, arguments)}],\"click\":_vm.select}},[_c('span',{staticClass:\"predefined-status__icon\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.icon)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__message\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__clear-at\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('user_status', 'Previously set'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"backup-status__reset-button\"},[_c('NcButton',{on:{\"click\":_vm.select}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Reset status'))+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"custom-input\"},[_c('NcEmojiPicker',{attrs:{\"container\":\".custom-input\"},on:{\"select\":_vm.setIcon}},[_c('NcButton',{staticClass:\"custom-input__emoji-button\",attrs:{\"type\":\"tertiary\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.visibleIcon)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"custom-input__container\"},[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":\"user_status_message\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'What is your status?'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"id\":\"user_status_message\",\"maxlength\":\"80\",\"disabled\":_vm.disabled,\"placeholder\":_vm.$t('user_status', 'What is your status?'),\"type\":\"text\"},domProps:{\"value\":_vm.message},on:{\"change\":_vm.onChange,\"keyup\":_vm.onKeyup,\"paste\":_vm.onKeyup}})])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"custom-input\">\n\t\t<NcEmojiPicker container=\".custom-input\" @select=\"setIcon\">\n\t\t\t<NcButton class=\"custom-input__emoji-button\" type=\"tertiary\">\n\t\t\t\t{{ visibleIcon }}\n\t\t\t</NcButton>\n\t\t</NcEmojiPicker>\n\t\t<div class=\"custom-input__container\">\n\t\t\t<label class=\"hidden-visually\" for=\"user_status_message\">\n\t\t\t\t{{ t('user_status', 'What is your status?') }}\n\t\t\t</label>\n\t\t\t<input id=\"user_status_message\"\n\t\t\t\tref=\"input\"\n\t\t\t\tmaxlength=\"80\"\n\t\t\t\t:disabled=\"disabled\"\n\t\t\t\t:placeholder=\"$t('user_status', 'What is your status?')\"\n\t\t\t\ttype=\"text\"\n\t\t\t\t:value=\"message\"\n\t\t\t\t@change=\"onChange\"\n\t\t\t\t@keyup=\"onKeyup\"\n\t\t\t\t@paste=\"onKeyup\">\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcEmojiPicker from '@nextcloud/vue/dist/Components/NcEmojiPicker.js'\n\nexport default {\n\tname: 'CustomMessageInput',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcEmojiPicker,\n\t},\n\n\tprops: {\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '😀',\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tdefault: () => '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'change',\n\t\t'submit',\n\t\t'icon-selected',\n\t],\n\n\tcomputed: {\n\t\t/**\n\t\t * Returns the user-set icon or a smiley in case no icon is set\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleIcon() {\n\t\t\treturn this.icon || '😀'\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs.input.focus()\n\t\t},\n\n\t\t/**\n\t\t * Notifies the parent component about a changed input\n\t\t *\n\t\t * @param {Event} event The Change Event\n\t\t */\n\t\tonKeyup(event) {\n\t\t\tthis.$emit('change', event.target.value)\n\t\t},\n\n\t\tonChange(event) {\n\t\t\tthis.$emit('submit', event.target.value)\n\t\t},\n\n\t\tsetIcon(icon) {\n\t\t\tthis.$emit('select-icon', icon)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.custom-input {\n\tdisplay: flex;\n\twidth: 100%;\n\n\t&__emoji-button {\n\t\tmin-height: 36px;\n\t\tpadding: 0;\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-right: none;\n\t\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\n\n\t\t&:hover {\n\t\t\tborder-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t&__container {\n\t\twidth: 100%;\n\n\t\tinput {\n\t\t\twidth: 100%;\n\t\t\tmargin: 0;\n\t\t\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomMessageInput.vue?vue&type=template&id=59f118ca&scoped=true&\"\nimport script from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomMessageInput.vue?vue&type=style&index=0&id=59f118ca&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59f118ca\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"clear-at-select\"},[_c('label',{staticClass:\"clear-at-select__label\",attrs:{\"for\":\"clearStatus\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status after'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"clear-at-select__select\",attrs:{\"input-id\":\"clearStatus\",\"options\":_vm.options,\"value\":_vm.option,\"clearable\":false,\"placement\":\"top\"},on:{\"option:selected\":_vm.select}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @return {object[]}\n */\nconst getAllClearAtOptions = () => {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"clear-at-select\">\n\t\t<label class=\"clear-at-select__label\" for=\"clearStatus\">\n\t\t\t{{ $t('user_status', 'Clear status after') }}\n\t\t</label>\n\t\t<NcSelect input-id=\"clearStatus\"\n\t\t\tclass=\"clear-at-select__select\"\n\t\t\t:options=\"options\"\n\t\t\t:value=\"option\"\n\t\t\t:clearable=\"false\"\n\t\t\tplacement=\"top\"\n\t\t\t@option:selected=\"select\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport { getAllClearAtOptions } from '../services/clearAtOptionsService.js'\nimport { clearAtFilter } from '../filters/clearAtFilter.js'\n\nexport default {\n\tname: 'ClearAtSelect',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tprops: {\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\toptions: getAllClearAtOptions(),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Returns an object of the currently selected option\n\t\t *\n\t\t * @return {object}\n\t\t */\n\t\toption() {\n\t\t\treturn {\n\t\t\t\tclearAt: this.clearAt,\n\t\t\t\tlabel: clearAtFilter(this.clearAt),\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Triggered when the user selects a new option.\n\t\t *\n\t\t * @param {object=} option The new selected option\n\t\t */\n\t\tselect(option) {\n\t\t\tif (!option) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('select-clear-at', option.clearAt)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.clear-at-select {\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\talign-items: center;\n\n\t&__label {\n\t\tmargin-right: 12px;\n\t}\n\n\t&__select {\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ClearAtSelect.vue?vue&type=template&id=bfc4d14a&scoped=true&\"\nimport script from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClearAtSelect.vue?vue&type=style&index=0&id=bfc4d14a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bfc4d14a\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"user-status-online-select\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\tclass=\"user-status-online-select__input\"\n\t\t\ttype=\"radio\"\n\t\t\tname=\"user-status-online\"\n\t\t\t@change=\"onChange\">\n\t\t<label :for=\"id\" class=\"user-status-online-select__label\">\n\t\t\t{{ label }}\n\t\t\t<span :class=\"icon\" aria-hidden=\"true\" role=\"img\" />\n\t\t\t<em class=\"user-status-online-select__subline\">{{ subline }}</em>\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'OnlineStatusSelect',\n\n\tprops: {\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `user-status-online-status-${this.type}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonChange() {\n\t\t\tthis.$emit('select', this.type)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n$icon-size: 24px;\n$label-padding: 8px;\n\n.user-status-online-select {\n\t// Inputs are here for keyboard navigation, they are not visually visible\n\t&__input {\n\t\tposition: absolute;\n\t\ttop: auto;\n\t\tleft: -10000px;\n\t\toverflow: hidden;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t}\n\n\t&__label {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tmargin: $label-padding;\n\t\tpadding: $label-padding;\n\t\tpadding-left: $icon-size + $label-padding * 2;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-background-hover);\n\t\tbackground-position: $label-padding center;\n\t\tbackground-size: $icon-size;\n\n\t\tspan,\n\t\t& {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\ttop: calc(50% - math.div($icon-size, 2));\n\t\t\tleft: $label-padding;\n\t\t\tdisplay: block;\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t}\n\t}\n\n\t&__input:checked + &__label,\n\t&__input:focus + &__label,\n\t&__label:hover {\n\t\tborder-color: var(--color-primary-element);\n\t}\n\n\t&__label:active {\n\t\tborder-color: var(--color-border-dark);\n\t}\n\n\t&__subline {\n\t\tdisplay: block;\n\t\tcolor: var(--color-text-lighter);\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=eaafd0b0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=eaafd0b0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./OnlineStatusSelect.vue?vue&type=template&id=eaafd0b0&scoped=true&\"\nimport script from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OnlineStatusSelect.vue?vue&type=style&index=0&id=eaafd0b0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eaafd0b0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"user-status-online-select\"},[_c('input',{staticClass:\"user-status-online-select__input\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"user-status-online\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onChange}}),_vm._v(\" \"),_c('label',{staticClass:\"user-status-online-select__label\",attrs:{\"for\":_vm.id}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\"),_c('span',{class:_vm.icon,attrs:{\"aria-hidden\":\"true\",\"role\":\"img\"}}),_vm._v(\" \"),_c('em',{staticClass:\"user-status-online-select__subline\"},[_vm._v(_vm._s(_vm.subline))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcModal size=\"normal\"\n\t\t:title=\"$t('user_status', 'Set status')\"\n\t\t@close=\"closeModal\">\n\t\t<div class=\"set-status-modal\">\n\t\t\t<!-- Status selector -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h2>{{ $t('user_status', 'Online status') }}</h2>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__online-status\">\n\t\t\t\t<OnlineStatusSelect v-for=\"status in statuses\"\n\t\t\t\t\t:key=\"status.type\"\n\t\t\t\t\tv-bind=\"status\"\n\t\t\t\t\t:checked=\"status.type === statusType\"\n\t\t\t\t\t@select=\"changeStatus\" />\n\t\t\t</div>\n\n\t\t\t<!-- Status message -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h2>{{ $t('user_status', 'Status message') }}</h2>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__custom-input\">\n\t\t\t\t<CustomMessageInput ref=\"customMessageInput\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\t:message=\"editedMessage\"\n\t\t\t\t\t@change=\"setMessage\"\n\t\t\t\t\t@submit=\"saveStatus\"\n\t\t\t\t\t@select-icon=\"setIcon\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"hasBackupStatus\"\n\t\t\t\tclass=\"set-status-modal__automation-hint\">\n\t\t\t\t{{ $t('user_status', 'Your status was set automatically') }}\n\t\t\t</div>\n\t\t\t<PreviousStatus v-if=\"hasBackupStatus\"\n\t\t\t\t:icon=\"backupIcon\"\n\t\t\t\t:message=\"backupMessage\"\n\t\t\t\t@select=\"revertBackupFromServer\" />\n\t\t\t<PredefinedStatusesList @select-status=\"selectPredefinedMessage\" />\n\t\t\t<ClearAtSelect :clear-at=\"clearAt\"\n\t\t\t\t@select-clear-at=\"setClearAt\" />\n\t\t\t<div class=\"status-buttons\">\n\t\t\t\t<NcButton :wide=\"true\"\n\t\t\t\t\ttype=\"tertiary\"\n\t\t\t\t\t:text=\"$t('user_status', 'Clear status message')\"\n\t\t\t\t\t:disabled=\"isSavingStatus\"\n\t\t\t\t\t@click=\"clearStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Clear status message') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton :wide=\"true\"\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t:text=\"$t('user_status', 'Set status message')\"\n\t\t\t\t\t:disabled=\"isSavingStatus\"\n\t\t\t\t\t@click=\"saveStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Set status message') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport NcModal from '@nextcloud/vue/dist/Components/NcModal.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport { getAllStatusOptions } from '../services/statusOptionsService.js'\nimport OnlineStatusMixin from '../mixins/OnlineStatusMixin.js'\nimport PredefinedStatusesList from './PredefinedStatusesList.vue'\nimport PreviousStatus from './PreviousStatus.vue'\nimport CustomMessageInput from './CustomMessageInput.vue'\nimport ClearAtSelect from './ClearAtSelect.vue'\nimport OnlineStatusSelect from './OnlineStatusSelect.vue'\n\nexport default {\n\tname: 'SetStatusModal',\n\n\tcomponents: {\n\t\tClearAtSelect,\n\t\tCustomMessageInput,\n\t\tNcModal,\n\t\tOnlineStatusSelect,\n\t\tPredefinedStatusesList,\n\t\tPreviousStatus,\n\t\tNcButton,\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tclearAt: null,\n\t\t\teditedMessage: '',\n\t\t\tisSavingStatus: false,\n\t\t\tstatuses: getAllStatusOptions(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmessageId() {\n\t\t\treturn this.$store.state.userStatus.messageId\n\t\t},\n\t\ticon() {\n\t\t\treturn this.$store.state.userStatus.icon\n\t\t},\n\t\tmessage() {\n\t\t\treturn this.$store.state.userStatus.message || ''\n\t\t},\n\t\thasBackupStatus() {\n\t\t\treturn this.messageId && (this.backupIcon || this.backupMessage)\n\t\t},\n\t\tbackupIcon() {\n\t\t\treturn this.$store.state.userBackupStatus.icon || ''\n\t\t},\n\t\tbackupMessage() {\n\t\t\treturn this.$store.state.userBackupStatus.message || ''\n\t\t},\n\n\t\tresetButtonText() {\n\t\t\tif (this.backupIcon && this.backupMessage) {\n\t\t\t\treturn this.$t('user_status', 'Reset status to \"{icon} {message}\"', {\n\t\t\t\t\ticon: this.backupIcon,\n\t\t\t\t\tmessage: this.backupMessage,\n\t\t\t\t})\n\t\t\t} else if (this.backupMessage) {\n\t\t\t\treturn this.$t('user_status', 'Reset status to \"{message}\"', {\n\t\t\t\t\tmessage: this.backupMessage,\n\t\t\t\t})\n\t\t\t} else if (this.backupIcon) {\n\t\t\t\treturn this.$t('user_status', 'Reset status to \"{icon}\"', {\n\t\t\t\t\ticon: this.backupIcon,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Reset status')\n\t\t},\n\t},\n\n\twatch: {\n\t\tmessage: {\n\t\t\timmediate: true,\n\t\t\thandler(newValue) {\n\t\t\t\tthis.editedMessage = newValue\n\t\t\t},\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current status when a user opens dialog\n\t */\n\tmounted() {\n\t\tthis.$store.dispatch('fetchBackupFromServer')\n\n\t\tif (this.$store.state.userStatus.clearAt !== null) {\n\t\t\tthis.clearAt = {\n\t\t\t\ttype: '_time',\n\t\t\t\ttime: this.$store.state.userStatus.clearAt,\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Closes the Set Status modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.$emit('close')\n\t\t},\n\t\t/**\n\t\t * Sets a new icon\n\t\t *\n\t\t * @param {string} icon The new icon\n\t\t */\n\t\tsetIcon(icon) {\n\t\t\tthis.$store.dispatch('setCustomMessage', {\n\t\t\t\tmessage: this.message,\n\t\t\t\ticon,\n\t\t\t\tclearAt: this.clearAt,\n\t\t\t})\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.customMessageInput.focus()\n\t\t\t})\n\t\t},\n\t\t/**\n\t\t * Sets a new message\n\t\t *\n\t\t * @param {string} message The new message\n\t\t */\n\t\tsetMessage(message) {\n\t\t\tthis.editedMessage = message\n\t\t},\n\t\t/**\n\t\t * Sets a new clearAt value\n\t\t *\n\t\t * @param {object} clearAt The new clearAt object\n\t\t */\n\t\tsetClearAt(clearAt) {\n\t\t\tthis.clearAt = clearAt\n\t\t},\n\t\t/**\n\t\t * Sets new icon/message/clearAt based on a predefined message\n\t\t *\n\t\t * @param {object} status The predefined status object\n\t\t */\n\t\tselectPredefinedMessage(status) {\n\t\t\tthis.clearAt = status.clearAt\n\t\t\tthis.$store.dispatch('setPredefinedMessage', {\n\t\t\t\tmessageId: status.id,\n\t\t\t\tclearAt: status.clearAt,\n\t\t\t})\n\t\t},\n\t\t/**\n\t\t * Saves the status and closes the\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync saveStatus() {\n\t\t\tif (this.isSavingStatus) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tif (this.messageId !== undefined && this.messageId !== null) {\n\t\t\t\t\tawait this.$store.dispatch('setPredefinedMessage', {\n\t\t\t\t\t\tmessageId: this.messageId,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('setCustomMessage', {\n\t\t\t\t\t\tmessage: this.editedMessage,\n\t\t\t\t\t\ticon: this.icon,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync clearStatus() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tawait this.$store.dispatch('clearMessage')\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error clearing the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync revertBackupFromServer() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tawait this.$store.dispatch('revertBackupFromServer', {\n\t\t\t\t\tmessageId: this.messageId,\n\t\t\t\t})\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error reverting the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\n.set-status-modal {\n\tpadding: 8px 20px 20px 20px;\n\n\t&__header {\n\t\ttext-align: center;\n\t\tfont-weight: bold;\n\t\tmargin: 15px 0;\n\t}\n\n\t&__online-status {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n\n\t&__custom-input {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&__automation-hint {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.status-buttons {\n\t\tdisplay: flex;\n\t\tpadding: 3px;\n\t\tpadding-left:0;\n\t\tgap: 3px;\n\t}\n}\n\n@media only screen and (max-width: 500px) {\n\t.set-status-modal__online-status {\n\t\tgrid-template-columns: none !important;\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nconst getAllStatusOptions = () => {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t\ticon: 'icon-user-status-online',\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t\ticon: 'icon-user-status-away',\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t\ticon: 'icon-user-status-dnd',\n\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t\ticon: 'icon-user-status-invisible',\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SetStatusModal.vue?vue&type=template&id=09245728&scoped=true&\"\nimport script from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SetStatusModal.vue?vue&type=style&index=0&id=09245728&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"09245728\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","clearAtFilter","clearAt","t","type","time","moment","humanize","momentNow","dateFactory","momentClearAt","diff","name","filters","props","messageId","String","required","icon","message","Object","default","methods","select","$emit","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","on","$event","indexOf","_k","keyCode","key","apply","arguments","_v","_s","_f","components","PredefinedStatus","computed","mapState","predefinedStatuses","state","mapGetters","created","$store","dispatch","selectStatus","status","statusesHaveLoaded","_l","NcButton","$t","NcEmojiPicker","disabled","Boolean","emits","visibleIcon","focus","$refs","input","onKeyup","event","target","value","onChange","setIcon","ref","domProps","NcSelect","data","label","option","checked","subline","concat","class","ClearAtSelect","CustomMessageInput","NcModal","OnlineStatusSelect","PredefinedStatusesList","PreviousStatus","mixins","OnlineStatusMixin","editedMessage","isSavingStatus","statuses","userStatus","hasBackupStatus","backupIcon","backupMessage","userBackupStatus","resetButtonText","watch","immediate","handler","newValue","mounted","closeModal","$nextTick","customMessageInput","setMessage","setClearAt","selectPredefinedMessage","undefined","err","showError","console","debug","_b","statusType","changeStatus","saveStatus","_e","revertBackupFromServer","clearStatus"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/user_status-menu.js b/dist/user_status-menu.js index 326d13e1373..94755c73215 100644 --- a/dist/user_status-menu.js +++ b/dist/user_status-menu.js @@ -1,3 +1,3 @@ /*! For license information please see user_status-menu.js.LICENSE.txt */ -(()=>{var e,s,a,n={17824:(e,s,a)=>{"use strict";var n=a(20144),r=a(45994),i=a(78595),o=a(79753),u=a(79954),d=a(20296),l=a.n(d),c=a(4820),m=a(84387),p=a(25108);const{profileEnabled:g}=(0,u.j)("user_status","profileEnabled",!1),A={name:"UserStatus",components:{SetStatusModal:()=>Promise.all([a.e(7874),a.e(8299)]).then(a.bind(a,47054))},mixins:[m.Z],props:{inline:{type:Boolean,default:!1}},data:()=>({displayName:(0,r.ts)().displayName,heartbeatInterval:null,isAway:!1,isModalOpen:!1,loadingProfilePage:!1,mouseMoveListener:null,profileEnabled:g,setAwayTimeout:null}),computed:{elementTag(){return this.inline?"div":"li"},profilePageLink(){return this.profileEnabled?(0,o.generateUrl)("/u/{userId}",{userId:(0,r.ts)().uid}):null}},mounted(){(0,i.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,i.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),3e5),this.setAwayTimeout=()=>{this.isAway=!0},this.mouseMoveListener=l()((()=>{const t=this.isAway;this.isAway=!1,clearTimeout(this.setAwayTimeout),setTimeout(this.setAwayTimeout,12e4),t&&this._backgroundHeartbeat()}),2e3,!0),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),(0,i.Ld)("user_status:status.updated",this.handleUserStatusUpdated)},beforeDestroy(){(0,i.r1)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,i.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),(0,i.r1)("user_status:status.updated",this.handleUserStatusUpdated)},methods:{handleDisplayNameUpdate(t){this.displayName=t},handleProfileEnabledUpdate(t){this.profileEnabled=t},loadProfilePage(){this.profileEnabled&&(this.loadingProfilePage=!0)},openModal(){this.isModalOpen=!0},closeModal(){this.isModalOpen=!1},async _backgroundHeartbeat(){try{const t=await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/heartbeat?format=json");return(await c.default.put(e,{status:t?"away":"online"})).data.ocs.data})(this.isAway);null!=t&&t.userId?this.$store.dispatch("setStatusFromHeartbeat",t):await this.$store.dispatch("reFetchStatusFromServer")}catch(e){var t;p.debug("Failed sending heartbeat, got: "+(null===(t=e.response)||void 0===t?void 0:t.status))}},handleUserStatusUpdated(t){OC.getCurrentUser().uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},h=A;var v=a(93379),f=a.n(v),b=a(7795),j=a.n(b),y=a(90569),C=a.n(y),_=a(3565),w=a.n(_),k=a(19216),S=a.n(k),x=a(44589),I=a.n(x),U=a(90292),O={};O.styleTagTransform=I(),O.setAttributes=w(),O.insert=C().bind(null,"head"),O.domAPI=j(),O.insertStyleElement=S(),f()(U.Z,O),U.Z&&U.Z.locals&&U.Z.locals;const P=(0,a(51900).Z)(h,(function(){var t=this,e=t._self._c;return e(t.elementTag,{tag:"component"},[e("div",{staticClass:"user-status-menu-item"},[t.inline?t._e():e("a",{staticClass:"user-status-menu-item__header",attrs:{href:t.profilePageLink},on:{click:function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.loadProfilePage.apply(null,arguments)}}},[e("div",{staticClass:"user-status-menu-item__header-content"},[e("div",{staticClass:"user-status-menu-item__header-content-displayname"},[t._v(t._s(t.displayName))]),t._v(" "),t.loadingProfilePage?e("div",{staticClass:"icon-loading-small"}):e("div",{staticClass:"user-status-menu-item__header-content-placeholder"})]),t._v(" "),t.profileEnabled?e("div",[t._v("\n\t\t\t\t"+t._s(t.t("user_status","View profile"))+"\n\t\t\t")]):t._e()]),t._v(" "),e(t.inline?"button":"a",{tag:"toggle",staticClass:"user-status-menu-item__toggle",class:{"user-status-menu-item__toggle--inline":t.inline},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openModal.apply(null,arguments)}}},[e("span",{staticClass:"user-status-menu-item__toggle-icon",class:t.statusIcon,attrs:{"aria-hidden":"true"}}),t._v("\n\t\t\t"+t._s(t.visibleMessage)+"\n\t\t")])],1),t._v(" "),t.isModalOpen?e("SetStatusModal",{on:{close:t.closeModal}}):t._e()],1)}),[],!1,null,"59a5bedd",null).exports;var D=a(20629);const M={state:{predefinedStatuses:[]},mutations:{addPredefinedStatus(t,e){t.predefinedStatuses.push(e)}},getters:{statusesHaveLoaded:t=>t.predefinedStatuses.length>0},actions:{async loadAllPredefinedStatuses(t){let{state:e,commit:s}=t;if(e.predefinedStatuses.length>0)return;const a=await(async()=>{const t=(0,o.generateOcsUrl)("apps/user_status/api/v1/predefined_statuses?format=json");return(await c.default.get(t)).data.ocs.data})();for(const t of a)s("addPredefinedStatus",t)}}};var E=a(64039),B=a(80351),T=a.n(B);const z=t=>{if(null===t)return null;const e=(0,E.n)();if("period"===t.type)return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if("end-of"===t.type)switch(t.time){case"day":case"week":return Number(T()(e).endOf(t.time).format("X"))}return"_time"===t.type?t.time:null},F={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{setStatus(t,e){let{statusType:s}=e;t.status=s,t.statusIsUserDefined=!0},setPredefinedMessage(t,e){let{messageId:s,clearAt:a,message:n,icon:r}=e;t.messageId=s,t.messageIsPredefined=!0,t.message=n,t.icon=r,t.clearAt=a},setCustomMessage(t,e){let{message:s,icon:a,clearAt:n}=e;t.messageId=null,t.messageIsPredefined=!1,t.message=s,t.icon=a,t.clearAt=n},clearMessage(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer(t,e){let{status:s,statusIsUserDefined:a,message:n,icon:r,clearAt:i,messageIsPredefined:o,messageId:u}=e;t.status=s,t.message=n,t.icon=r,void 0!==a&&(t.statusIsUserDefined=a),void 0!==i&&(t.clearAt=i),void 0!==o&&(t.messageIsPredefined=o),void 0!==u&&(t.messageId=u)}},getters:{},actions:{async setStatus(t,e){var s;let{commit:a,state:n}=t,{statusType:u}=e;await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/status");await c.default.put(e,{statusType:t})})(u),a("setStatus",{statusType:u}),(0,i.j8)("user_status:status.updated",{status:n.status,message:n.message,icon:n.icon,clearAt:n.clearAt,userId:null===(s=(0,r.ts)())||void 0===s?void 0:s.uid})},async setStatusFromObject(t,e){let{commit:s,state:a}=t;s("loadStatusFromServer",e)},async setPredefinedMessage(t,e){var s;let{commit:a,rootState:n,state:u}=t,{messageId:d,clearAt:l}=e;const m=z(l);await async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const s=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/predefined?format=json");await c.default.put(s,{messageId:t,clearAt:e})}(d,m);const p=n.predefinedStatuses.predefinedStatuses.find((t=>t.id===d)),{message:g,icon:A}=p;a("setPredefinedMessage",{messageId:d,clearAt:m,message:g,icon:A}),(0,i.j8)("user_status:status.updated",{status:u.status,message:u.message,icon:u.icon,clearAt:u.clearAt,userId:null===(s=(0,r.ts)())||void 0===s?void 0:s.uid})},async setCustomMessage(t,e){var s;let{commit:a,state:n}=t,{message:u,icon:d,clearAt:l}=e;const m=z(l);await async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const a=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/custom?format=json");await c.default.put(a,{message:t,statusIcon:e,clearAt:s})}(u,d,m),a("setCustomMessage",{message:u,icon:d,clearAt:m}),(0,i.j8)("user_status:status.updated",{status:n.status,message:n.message,icon:n.icon,clearAt:n.clearAt,userId:null===(s=(0,r.ts)())||void 0===s?void 0:s.uid})},async clearMessage(t){var e;let{commit:s,state:a}=t;await(async()=>{const t=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message?format=json");await c.default.delete(t)})(),s("clearMessage"),(0,i.j8)("user_status:status.updated",{status:a.status,message:a.message,icon:a.icon,clearAt:a.clearAt,userId:null===(e=(0,r.ts)())||void 0===e?void 0:e.uid})},async reFetchStatusFromServer(t){let{commit:e}=t;e("loadStatusFromServer",await(async()=>{const t=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status");return(await c.default.get(t)).data.ocs.data})())},async setStatusFromHeartbeat(t,e){let{commit:s}=t;s("loadStatusFromServer",e)},loadStatusFromInitialState(t){let{commit:e}=t;e("loadStatusFromServer",(0,u.j)("user_status","status"))}}},L={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{loadBackupStatusFromServer(t,e){let{status:s,statusIsUserDefined:a,message:n,icon:r,clearAt:i,messageIsPredefined:o,messageId:u}=e;t.status=s,t.message=n,t.icon=r,void 0!==a&&(t.statusIsUserDefined=a),void 0!==i&&(t.clearAt=i),void 0!==o&&(t.messageIsPredefined=o),void 0!==u&&(t.messageId=u)}},getters:{},actions:{async fetchBackupFromServer(t){let{commit:e}=t;try{var s;e("loadBackupStatusFromServer",await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/statuses/{userId}",{userId:"_"+t});return(await c.default.get(e)).data.ocs.data})(null===(s=(0,r.ts)())||void 0===s?void 0:s.uid))}catch(t){}},async revertBackupFromServer(t,e){let{commit:s}=t,{messageId:a}=e;const n=await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/revert/{messageId}",{messageId:t});return(await c.default.delete(e)).data.ocs.data})(a);var u;n&&(s("loadBackupStatusFromServer",{}),s("loadStatusFromServer",n),(0,i.j8)("user_status:status.updated",{status:n.status,message:n.message,icon:n.icon,clearAt:n.clearAt,userId:null===(u=(0,r.ts)())||void 0===u?void 0:u.uid}))}}};n.default.use(D.ZP);const $=new D.yh({modules:{predefinedStatuses:M,userStatus:F,userBackupStatus:L},strict:!0});a.nc=btoa((0,r.IH)()),n.default.prototype.t=t,n.default.prototype.$t=t;const N=()=>{const t=document.getElementById("user_status-menu-entry");new n.default({el:t,render:t=>t(P),store:$})};document.getElementById("user_status-menu-entry")?N():(0,i.Ld)("core:user-menu:mounted",N),document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",(t=>new(n.default.extend(P))({propsData:{inline:!0},store:$}).$mount(t)))}))},84387:(t,e,s)=>{"use strict";s.d(e,{Z:()=>i});var a=s(20629),n=s(64024),r=s(25108);const i={computed:{...(0,a.rn)({statusType:t=>t.userStatus.status,statusIsUserDefined:t=>t.userStatus.statusIsUserDefined,customIcon:t=>t.userStatus.icon,customMessage:t=>t.userStatus.message}),visibleMessage(){if(this.customIcon&&this.customMessage)return"".concat(this.customIcon," ").concat(this.customMessage);if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return this.$t("user_status","Online");case"away":return this.$t("user_status","Away");case"dnd":return this.$t("user_status","Do not disturb");case"invisible":return this.$t("user_status","Invisible");case"offline":return this.$t("user_status","Offline")}return this.$t("user_status","Set status")},statusIcon(){switch(this.statusType){case"online":return"icon-user-status-online";case"away":return"icon-user-status-away";case"dnd":return"icon-user-status-dnd";case"invisible":case"offline":return"icon-user-status-invisible"}return""}},methods:{async changeStatus(t){try{await this.$store.dispatch("setStatus",{statusType:t})}catch(t){(0,n.x2)(this.$t("user_status","There was an error saving the new status")),r.debug(t)}}}}},64039:(t,e,s)=>{"use strict";s.d(e,{n:()=>a});const a=()=>new Date},90292:(t,e,s)=>{"use strict";s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".user-status-menu-item__header[data-v-59a5bedd]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-59a5bedd]{cursor:default !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-59a5bedd]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-59a5bedd]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-59a5bedd]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-59a5bedd]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-59a5bedd]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px;vertical-align:middle !important}.user-status-menu-item__toggle--inline[data-v-59a5bedd]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-main-background-blur);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:active,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:hover,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{box-shadow:0 0 0 2px var(--color-main-text) !important}li[data-v-59a5bedd]{list-style-type:none}","",{version:3,sources:["webpack://./apps/user_status/src/UserStatus.vue"],names:[],mappings:"AAEC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gCAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,kDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,sDAAA,CAMJ,oBACC,oBAAA",sourcesContent:["\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t\tvertical-align: middle !important;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-main-background-blur);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n\n"],sourceRoot:""}]);const o=i},46700:(t,e,s)=>{var a={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function n(t){var e=r(t);return s(e)}function r(t){if(!s.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}n.keys=function(){return Object.keys(a)},n.resolve=r,t.exports=n,n.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var s=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}i.m=n,e=[],i.O=(t,s,a,n)=>{if(!s){var r=1/0;for(l=0;l<e.length;l++){s=e[l][0],a=e[l][1],n=e[l][2];for(var o=!0,u=0;u<s.length;u++)(!1&n||r>=n)&&Object.keys(i.O).every((t=>i.O[t](s[u])))?s.splice(u--,1):(o=!1,n<r&&(r=n));if(o){e.splice(l--,1);var d=a();void 0!==d&&(t=d)}}return t}n=n||0;for(var l=e.length;l>0&&e[l-1][2]>n;l--)e[l]=e[l-1];e[l]=[s,a,n]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,s)=>(i.f[s](t,e),e)),[])),i.u=t=>"user-status-modal-"+t+".js?v=6e854834b8343a9b289e",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s={},a="nextcloud:",i.l=(t,e,n,r)=>{if(s[t])s[t].push(e);else{var o,u;if(void 0!==n)for(var d=document.getElementsByTagName("script"),l=0;l<d.length;l++){var c=d[l];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==a+n){o=c;break}}o||(u=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,i.nc&&o.setAttribute("nonce",i.nc),o.setAttribute("data-webpack",a+n),o.src=t),s[t]=[e];var m=(e,a)=>{o.onerror=o.onload=null,clearTimeout(p);var n=s[t];if(delete s[t],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach((t=>t(a))),e)return e(a)},p=setTimeout(m.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=m.bind(null,o.onerror),o.onload=m.bind(null,o.onload),u&&document.head.appendChild(o)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2613,(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var s=e.getElementsByTagName("script");s.length&&(t=s[s.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b=document.baseURI||self.location.href;var t={2613:0};i.f.j=(e,s)=>{var a=i.o(t,e)?t[e]:void 0;if(0!==a)if(a)s.push(a[2]);else{var n=new Promise(((s,n)=>a=t[e]=[s,n]));s.push(a[2]=n);var r=i.p+i.u(e),o=new Error;i.l(r,(s=>{if(i.o(t,e)&&(0!==(a=t[e])&&(t[e]=void 0),a)){var n=s&&("load"===s.type?"missing":s.type),r=s&&s.target&&s.target.src;o.message="Loading chunk "+e+" failed.\n("+n+": "+r+")",o.name="ChunkLoadError",o.type=n,o.request=r,a[1](o)}}),"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,s)=>{var a,n,r=s[0],o=s[1],u=s[2],d=0;if(r.some((e=>0!==t[e]))){for(a in o)i.o(o,a)&&(i.m[a]=o[a]);if(u)var l=u(i)}for(e&&e(s);d<r.length;d++)n=r[d],i.o(t,n)&&t[n]&&t[n][0](),t[n]=0;return i.O(l)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(e.bind(null,0)),s.push=e.bind(null,s.push.bind(s))})(),i.nc=void 0;var o=i.O(void 0,[7874],(()=>i(17824)));o=i.O(o)})(); -//# sourceMappingURL=user_status-menu.js.map?v=bd6ff737dd35a2f565ea
\ No newline at end of file +(()=>{var e,s,a,n={17824:(e,s,a)=>{"use strict";var n=a(20144),r=a(45994),i=a(78595),o=a(79753),u=a(79954),d=a(20296),l=a.n(d),c=a(4820),m=a(84387),p=a(25108);const{profileEnabled:g}=(0,u.j)("user_status","profileEnabled",!1),A={name:"UserStatus",components:{SetStatusModal:()=>Promise.all([a.e(7874),a.e(8299)]).then(a.bind(a,43730))},mixins:[m.Z],props:{inline:{type:Boolean,default:!1}},data:()=>({displayName:(0,r.ts)().displayName,heartbeatInterval:null,isAway:!1,isModalOpen:!1,loadingProfilePage:!1,mouseMoveListener:null,profileEnabled:g,setAwayTimeout:null}),computed:{elementTag(){return this.inline?"div":"li"},profilePageLink(){return this.profileEnabled?(0,o.generateUrl)("/u/{userId}",{userId:(0,r.ts)().uid}):null}},mounted(){(0,i.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,i.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),3e5),this.setAwayTimeout=()=>{this.isAway=!0},this.mouseMoveListener=l()((()=>{const t=this.isAway;this.isAway=!1,clearTimeout(this.setAwayTimeout),setTimeout(this.setAwayTimeout,12e4),t&&this._backgroundHeartbeat()}),2e3,!0),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),(0,i.Ld)("user_status:status.updated",this.handleUserStatusUpdated)},beforeDestroy(){(0,i.r1)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,i.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),(0,i.r1)("user_status:status.updated",this.handleUserStatusUpdated)},methods:{handleDisplayNameUpdate(t){this.displayName=t},handleProfileEnabledUpdate(t){this.profileEnabled=t},loadProfilePage(){this.profileEnabled&&(this.loadingProfilePage=!0)},openModal(){this.isModalOpen=!0},closeModal(){this.isModalOpen=!1},async _backgroundHeartbeat(){try{const t=await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/heartbeat?format=json");return(await c.default.put(e,{status:t?"away":"online"})).data.ocs.data})(this.isAway);null!=t&&t.userId?this.$store.dispatch("setStatusFromHeartbeat",t):await this.$store.dispatch("reFetchStatusFromServer")}catch(e){var t;p.debug("Failed sending heartbeat, got: "+(null===(t=e.response)||void 0===t?void 0:t.status))}},handleUserStatusUpdated(t){OC.getCurrentUser().uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},h=A;var v=a(93379),f=a.n(v),b=a(7795),j=a.n(b),y=a(90569),C=a.n(y),_=a(3565),w=a.n(_),k=a(19216),S=a.n(k),x=a(44589),I=a.n(x),U=a(90292),O={};O.styleTagTransform=I(),O.setAttributes=w(),O.insert=C().bind(null,"head"),O.domAPI=j(),O.insertStyleElement=S(),f()(U.Z,O),U.Z&&U.Z.locals&&U.Z.locals;const P=(0,a(51900).Z)(h,(function(){var t=this,e=t._self._c;return e(t.elementTag,{tag:"component"},[e("div",{staticClass:"user-status-menu-item"},[t.inline?t._e():e("a",{staticClass:"user-status-menu-item__header",attrs:{href:t.profilePageLink},on:{click:function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey?null:t.loadProfilePage.apply(null,arguments)}}},[e("div",{staticClass:"user-status-menu-item__header-content"},[e("div",{staticClass:"user-status-menu-item__header-content-displayname"},[t._v(t._s(t.displayName))]),t._v(" "),t.loadingProfilePage?e("div",{staticClass:"icon-loading-small"}):e("div",{staticClass:"user-status-menu-item__header-content-placeholder"})]),t._v(" "),t.profileEnabled?e("div",[t._v("\n\t\t\t\t"+t._s(t.t("user_status","View profile"))+"\n\t\t\t")]):t._e()]),t._v(" "),e(t.inline?"button":"a",{tag:"toggle",staticClass:"user-status-menu-item__toggle",class:{"user-status-menu-item__toggle--inline":t.inline},attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.openModal.apply(null,arguments)}}},[e("span",{staticClass:"user-status-menu-item__toggle-icon",class:t.statusIcon,attrs:{"aria-hidden":"true"}}),t._v("\n\t\t\t"+t._s(t.visibleMessage)+"\n\t\t")])],1),t._v(" "),t.isModalOpen?e("SetStatusModal",{on:{close:t.closeModal}}):t._e()],1)}),[],!1,null,"59a5bedd",null).exports;var D=a(20629);const M={state:{predefinedStatuses:[]},mutations:{addPredefinedStatus(t,e){t.predefinedStatuses.push(e)}},getters:{statusesHaveLoaded:t=>t.predefinedStatuses.length>0},actions:{async loadAllPredefinedStatuses(t){let{state:e,commit:s}=t;if(e.predefinedStatuses.length>0)return;const a=await(async()=>{const t=(0,o.generateOcsUrl)("apps/user_status/api/v1/predefined_statuses?format=json");return(await c.default.get(t)).data.ocs.data})();for(const t of a)s("addPredefinedStatus",t)}}};var E=a(64039),B=a(80351),T=a.n(B);const z=t=>{if(null===t)return null;const e=(0,E.n)();if("period"===t.type)return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if("end-of"===t.type)switch(t.time){case"day":case"week":return Number(T()(e).endOf(t.time).format("X"))}return"_time"===t.type?t.time:null},F={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{setStatus(t,e){let{statusType:s}=e;t.status=s,t.statusIsUserDefined=!0},setPredefinedMessage(t,e){let{messageId:s,clearAt:a,message:n,icon:r}=e;t.messageId=s,t.messageIsPredefined=!0,t.message=n,t.icon=r,t.clearAt=a},setCustomMessage(t,e){let{message:s,icon:a,clearAt:n}=e;t.messageId=null,t.messageIsPredefined=!1,t.message=s,t.icon=a,t.clearAt=n},clearMessage(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer(t,e){let{status:s,statusIsUserDefined:a,message:n,icon:r,clearAt:i,messageIsPredefined:o,messageId:u}=e;t.status=s,t.message=n,t.icon=r,void 0!==a&&(t.statusIsUserDefined=a),void 0!==i&&(t.clearAt=i),void 0!==o&&(t.messageIsPredefined=o),void 0!==u&&(t.messageId=u)}},getters:{},actions:{async setStatus(t,e){var s;let{commit:a,state:n}=t,{statusType:u}=e;await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/status");await c.default.put(e,{statusType:t})})(u),a("setStatus",{statusType:u}),(0,i.j8)("user_status:status.updated",{status:n.status,message:n.message,icon:n.icon,clearAt:n.clearAt,userId:null===(s=(0,r.ts)())||void 0===s?void 0:s.uid})},async setStatusFromObject(t,e){let{commit:s,state:a}=t;s("loadStatusFromServer",e)},async setPredefinedMessage(t,e){var s;let{commit:a,rootState:n,state:u}=t,{messageId:d,clearAt:l}=e;const m=z(l);await async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const s=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/predefined?format=json");await c.default.put(s,{messageId:t,clearAt:e})}(d,m);const p=n.predefinedStatuses.predefinedStatuses.find((t=>t.id===d)),{message:g,icon:A}=p;a("setPredefinedMessage",{messageId:d,clearAt:m,message:g,icon:A}),(0,i.j8)("user_status:status.updated",{status:u.status,message:u.message,icon:u.icon,clearAt:u.clearAt,userId:null===(s=(0,r.ts)())||void 0===s?void 0:s.uid})},async setCustomMessage(t,e){var s;let{commit:a,state:n}=t,{message:u,icon:d,clearAt:l}=e;const m=z(l);await async function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const a=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message/custom?format=json");await c.default.put(a,{message:t,statusIcon:e,clearAt:s})}(u,d,m),a("setCustomMessage",{message:u,icon:d,clearAt:m}),(0,i.j8)("user_status:status.updated",{status:n.status,message:n.message,icon:n.icon,clearAt:n.clearAt,userId:null===(s=(0,r.ts)())||void 0===s?void 0:s.uid})},async clearMessage(t){var e;let{commit:s,state:a}=t;await(async()=>{const t=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/message?format=json");await c.default.delete(t)})(),s("clearMessage"),(0,i.j8)("user_status:status.updated",{status:a.status,message:a.message,icon:a.icon,clearAt:a.clearAt,userId:null===(e=(0,r.ts)())||void 0===e?void 0:e.uid})},async reFetchStatusFromServer(t){let{commit:e}=t;e("loadStatusFromServer",await(async()=>{const t=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status");return(await c.default.get(t)).data.ocs.data})())},async setStatusFromHeartbeat(t,e){let{commit:s}=t;s("loadStatusFromServer",e)},loadStatusFromInitialState(t){let{commit:e}=t;e("loadStatusFromServer",(0,u.j)("user_status","status"))}}},L={state:{status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null},mutations:{loadBackupStatusFromServer(t,e){let{status:s,statusIsUserDefined:a,message:n,icon:r,clearAt:i,messageIsPredefined:o,messageId:u}=e;t.status=s,t.message=n,t.icon=r,void 0!==a&&(t.statusIsUserDefined=a),void 0!==i&&(t.clearAt=i),void 0!==o&&(t.messageIsPredefined=o),void 0!==u&&(t.messageId=u)}},getters:{},actions:{async fetchBackupFromServer(t){let{commit:e}=t;try{var s;e("loadBackupStatusFromServer",await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/statuses/{userId}",{userId:"_"+t});return(await c.default.get(e)).data.ocs.data})(null===(s=(0,r.ts)())||void 0===s?void 0:s.uid))}catch(t){}},async revertBackupFromServer(t,e){let{commit:s}=t,{messageId:a}=e;const n=await(async t=>{const e=(0,o.generateOcsUrl)("apps/user_status/api/v1/user_status/revert/{messageId}",{messageId:t});return(await c.default.delete(e)).data.ocs.data})(a);var u;n&&(s("loadBackupStatusFromServer",{}),s("loadStatusFromServer",n),(0,i.j8)("user_status:status.updated",{status:n.status,message:n.message,icon:n.icon,clearAt:n.clearAt,userId:null===(u=(0,r.ts)())||void 0===u?void 0:u.uid}))}}};n.default.use(D.ZP);const $=new D.yh({modules:{predefinedStatuses:M,userStatus:F,userBackupStatus:L},strict:!0});a.nc=btoa((0,r.IH)()),n.default.prototype.t=t,n.default.prototype.$t=t;const N=()=>{const t=document.getElementById("user_status-menu-entry");new n.default({el:t,render:t=>t(P),store:$})};document.getElementById("user_status-menu-entry")?N():(0,i.Ld)("core:user-menu:mounted",N),document.addEventListener("DOMContentLoaded",(function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",(t=>new(n.default.extend(P))({propsData:{inline:!0},store:$}).$mount(t)))}))},84387:(t,e,s)=>{"use strict";s.d(e,{Z:()=>i});var a=s(20629),n=s(64024),r=s(25108);const i={computed:{...(0,a.rn)({statusType:t=>t.userStatus.status,statusIsUserDefined:t=>t.userStatus.statusIsUserDefined,customIcon:t=>t.userStatus.icon,customMessage:t=>t.userStatus.message}),visibleMessage(){if(this.customIcon&&this.customMessage)return"".concat(this.customIcon," ").concat(this.customMessage);if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return this.$t("user_status","Online");case"away":return this.$t("user_status","Away");case"dnd":return this.$t("user_status","Do not disturb");case"invisible":return this.$t("user_status","Invisible");case"offline":return this.$t("user_status","Offline")}return this.$t("user_status","Set status")},statusIcon(){switch(this.statusType){case"online":return"icon-user-status-online";case"away":return"icon-user-status-away";case"dnd":return"icon-user-status-dnd";case"invisible":case"offline":return"icon-user-status-invisible"}return""}},methods:{async changeStatus(t){try{await this.$store.dispatch("setStatus",{statusType:t})}catch(t){(0,n.x2)(this.$t("user_status","There was an error saving the new status")),r.debug(t)}}}}},64039:(t,e,s)=>{"use strict";s.d(e,{n:()=>a});const a=()=>new Date},90292:(t,e,s)=>{"use strict";s.d(e,{Z:()=>o});var a=s(87537),n=s.n(a),r=s(23645),i=s.n(r)()(n());i.push([t.id,".user-status-menu-item__header[data-v-59a5bedd]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-59a5bedd]{cursor:default !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-59a5bedd]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-59a5bedd]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-59a5bedd]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-59a5bedd]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-59a5bedd]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px;vertical-align:middle !important}.user-status-menu-item__toggle--inline[data-v-59a5bedd]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-main-background-blur);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:active,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:hover,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{box-shadow:0 0 0 2px var(--color-main-text) !important}li[data-v-59a5bedd]{list-style-type:none}","",{version:3,sources:["webpack://./apps/user_status/src/UserStatus.vue"],names:[],mappings:"AAEC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gCAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,kDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,sDAAA,CAMJ,oBACC,oBAAA",sourcesContent:["\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t\tvertical-align: middle !important;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-main-background-blur);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n\n"],sourceRoot:""}]);const o=i},46700:(t,e,s)=>{var a={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function n(t){var e=r(t);return s(e)}function r(t){if(!s.o(a,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return a[t]}n.keys=function(){return Object.keys(a)},n.resolve=r,t.exports=n,n.id=46700}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var s=r[t]={id:t,loaded:!1,exports:{}};return n[t].call(s.exports,s,s.exports,i),s.loaded=!0,s.exports}i.m=n,e=[],i.O=(t,s,a,n)=>{if(!s){var r=1/0;for(l=0;l<e.length;l++){s=e[l][0],a=e[l][1],n=e[l][2];for(var o=!0,u=0;u<s.length;u++)(!1&n||r>=n)&&Object.keys(i.O).every((t=>i.O[t](s[u])))?s.splice(u--,1):(o=!1,n<r&&(r=n));if(o){e.splice(l--,1);var d=a();void 0!==d&&(t=d)}}return t}n=n||0;for(var l=e.length;l>0&&e[l-1][2]>n;l--)e[l]=e[l-1];e[l]=[s,a,n]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,s)=>(i.f[s](t,e),e)),[])),i.u=t=>"user-status-modal-"+t+".js?v=1aa6f08709a7157ce48a",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s={},a="nextcloud:",i.l=(t,e,n,r)=>{if(s[t])s[t].push(e);else{var o,u;if(void 0!==n)for(var d=document.getElementsByTagName("script"),l=0;l<d.length;l++){var c=d[l];if(c.getAttribute("src")==t||c.getAttribute("data-webpack")==a+n){o=c;break}}o||(u=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,i.nc&&o.setAttribute("nonce",i.nc),o.setAttribute("data-webpack",a+n),o.src=t),s[t]=[e];var m=(e,a)=>{o.onerror=o.onload=null,clearTimeout(p);var n=s[t];if(delete s[t],o.parentNode&&o.parentNode.removeChild(o),n&&n.forEach((t=>t(a))),e)return e(a)},p=setTimeout(m.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=m.bind(null,o.onerror),o.onload=m.bind(null,o.onload),u&&document.head.appendChild(o)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2613,(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var s=e.getElementsByTagName("script");s.length&&(t=s[s.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b=document.baseURI||self.location.href;var t={2613:0};i.f.j=(e,s)=>{var a=i.o(t,e)?t[e]:void 0;if(0!==a)if(a)s.push(a[2]);else{var n=new Promise(((s,n)=>a=t[e]=[s,n]));s.push(a[2]=n);var r=i.p+i.u(e),o=new Error;i.l(r,(s=>{if(i.o(t,e)&&(0!==(a=t[e])&&(t[e]=void 0),a)){var n=s&&("load"===s.type?"missing":s.type),r=s&&s.target&&s.target.src;o.message="Loading chunk "+e+" failed.\n("+n+": "+r+")",o.name="ChunkLoadError",o.type=n,o.request=r,a[1](o)}}),"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,s)=>{var a,n,r=s[0],o=s[1],u=s[2],d=0;if(r.some((e=>0!==t[e]))){for(a in o)i.o(o,a)&&(i.m[a]=o[a]);if(u)var l=u(i)}for(e&&e(s);d<r.length;d++)n=r[d],i.o(t,n)&&t[n]&&t[n][0](),t[n]=0;return i.O(l)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(e.bind(null,0)),s.push=e.bind(null,s.push.bind(s))})(),i.nc=void 0;var o=i.O(void 0,[7874],(()=>i(17824)));o=i.O(o)})(); +//# sourceMappingURL=user_status-menu.js.map?v=efbefc52d4b12f95d7f0
\ No newline at end of file diff --git a/dist/user_status-menu.js.map b/dist/user_status-menu.js.map index f3bd0e64c73..b647246c605 100644 --- a/dist/user_status-menu.js.map +++ b/dist/user_status-menu.js.map @@ -1 +1 @@ -{"version":3,"file":"user_status-menu.js?v=bd6ff737dd35a2f565ea","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/user_status/src/UserStatus.vue","webpack:///nextcloud/apps/user_status/src/services/heartbeatService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?7c59","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?d74a","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?e2b3","webpack:///nextcloud/apps/user_status/src/services/predefinedStatusService.js","webpack:///nextcloud/apps/user_status/src/store/predefinedStatuses.js","webpack:///nextcloud/apps/user_status/src/services/clearAtService.js","webpack:///nextcloud/apps/user_status/src/store/userStatus.js","webpack:///nextcloud/apps/user_status/src/services/statusService.js","webpack:///nextcloud/apps/user_status/src/store/userBackupStatus.js","webpack:///nextcloud/apps/user_status/src/store/index.js","webpack:///nextcloud/apps/user_status/src/menu.js","webpack:///nextcloud/apps/user_status/src/mixins/OnlineStatusMixin.js","webpack:///nextcloud/apps/user_status/src/services/dateService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<component :is=\"elementTag\">\n\t\t<div class=\"user-status-menu-item\">\n\t\t\t<!-- Username display -->\n\t\t\t<a v-if=\"!inline\"\n\t\t\t\tclass=\"user-status-menu-item__header\"\n\t\t\t\t:href=\"profilePageLink\"\n\t\t\t\t@click.exact=\"loadProfilePage\">\n\t\t\t\t<div class=\"user-status-menu-item__header-content\">\n\t\t\t\t\t<div class=\"user-status-menu-item__header-content-displayname\">{{ displayName }}</div>\n\t\t\t\t\t<div v-if=\"!loadingProfilePage\" class=\"user-status-menu-item__header-content-placeholder\" />\n\t\t\t\t\t<div v-else class=\"icon-loading-small\" />\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"profileEnabled\">\n\t\t\t\t\t{{ t('user_status', 'View profile') }}\n\t\t\t\t</div>\n\t\t\t</a>\n\n\t\t\t<!-- Status modal toggle -->\n\t\t\t<toggle :is=\"inline ? 'button' : 'a'\"\n\t\t\t\t:class=\"{'user-status-menu-item__toggle--inline': inline}\"\n\t\t\t\tclass=\"user-status-menu-item__toggle\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent.stop=\"openModal\">\n\t\t\t\t<span aria-hidden=\"true\" :class=\"statusIcon\" class=\"user-status-menu-item__toggle-icon\" />\n\t\t\t\t{{ visibleMessage }}\n\t\t\t</toggle>\n\t\t</div>\n\n\t\t<!-- Status management modal -->\n\t\t<SetStatusModal v-if=\"isModalOpen\"\n\t\t\t@close=\"closeModal\" />\n\t</component>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { sendHeartbeat } from './services/heartbeatService.js'\nimport OnlineStatusMixin from './mixins/OnlineStatusMixin.js'\n\nconst { profileEnabled } = loadState('user_status', 'profileEnabled', false)\n\nexport default {\n\tname: 'UserStatus',\n\n\tcomponents: {\n\t\tSetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal.vue'),\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\theartbeatInterval: null,\n\t\t\tisAway: false,\n\t\t\tisModalOpen: false,\n\t\t\tloadingProfilePage: false,\n\t\t\tmouseMoveListener: null,\n\t\t\tprofileEnabled,\n\t\t\tsetAwayTimeout: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\telementTag() {\n\t\t\treturn this.inline ? 'div' : 'li'\n\t\t},\n\t\t/**\n\t\t * The profile page link\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event for styling\n\t\t\treturn null\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current user's status from initial state\n\t * and stores it in Vuex\n\t */\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\n\t\tthis.$store.dispatch('loadStatusFromInitialState')\n\n\t\tif (OC.config.session_keepalive) {\n\t\t\t// Send the latest status to the server every 5 minutes\n\t\t\tthis.heartbeatInterval = setInterval(this._backgroundHeartbeat.bind(this), 1000 * 60 * 5)\n\t\t\tthis.setAwayTimeout = () => {\n\t\t\t\tthis.isAway = true\n\t\t\t}\n\t\t\t// Catch mouse movements, but debounce to once every 30 seconds\n\t\t\tthis.mouseMoveListener = debounce(() => {\n\t\t\t\tconst wasAway = this.isAway\n\t\t\t\tthis.isAway = false\n\t\t\t\t// Reset the two minute counter\n\t\t\t\tclearTimeout(this.setAwayTimeout)\n\t\t\t\t// If the user did not move the mouse within two minutes,\n\t\t\t\t// mark them as away\n\t\t\t\tsetTimeout(this.setAwayTimeout, 1000 * 60 * 2)\n\n\t\t\t\tif (wasAway) {\n\t\t\t\t\tthis._backgroundHeartbeat()\n\t\t\t\t}\n\t\t\t}, 1000 * 2, true)\n\t\t\twindow.addEventListener('mousemove', this.mouseMoveListener, {\n\t\t\t\tcapture: true,\n\t\t\t\tpassive: true,\n\t\t\t})\n\n\t\t\tthis._backgroundHeartbeat()\n\t\t}\n\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\t/**\n\t * Some housekeeping before destroying the component\n\t */\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\twindow.removeEventListener('mouseMove', this.mouseMoveListener)\n\t\tclearInterval(this.heartbeatInterval)\n\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\n\t\tloadProfilePage() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\tthis.loadingProfilePage = true\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Opens the modal to set a custom status\n\t\t */\n\t\topenModal() {\n\t\t\tthis.isModalOpen = true\n\t\t},\n\t\t/**\n\t\t * Closes the modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.isModalOpen = false\n\t\t},\n\n\t\t/**\n\t\t * Sends the status heartbeat to the server\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t * @private\n\t\t */\n\t\tasync _backgroundHeartbeat() {\n\t\t\ttry {\n\t\t\t\tconst status = await sendHeartbeat(this.isAway)\n\t\t\t\tif (status?.userId) {\n\t\t\t\t\tthis.$store.dispatch('setStatusFromHeartbeat', status)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('reFetchStatusFromServer')\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.debug('Failed sending heartbeat, got: ' + error.response?.status)\n\t\t\t}\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (OC.getCurrentUser().uid === state.userId) {\n\t\t\t\tthis.$store.dispatch('setStatusFromObject', {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t\tvertical-align: middle !important;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-main-background-blur);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n\n</style>\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise<void>}\n */\nconst sendHeartbeat = async (isAway) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/heartbeat?format=json')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data.ocs.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserStatus.vue?vue&type=template&id=59a5bedd&scoped=true&\"\nimport script from \"./UserStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./UserStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59a5bedd\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.elementTag,{tag:\"component\"},[_c('div',{staticClass:\"user-status-menu-item\"},[(!_vm.inline)?_c('a',{staticClass:\"user-status-menu-item__header\",attrs:{\"href\":_vm.profilePageLink},on:{\"click\":function($event){if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.loadProfilePage.apply(null, arguments)}}},[_c('div',{staticClass:\"user-status-menu-item__header-content\"},[_c('div',{staticClass:\"user-status-menu-item__header-content-displayname\"},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),(!_vm.loadingProfilePage)?_c('div',{staticClass:\"user-status-menu-item__header-content-placeholder\"}):_c('div',{staticClass:\"icon-loading-small\"})]),_vm._v(\" \"),(_vm.profileEnabled)?_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'View profile'))+\"\\n\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.inline ? 'button' : 'a',{tag:\"toggle\",staticClass:\"user-status-menu-item__toggle\",class:{'user-status-menu-item__toggle--inline': _vm.inline},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openModal.apply(null, arguments)}}},[_c('span',{staticClass:\"user-status-menu-item__toggle-icon\",class:_vm.statusIcon,attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.visibleMessage)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.isModalOpen)?_c('SetStatusModal',{on:{\"close\":_vm.closeModal}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise<void>}\n */\nconst fetchAllPredefinedStatuses = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'\n\nconst state = {\n\tpredefinedStatuses: [],\n}\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses.push(status)\n\t},\n}\n\nconst getters = {\n\tstatusesHaveLoaded(state) {\n\t\treturn state.predefinedStatuses.length > 0\n\t},\n}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tdateFactory,\n} from './dateService.js'\nimport moment from '@nextcloud/moment'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nconst getTimestampForClearAt = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\tcase 'week':\n\t\t\treturn Number(moment(date).endOf(clearAt.time).format('X'))\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\nexport {\n\tgetTimestampForClearAt,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetPredefinedMessage,\n\tsetCustomMessage,\n\tclearMessage,\n} from '../services/statusService.js'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getTimestampForClearAt } from '../services/clearAtService.js'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise<void>}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromObject({ commit, state }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise<void>}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise<object>}\n */\nconst fetchCurrentStatus = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the current user-status\n *\n * @param {string} userId\n * @return {Promise<object>}\n */\nconst fetchBackupStatus = async (userId) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId: '_' + userId })\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise<void>}\n */\nconst setStatus = async (statusType) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setPredefinedMessage = async (messageId, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setCustomMessage = async (message, statusIcon = null, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise<void>}\n */\nconst clearMessage = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\n/**\n * Revert the automated status\n *\n * @param {string} messageId\n * @return {Promise<object>}\n */\nconst revertToBackupStatus = async (messageId) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/revert/{messageId}', { messageId })\n\tconst response = await HttpClient.delete(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchCurrentStatus,\n\tfetchBackupStatus,\n\tsetStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tclearMessage,\n\trevertToBackupStatus,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n * @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com>\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tfetchBackupStatus,\n\trevertToBackupStatus,\n} from '../services/statusService.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadBackupStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync fetchBackupFromServer({ commit }) {\n\t\ttry {\n\t\t\tconst status = await fetchBackupStatus(getCurrentUser()?.uid)\n\t\t\tcommit('loadBackupStatusFromServer', status)\n\t\t} catch (e) {\n\t\t\t// Ignore missing user backup status\n\t\t}\n\t},\n\n\tasync revertBackupFromServer({ commit }, { messageId }) {\n\t\tconst status = await revertToBackupStatus(messageId)\n\t\tif (status) {\n\t\t\tcommit('loadBackupStatusFromServer', {})\n\t\t\tcommit('loadStatusFromServer', status)\n\t\t\temit('user_status:status.updated', {\n\t\t\t\tstatus: status.status,\n\t\t\t\tmessage: status.message,\n\t\t\t\ticon: status.icon,\n\t\t\t\tclearAt: status.clearAt,\n\t\t\t\tuserId: getCurrentUser()?.uid,\n\t\t\t})\n\t\t}\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses.js'\nimport userStatus from './userStatus.js'\nimport userBackupStatus from './userBackupStatus.js'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t\tuserBackupStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport UserStatus from './UserStatus.vue'\n\nimport store from './store/index.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\nVue.prototype.$t = t\n\nconst mountPoint = document.getElementById('user_status-menu-entry')\n\nconst mountMenuEntry = () => {\n\tconst mountPoint = document.getElementById('user_status-menu-entry')\n\t// eslint-disable-next-line no-new\n\tnew Vue({\n\t\tel: mountPoint,\n\t\trender: h => h(UserStatus),\n\t\tstore,\n\t})\n}\n\nif (mountPoint) {\n\tmountMenuEntry()\n} else {\n\tsubscribe('core:user-menu:mounted', mountMenuEntry)\n}\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tconst Dashboard = Vue.extend(UserStatus)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t\tstore,\n\t\t}).$mount(el)\n\t})\n})\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { mapState } from 'vuex'\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: state => state.userStatus.status,\n\t\t\tstatusIsUserDefined: state => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: state => state.userStatus.icon,\n\t\t\tcustomMessage: state => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\tcase 'online':\n\t\t\t\t\treturn this.$t('user_status', 'Online')\n\n\t\t\t\tcase 'away':\n\t\t\t\t\treturn this.$t('user_status', 'Away')\n\n\t\t\t\tcase 'dnd':\n\t\t\t\t\treturn this.$t('user_status', 'Do not disturb')\n\n\t\t\t\tcase 'invisible':\n\t\t\t\t\treturn this.$t('user_status', 'Invisible')\n\n\t\t\t\tcase 'offline':\n\t\t\t\t\treturn this.$t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Set status')\n\t\t},\n\n\t\t/**\n\t\t * The status indicator icon\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tstatusIcon() {\n\t\t\tswitch (this.statusType) {\n\t\t\tcase 'online':\n\t\t\t\treturn 'icon-user-status-online'\n\n\t\t\tcase 'away':\n\t\t\t\treturn 'icon-user-status-away'\n\n\t\t\tcase 'dnd':\n\t\t\t\treturn 'icon-user-status-dnd'\n\n\t\t\tcase 'invisible':\n\t\t\tcase 'offline':\n\t\t\t\treturn 'icon-user-status-invisible'\n\t\t\t}\n\n\t\t\treturn ''\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the new status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst dateFactory = () => {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-status-menu-item__header[data-v-59a5bedd]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-59a5bedd]{cursor:default !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-59a5bedd]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-59a5bedd]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-59a5bedd]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-59a5bedd]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-59a5bedd]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px;vertical-align:middle !important}.user-status-menu-item__toggle--inline[data-v-59a5bedd]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-main-background-blur);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:active,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:hover,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{box-shadow:0 0 0 2px var(--color-main-text) !important}li[data-v-59a5bedd]{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/UserStatus.vue\"],\"names\":[],\"mappings\":\"AAEC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gCAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,kDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,sDAAA,CAMJ,oBACC,oBAAA\",\"sourcesContent\":[\"\\n.user-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: flex !important;\\n\\t\\tflex-direction: column !important;\\n\\t\\twidth: auto !important;\\n\\t\\theight: 44px * 1.5 !important;\\n\\t\\tpadding: 10px 12px 5px 12px !important;\\n\\t\\talign-items: flex-start !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\n\\t\\t&:not([href]) {\\n\\t\\t\\theight: var(--header-menu-item-height) !important;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tcursor: default !important;\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\tcursor: default !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-content {\\n\\t\\t\\tdisplay: inline-flex !important;\\n\\t\\t\\tfont-weight: bold !important;\\n\\t\\t\\tgap: 0 10px !important;\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t&-displayname {\\n\\t\\t\\t\\twidth: auto;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-placeholder {\\n\\t\\t\\t\\twidth: 16px !important;\\n\\t\\t\\t\\theight: 24px !important;\\n\\t\\t\\t\\tmargin-right: 10px !important;\\n\\t\\t\\t\\tvisibility: hidden !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__toggle {\\n\\t\\t&-icon {\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t\\tvertical-align: middle !important;\\n\\t\\t}\\n\\n\\t\\t// In dashboard\\n\\t\\t&--inline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\tmin-width: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\t\\tfont-size: inherit;\\n\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t-webkit-backdrop-filter: var(--background-blur);\\n\\t\\t\\tbackdrop-filter: var(--background-blur);\\n\\n\\t\\t\\t&:active,\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t}\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + \"user-status-modal\" + \"-\" + chunkId + \".js?v=\" + \"6e854834b8343a9b289e\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2613;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2613: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(17824)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","profileEnabled","loadState","name","components","SetStatusModal","mixins","OnlineStatusMixin","props","inline","type","Boolean","default","data","displayName","getCurrentUser","heartbeatInterval","isAway","isModalOpen","loadingProfilePage","mouseMoveListener","setAwayTimeout","computed","elementTag","profilePageLink","generateUrl","userId","uid","mounted","subscribe","handleDisplayNameUpdate","handleProfileEnabledUpdate","$store","dispatch","OC","config","session_keepalive","setInterval","_backgroundHeartbeat","bind","debounce","wasAway","clearTimeout","setTimeout","window","addEventListener","capture","passive","handleUserStatusUpdated","beforeDestroy","unsubscribe","removeEventListener","clearInterval","methods","loadProfilePage","openModal","closeModal","status","async","url","generateOcsUrl","HttpClient","ocs","sendHeartbeat","error","_error$response","console","debug","response","state","icon","message","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","tag","staticClass","_e","attrs","on","$event","ctrlKey","shiftKey","altKey","metaKey","apply","arguments","_v","_s","t","class","preventDefault","stopPropagation","statusIcon","visibleMessage","predefinedStatuses","mutations","addPredefinedStatus","push","getters","statusesHaveLoaded","length","actions","_ref","commit","statuses","fetchAllPredefinedStatuses","getTimestampForClearAt","clearAt","date","dateFactory","setSeconds","getSeconds","time","Math","floor","getTime","Number","moment","endOf","format","statusIsUserDefined","messageIsPredefined","messageId","setStatus","statusType","setPredefinedMessage","_ref2","setCustomMessage","_ref3","clearMessage","loadStatusFromServer","_ref4","_ref5","_ref6","_getCurrentUser","emit","_ref7","_ref8","_ref9","_getCurrentUser2","rootState","resolvedClearAt","undefined","find","id","_ref10","_ref11","_getCurrentUser3","_ref12","_getCurrentUser4","_ref13","fetchCurrentStatus","_ref14","loadStatusFromInitialState","_ref15","loadBackupStatusFromServer","fetchBackupStatus","e","revertToBackupStatus","Vue","Vuex","Store","modules","userStatus","userBackupStatus","strict","__webpack_nonce__","btoa","getRequestToken","mountMenuEntry","mountPoint","document","getElementById","el","render","h","UserStatus","store","OCA","Dashboard","registerStatus","propsData","$mount","mapState","customIcon","customMessage","concat","$t","err","showError","Date","___CSS_LOADER_EXPORT___","module","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","Object","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","forEach","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"user_status-menu.js?v=efbefc52d4b12f95d7f0","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/user_status/src/UserStatus.vue","webpack:///nextcloud/apps/user_status/src/services/heartbeatService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?7c59","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?d74a","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?e2b3","webpack:///nextcloud/apps/user_status/src/services/predefinedStatusService.js","webpack:///nextcloud/apps/user_status/src/store/predefinedStatuses.js","webpack:///nextcloud/apps/user_status/src/services/clearAtService.js","webpack:///nextcloud/apps/user_status/src/store/userStatus.js","webpack:///nextcloud/apps/user_status/src/services/statusService.js","webpack:///nextcloud/apps/user_status/src/store/userBackupStatus.js","webpack:///nextcloud/apps/user_status/src/store/index.js","webpack:///nextcloud/apps/user_status/src/menu.js","webpack:///nextcloud/apps/user_status/src/mixins/OnlineStatusMixin.js","webpack:///nextcloud/apps/user_status/src/services/dateService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<component :is=\"elementTag\">\n\t\t<div class=\"user-status-menu-item\">\n\t\t\t<!-- Username display -->\n\t\t\t<a v-if=\"!inline\"\n\t\t\t\tclass=\"user-status-menu-item__header\"\n\t\t\t\t:href=\"profilePageLink\"\n\t\t\t\t@click.exact=\"loadProfilePage\">\n\t\t\t\t<div class=\"user-status-menu-item__header-content\">\n\t\t\t\t\t<div class=\"user-status-menu-item__header-content-displayname\">{{ displayName }}</div>\n\t\t\t\t\t<div v-if=\"!loadingProfilePage\" class=\"user-status-menu-item__header-content-placeholder\" />\n\t\t\t\t\t<div v-else class=\"icon-loading-small\" />\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"profileEnabled\">\n\t\t\t\t\t{{ t('user_status', 'View profile') }}\n\t\t\t\t</div>\n\t\t\t</a>\n\n\t\t\t<!-- Status modal toggle -->\n\t\t\t<toggle :is=\"inline ? 'button' : 'a'\"\n\t\t\t\t:class=\"{'user-status-menu-item__toggle--inline': inline}\"\n\t\t\t\tclass=\"user-status-menu-item__toggle\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent.stop=\"openModal\">\n\t\t\t\t<span aria-hidden=\"true\" :class=\"statusIcon\" class=\"user-status-menu-item__toggle-icon\" />\n\t\t\t\t{{ visibleMessage }}\n\t\t\t</toggle>\n\t\t</div>\n\n\t\t<!-- Status management modal -->\n\t\t<SetStatusModal v-if=\"isModalOpen\"\n\t\t\t@close=\"closeModal\" />\n\t</component>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport debounce from 'debounce'\n\nimport { sendHeartbeat } from './services/heartbeatService.js'\nimport OnlineStatusMixin from './mixins/OnlineStatusMixin.js'\n\nconst { profileEnabled } = loadState('user_status', 'profileEnabled', false)\n\nexport default {\n\tname: 'UserStatus',\n\n\tcomponents: {\n\t\tSetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal.vue'),\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tprops: {\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\theartbeatInterval: null,\n\t\t\tisAway: false,\n\t\t\tisModalOpen: false,\n\t\t\tloadingProfilePage: false,\n\t\t\tmouseMoveListener: null,\n\t\t\tprofileEnabled,\n\t\t\tsetAwayTimeout: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\telementTag() {\n\t\t\treturn this.inline ? 'div' : 'li'\n\t\t},\n\t\t/**\n\t\t * The profile page link\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event for styling\n\t\t\treturn null\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current user's status from initial state\n\t * and stores it in Vuex\n\t */\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\n\t\tthis.$store.dispatch('loadStatusFromInitialState')\n\n\t\tif (OC.config.session_keepalive) {\n\t\t\t// Send the latest status to the server every 5 minutes\n\t\t\tthis.heartbeatInterval = setInterval(this._backgroundHeartbeat.bind(this), 1000 * 60 * 5)\n\t\t\tthis.setAwayTimeout = () => {\n\t\t\t\tthis.isAway = true\n\t\t\t}\n\t\t\t// Catch mouse movements, but debounce to once every 30 seconds\n\t\t\tthis.mouseMoveListener = debounce(() => {\n\t\t\t\tconst wasAway = this.isAway\n\t\t\t\tthis.isAway = false\n\t\t\t\t// Reset the two minute counter\n\t\t\t\tclearTimeout(this.setAwayTimeout)\n\t\t\t\t// If the user did not move the mouse within two minutes,\n\t\t\t\t// mark them as away\n\t\t\t\tsetTimeout(this.setAwayTimeout, 1000 * 60 * 2)\n\n\t\t\t\tif (wasAway) {\n\t\t\t\t\tthis._backgroundHeartbeat()\n\t\t\t\t}\n\t\t\t}, 1000 * 2, true)\n\t\t\twindow.addEventListener('mousemove', this.mouseMoveListener, {\n\t\t\t\tcapture: true,\n\t\t\t\tpassive: true,\n\t\t\t})\n\n\t\t\tthis._backgroundHeartbeat()\n\t\t}\n\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\t/**\n\t * Some housekeeping before destroying the component\n\t */\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\twindow.removeEventListener('mouseMove', this.mouseMoveListener)\n\t\tclearInterval(this.heartbeatInterval)\n\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\n\t\tloadProfilePage() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\tthis.loadingProfilePage = true\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Opens the modal to set a custom status\n\t\t */\n\t\topenModal() {\n\t\t\tthis.isModalOpen = true\n\t\t},\n\t\t/**\n\t\t * Closes the modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.isModalOpen = false\n\t\t},\n\n\t\t/**\n\t\t * Sends the status heartbeat to the server\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t * @private\n\t\t */\n\t\tasync _backgroundHeartbeat() {\n\t\t\ttry {\n\t\t\t\tconst status = await sendHeartbeat(this.isAway)\n\t\t\t\tif (status?.userId) {\n\t\t\t\t\tthis.$store.dispatch('setStatusFromHeartbeat', status)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('reFetchStatusFromServer')\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.debug('Failed sending heartbeat, got: ' + error.response?.status)\n\t\t\t}\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (OC.getCurrentUser().uid === state.userId) {\n\t\t\t\tthis.$store.dispatch('setStatusFromObject', {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-status-menu-item {\n\t&__header {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\twidth: auto !important;\n\t\theight: 44px * 1.5 !important;\n\t\tpadding: 10px 12px 5px 12px !important;\n\t\talign-items: flex-start !important;\n\t\tcolor: var(--color-main-text) !important;\n\n\t\t&:not([href]) {\n\t\t\theight: var(--header-menu-item-height) !important;\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t\tcursor: default !important;\n\n\t\t\t& * {\n\t\t\t\tcursor: default !important;\n\t\t\t}\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: transparent !important;\n\t\t\t}\n\t\t}\n\n\t\t&-content {\n\t\t\tdisplay: inline-flex !important;\n\t\t\tfont-weight: bold !important;\n\t\t\tgap: 0 10px !important;\n\t\t\twidth: auto;\n\n\t\t\t&-displayname {\n\t\t\t\twidth: auto;\n\t\t\t}\n\n\t\t\t&-placeholder {\n\t\t\t\twidth: 16px !important;\n\t\t\t\theight: 24px !important;\n\t\t\t\tmargin-right: 10px !important;\n\t\t\t\tvisibility: hidden !important;\n\t\t\t}\n\t\t}\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-maxcontrast) !important;\n\t\t}\n\t}\n\n\t&__toggle {\n\t\t&-icon {\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t\tmargin-right: 10px;\n\t\t\topacity: 1 !important;\n\t\t\tbackground-size: 16px;\n\t\t\tvertical-align: middle !important;\n\t\t}\n\n\t\t// In dashboard\n\t\t&--inline {\n\t\t\twidth: auto;\n\t\t\tmin-width: 44px;\n\t\t\theight: 44px;\n\t\t\tmargin: 0;\n\t\t\tborder: 0;\n\t\t\tborder-radius: var(--border-radius-pill);\n\t\t\tbackground-color: var(--color-main-background-blur);\n\t\t\tfont-size: inherit;\n\t\t\tfont-weight: normal;\n\n\t\t\t-webkit-backdrop-filter: var(--background-blur);\n\t\t\tbackdrop-filter: var(--background-blur);\n\n\t\t\t&:active,\n\t\t\t&:hover,\n\t\t\t&:focus {\n\t\t\t\tbackground-color: var(--color-background-hover);\n\t\t\t}\n\t\t\t&:focus {\n\t\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\nli {\n\tlist-style-type: none;\n}\n\n</style>\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise<void>}\n */\nconst sendHeartbeat = async (isAway) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/heartbeat?format=json')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data.ocs.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserStatus.vue?vue&type=template&id=59a5bedd&scoped=true&\"\nimport script from \"./UserStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./UserStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserStatus.vue?vue&type=style&index=0&id=59a5bedd&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59a5bedd\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.elementTag,{tag:\"component\"},[_c('div',{staticClass:\"user-status-menu-item\"},[(!_vm.inline)?_c('a',{staticClass:\"user-status-menu-item__header\",attrs:{\"href\":_vm.profilePageLink},on:{\"click\":function($event){if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.loadProfilePage.apply(null, arguments)}}},[_c('div',{staticClass:\"user-status-menu-item__header-content\"},[_c('div',{staticClass:\"user-status-menu-item__header-content-displayname\"},[_vm._v(_vm._s(_vm.displayName))]),_vm._v(\" \"),(!_vm.loadingProfilePage)?_c('div',{staticClass:\"user-status-menu-item__header-content-placeholder\"}):_c('div',{staticClass:\"icon-loading-small\"})]),_vm._v(\" \"),(_vm.profileEnabled)?_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('user_status', 'View profile'))+\"\\n\\t\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c(_vm.inline ? 'button' : 'a',{tag:\"toggle\",staticClass:\"user-status-menu-item__toggle\",class:{'user-status-menu-item__toggle--inline': _vm.inline},attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.openModal.apply(null, arguments)}}},[_c('span',{staticClass:\"user-status-menu-item__toggle-icon\",class:_vm.statusIcon,attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.visibleMessage)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.isModalOpen)?_c('SetStatusModal',{on:{\"close\":_vm.closeModal}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise<void>}\n */\nconst fetchAllPredefinedStatuses = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'\n\nconst state = {\n\tpredefinedStatuses: [],\n}\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses.push(status)\n\t},\n}\n\nconst getters = {\n\tstatusesHaveLoaded(state) {\n\t\treturn state.predefinedStatuses.length > 0\n\t},\n}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tdateFactory,\n} from './dateService.js'\nimport moment from '@nextcloud/moment'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nconst getTimestampForClearAt = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\tcase 'week':\n\t\t\treturn Number(moment(date).endOf(clearAt.time).format('X'))\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\nexport {\n\tgetTimestampForClearAt,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetPredefinedMessage,\n\tsetCustomMessage,\n\tclearMessage,\n} from '../services/statusService.js'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getTimestampForClearAt } from '../services/clearAtService.js'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise<void>}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromObject({ commit, state }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise<void>}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise<object>}\n */\nconst fetchCurrentStatus = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the current user-status\n *\n * @param {string} userId\n * @return {Promise<object>}\n */\nconst fetchBackupStatus = async (userId) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId: '_' + userId })\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise<void>}\n */\nconst setStatus = async (statusType) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setPredefinedMessage = async (messageId, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setCustomMessage = async (message, statusIcon = null, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise<void>}\n */\nconst clearMessage = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\n/**\n * Revert the automated status\n *\n * @param {string} messageId\n * @return {Promise<object>}\n */\nconst revertToBackupStatus = async (messageId) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/revert/{messageId}', { messageId })\n\tconst response = await HttpClient.delete(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchCurrentStatus,\n\tfetchBackupStatus,\n\tsetStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tclearMessage,\n\trevertToBackupStatus,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n * @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com>\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tfetchBackupStatus,\n\trevertToBackupStatus,\n} from '../services/statusService.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadBackupStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync fetchBackupFromServer({ commit }) {\n\t\ttry {\n\t\t\tconst status = await fetchBackupStatus(getCurrentUser()?.uid)\n\t\t\tcommit('loadBackupStatusFromServer', status)\n\t\t} catch (e) {\n\t\t\t// Ignore missing user backup status\n\t\t}\n\t},\n\n\tasync revertBackupFromServer({ commit }, { messageId }) {\n\t\tconst status = await revertToBackupStatus(messageId)\n\t\tif (status) {\n\t\t\tcommit('loadBackupStatusFromServer', {})\n\t\t\tcommit('loadStatusFromServer', status)\n\t\t\temit('user_status:status.updated', {\n\t\t\t\tstatus: status.status,\n\t\t\t\tmessage: status.message,\n\t\t\t\ticon: status.icon,\n\t\t\t\tclearAt: status.clearAt,\n\t\t\t\tuserId: getCurrentUser()?.uid,\n\t\t\t})\n\t\t}\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses.js'\nimport userStatus from './userStatus.js'\nimport userBackupStatus from './userBackupStatus.js'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t\tuserBackupStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport UserStatus from './UserStatus.vue'\n\nimport store from './store/index.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\nVue.prototype.$t = t\n\nconst mountPoint = document.getElementById('user_status-menu-entry')\n\nconst mountMenuEntry = () => {\n\tconst mountPoint = document.getElementById('user_status-menu-entry')\n\t// eslint-disable-next-line no-new\n\tnew Vue({\n\t\tel: mountPoint,\n\t\trender: h => h(UserStatus),\n\t\tstore,\n\t})\n}\n\nif (mountPoint) {\n\tmountMenuEntry()\n} else {\n\tsubscribe('core:user-menu:mounted', mountMenuEntry)\n}\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tconst Dashboard = Vue.extend(UserStatus)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t\tstore,\n\t\t}).$mount(el)\n\t})\n})\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { mapState } from 'vuex'\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: state => state.userStatus.status,\n\t\t\tstatusIsUserDefined: state => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: state => state.userStatus.icon,\n\t\t\tcustomMessage: state => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\tcase 'online':\n\t\t\t\t\treturn this.$t('user_status', 'Online')\n\n\t\t\t\tcase 'away':\n\t\t\t\t\treturn this.$t('user_status', 'Away')\n\n\t\t\t\tcase 'dnd':\n\t\t\t\t\treturn this.$t('user_status', 'Do not disturb')\n\n\t\t\t\tcase 'invisible':\n\t\t\t\t\treturn this.$t('user_status', 'Invisible')\n\n\t\t\t\tcase 'offline':\n\t\t\t\t\treturn this.$t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Set status')\n\t\t},\n\n\t\t/**\n\t\t * The status indicator icon\n\t\t *\n\t\t * @return {string | null}\n\t\t */\n\t\tstatusIcon() {\n\t\t\tswitch (this.statusType) {\n\t\t\tcase 'online':\n\t\t\t\treturn 'icon-user-status-online'\n\n\t\t\tcase 'away':\n\t\t\t\treturn 'icon-user-status-away'\n\n\t\t\tcase 'dnd':\n\t\t\t\treturn 'icon-user-status-dnd'\n\n\t\t\tcase 'invisible':\n\t\t\tcase 'offline':\n\t\t\t\treturn 'icon-user-status-invisible'\n\t\t\t}\n\n\t\t\treturn ''\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the new status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst dateFactory = () => {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".user-status-menu-item__header[data-v-59a5bedd]{display:flex !important;flex-direction:column !important;width:auto !important;height:66px !important;padding:10px 12px 5px 12px !important;align-items:flex-start !important;color:var(--color-main-text) !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]){height:var(--header-menu-item-height) !important;color:var(--color-text-maxcontrast) !important;cursor:default !important}.user-status-menu-item__header:not([href]) *[data-v-59a5bedd]{cursor:default !important}.user-status-menu-item__header[data-v-59a5bedd]:not([href]):hover{background-color:rgba(0,0,0,0) !important}.user-status-menu-item__header-content[data-v-59a5bedd]{display:inline-flex !important;font-weight:bold !important;gap:0 10px !important;width:auto}.user-status-menu-item__header-content-displayname[data-v-59a5bedd]{width:auto}.user-status-menu-item__header-content-placeholder[data-v-59a5bedd]{width:16px !important;height:24px !important;margin-right:10px !important;visibility:hidden !important}.user-status-menu-item__header span[data-v-59a5bedd]{color:var(--color-text-maxcontrast) !important}.user-status-menu-item__toggle-icon[data-v-59a5bedd]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px;vertical-align:middle !important}.user-status-menu-item__toggle--inline[data-v-59a5bedd]{width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-main-background-blur);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:active,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:hover,.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{background-color:var(--color-background-hover)}.user-status-menu-item__toggle--inline[data-v-59a5bedd]:focus{box-shadow:0 0 0 2px var(--color-main-text) !important}li[data-v-59a5bedd]{list-style-type:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/UserStatus.vue\"],\"names\":[],\"mappings\":\"AAEC,gDACC,uBAAA,CACA,gCAAA,CACA,qBAAA,CACA,sBAAA,CACA,qCAAA,CACA,iCAAA,CACA,uCAAA,CAEA,4DACC,gDAAA,CACA,8CAAA,CACA,yBAAA,CAEA,8DACC,yBAAA,CAGD,kEACC,yCAAA,CAIF,wDACC,8BAAA,CACA,2BAAA,CACA,qBAAA,CACA,UAAA,CAEA,oEACC,UAAA,CAGD,oEACC,qBAAA,CACA,sBAAA,CACA,4BAAA,CACA,4BAAA,CAIF,qDACC,8CAAA,CAKD,qDACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gCAAA,CAID,wDACC,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,kDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,2LAGC,8CAAA,CAED,8DACC,sDAAA,CAMJ,oBACC,oBAAA\",\"sourcesContent\":[\"\\n.user-status-menu-item {\\n\\t&__header {\\n\\t\\tdisplay: flex !important;\\n\\t\\tflex-direction: column !important;\\n\\t\\twidth: auto !important;\\n\\t\\theight: 44px * 1.5 !important;\\n\\t\\tpadding: 10px 12px 5px 12px !important;\\n\\t\\talign-items: flex-start !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\n\\t\\t&:not([href]) {\\n\\t\\t\\theight: var(--header-menu-item-height) !important;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t\\tcursor: default !important;\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\tcursor: default !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground-color: transparent !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-content {\\n\\t\\t\\tdisplay: inline-flex !important;\\n\\t\\t\\tfont-weight: bold !important;\\n\\t\\t\\tgap: 0 10px !important;\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t&-displayname {\\n\\t\\t\\t\\twidth: auto;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-placeholder {\\n\\t\\t\\t\\twidth: 16px !important;\\n\\t\\t\\t\\theight: 24px !important;\\n\\t\\t\\t\\tmargin-right: 10px !important;\\n\\t\\t\\t\\tvisibility: hidden !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__toggle {\\n\\t\\t&-icon {\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tmargin-right: 10px;\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t\\tbackground-size: 16px;\\n\\t\\t\\tvertical-align: middle !important;\\n\\t\\t}\\n\\n\\t\\t// In dashboard\\n\\t\\t&--inline {\\n\\t\\t\\twidth: auto;\\n\\t\\t\\tmin-width: 44px;\\n\\t\\t\\theight: 44px;\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tborder: 0;\\n\\t\\t\\tborder-radius: var(--border-radius-pill);\\n\\t\\t\\tbackground-color: var(--color-main-background-blur);\\n\\t\\t\\tfont-size: inherit;\\n\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t-webkit-backdrop-filter: var(--background-blur);\\n\\t\\t\\tbackdrop-filter: var(--background-blur);\\n\\n\\t\\t\\t&:active,\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t}\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\nli {\\n\\tlist-style-type: none;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + \"user-status-modal\" + \"-\" + chunkId + \".js?v=\" + \"1aa6f08709a7157ce48a\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2613;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2613: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(17824)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","profileEnabled","loadState","name","components","SetStatusModal","mixins","OnlineStatusMixin","props","inline","type","Boolean","default","data","displayName","getCurrentUser","heartbeatInterval","isAway","isModalOpen","loadingProfilePage","mouseMoveListener","setAwayTimeout","computed","elementTag","profilePageLink","generateUrl","userId","uid","mounted","subscribe","handleDisplayNameUpdate","handleProfileEnabledUpdate","$store","dispatch","OC","config","session_keepalive","setInterval","_backgroundHeartbeat","bind","debounce","wasAway","clearTimeout","setTimeout","window","addEventListener","capture","passive","handleUserStatusUpdated","beforeDestroy","unsubscribe","removeEventListener","clearInterval","methods","loadProfilePage","openModal","closeModal","status","async","url","generateOcsUrl","HttpClient","ocs","sendHeartbeat","error","_error$response","console","debug","response","state","icon","message","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","tag","staticClass","_e","attrs","on","$event","ctrlKey","shiftKey","altKey","metaKey","apply","arguments","_v","_s","t","class","preventDefault","stopPropagation","statusIcon","visibleMessage","predefinedStatuses","mutations","addPredefinedStatus","push","getters","statusesHaveLoaded","length","actions","_ref","commit","statuses","fetchAllPredefinedStatuses","getTimestampForClearAt","clearAt","date","dateFactory","setSeconds","getSeconds","time","Math","floor","getTime","Number","moment","endOf","format","statusIsUserDefined","messageIsPredefined","messageId","setStatus","statusType","setPredefinedMessage","_ref2","setCustomMessage","_ref3","clearMessage","loadStatusFromServer","_ref4","_ref5","_ref6","_getCurrentUser","emit","_ref7","_ref8","_ref9","_getCurrentUser2","rootState","resolvedClearAt","undefined","find","id","_ref10","_ref11","_getCurrentUser3","_ref12","_getCurrentUser4","_ref13","fetchCurrentStatus","_ref14","loadStatusFromInitialState","_ref15","loadBackupStatusFromServer","fetchBackupStatus","e","revertToBackupStatus","Vue","Vuex","Store","modules","userStatus","userBackupStatus","strict","__webpack_nonce__","btoa","getRequestToken","mountMenuEntry","mountPoint","document","getElementById","el","render","h","UserStatus","store","OCA","Dashboard","registerStatus","propsData","$mount","mapState","customIcon","customMessage","concat","$t","err","showError","Date","___CSS_LOADER_EXPORT___","module","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","keys","Object","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","forEach","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/workflowengine-workflowengine.js b/dist/workflowengine-workflowengine.js index d0698328b35..898c2abdd0c 100644 --- a/dist/workflowengine-workflowengine.js +++ b/dist/workflowengine-workflowengine.js @@ -1,3 +1,3 @@ /*! For license information please see workflowengine-workflowengine.js.LICENSE.txt */ -(()=>{var e,n={71374:(e,n,i)=>{"use strict";var o=i(20144),a=i(20629),s=i(4820),r=i(79954),l=i(79753);const c=0===(0,r.j)("workflowengine","scope")?"global":"user",d=t=>(0,l.generateOcsUrl)("apps/workflowengine/api/v1/workflows/{scopeValue}",{scopeValue:c})+t+"?format=json";var A=i(10128);i(65509),o.default.use(a.ZP);const p=new a.yh({state:{rules:[],scope:(0,r.j)("workflowengine","scope"),appstoreEnabled:(0,r.j)("workflowengine","appstoreenabled"),operations:(0,r.j)("workflowengine","operators"),plugins:o.default.observable({checks:{},operators:{}}),entities:(0,r.j)("workflowengine","entities"),events:(0,r.j)("workflowengine","entities").map((t=>t.events.map((e=>({id:"".concat(t.id,"::").concat(e.eventName),entity:t,...e}))))).flat(),checks:(0,r.j)("workflowengine","checks")},mutations:{addRule(t,e){t.rules.push({...e,valid:!0})},updateRule(t,e){const n=t.rules.findIndex((t=>e.id===t.id)),i=Object.assign({},e);o.default.set(t.rules,n,i)},removeRule(t,e){const n=t.rules.findIndex((t=>e.id===t.id));t.rules.splice(n,1)},addPluginCheck(t,e){o.default.set(t.plugins.checks,e.class,e)},addPluginOperator(t,e){e=Object.assign({color:"var(--color-primary-element)"},e,t.operations[e.id]||{}),void 0!==t.operations[e.id]&&o.default.set(t.operations,e.id,e)}},actions:{async fetchRules(t){const{data:e}=await s.default.get(d(""));Object.values(e.ocs.data).flat().forEach((e=>{t.commit("addRule",e)}))},createNewRule(t,e){let n=null,i=[];!1===e.isComplex&&""===e.fixedEntity&&(n=t.state.entities.find((t=>e.entities&&e.entities[0]===t.id)),n=n||Object.values(t.state.entities)[0],i=[n.events[0].eventName]),t.commit("addRule",{id:-(new Date).getTime(),class:e.id,entity:n?n.id:e.fixedEntity,events:i,name:"",checks:[{class:null,operator:null,value:""}],operation:e.operation||""})},updateRule(t,e){t.commit("updateRule",{...e,events:"string"==typeof e.events?JSON.parse(e.events):e.events})},removeRule(t,e){t.commit("removeRule",e)},async pushUpdateRule(t,e){let n;0===t.state.scope&&await(0,A.confirmPassword)(),n=e.id<0?await s.default.post(d(""),e):await s.default.put(d("/".concat(e.id)),e),o.default.set(e,"id",n.data.ocs.data.id),t.commit("updateRule",e)},async deleteRule(t,e){await(0,A.confirmPassword)(),await s.default.delete(d("/".concat(e.id))),t.commit("removeRule",e)},setValid(t,e){let{rule:n,valid:i}=e;n.valid=i,t.commit("updateRule",n)}},getters:{getRules:t=>t.rules.filter((e=>void 0!==t.operations[e.class])).sort(((t,e)=>t.id-e.id||e.class-t.class)),getOperationForRule:t=>e=>t.operations[e.class],getEntityForOperation:t=>e=>t.entities.find((t=>e.fixedEntity===t.id)),getEventsForOperation:t=>e=>t.events,getChecksForEntity:t=>e=>Object.values(t.checks).filter((t=>t.supportedEntities.indexOf(e)>-1||0===t.supportedEntities.length)).map((e=>t.plugins.checks[e.id])).reduce(((t,e)=>(t[e.class]=e,t)),{})}});var u=i(15168),m=i.n(u),h=i(12945),g=i.n(h),C=i(45400),f=i.n(C),v=i(10861),w=i.n(v),x=i(39429),k=i(80419),b=i(82675),_=i(98266),y=i.n(_),j=i(64024);const O={name:"Event",components:{NcMultiselect:y()},props:{rule:{type:Object,required:!0}},computed:{entity(){return this.$store.getters.getEntityForOperation(this.operation)},operation(){return this.$store.getters.getOperationForRule(this.rule)},allEvents(){return this.$store.getters.getEventsForOperation(this.operation)},currentEvent(){return this.allEvents.filter((t=>t.entity.id===this.rule.entity&&-1!==this.rule.events.indexOf(t.eventName)))}},methods:{updateEvent(e){if(0===e.length)return void(0,j.K2)(t("workflowengine","At least one event must be selected"));const n=this.rule.entity,i=e.map((t=>t.entity.id)).filter(((t,e,n)=>n.indexOf(t)===e));let o=null;o=i.length>1?i.filter((t=>t!==n))[0]:i[0],this.$set(this.rule,"entity",o),this.$set(this.rule,"events",e.filter((t=>t.entity.id===o)).map((t=>t.eventName))),this.$emit("update",this.rule)}}};var E=i(93379),B=i.n(E),R=i(7795),S=i.n(R),V=i(90569),N=i.n(V),T=i(3565),D=i.n(T),P=i(19216),F=i.n(P),z=i(44589),Z=i.n(z),U=i(53667),G={};G.styleTagTransform=Z(),G.setAttributes=D(),G.insert=N().bind(null,"head"),G.domAPI=S(),G.insertStyleElement=F(),B()(U.Z,G),U.Z&&U.Z.locals&&U.Z.locals;var $=i(51900);const I=(0,$.Z)(O,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"event"},[t.operation.isComplex&&""!==t.operation.fixedEntity?e("div",{staticClass:"isComplex"},[e("img",{staticClass:"option__icon",attrs:{src:t.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(t.operation.triggerHint))])]):e("NcMultiselect",{attrs:{value:t.currentEvent,options:t.allEvents,"track-by":"id",multiple:!0,"auto-limit":!1,disabled:t.allEvents.length<=1},on:{input:t.updateEvent},scopedSlots:t._u([{key:"selection",fn:function(n){let{values:i,isOpen:o}=n;return[i.length&&!o?e("div",{staticClass:"eventlist"},[e("img",{staticClass:"option__icon",attrs:{src:i[0].entity.icon,alt:""}}),t._v(" "),t._l(i,(function(n,o){return e("span",{key:n.id,staticClass:"text option__title option__title_single"},[t._v(t._s(n.displayName)+" "),o+1<i.length?e("span",[t._v(", ")]):t._e()])}))],2):t._e()]}},{key:"option",fn:function(n){return[e("img",{staticClass:"option__icon",attrs:{src:n.option.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.displayName))])]}}])})],1)}),[],!1,null,"1825d70e",null).exports;var q=i(36456),W=i.n(q),M=i(2649),L=i.n(M);const Y={name:"Check",components:{NcActionButton:f(),NcActions:g(),NcSelect:W(),CloseIcon:b.default},directives:{ClickOutside:L()},props:{check:{type:Object,required:!0},rule:{type:Object,required:!0}},data:()=>({deleteVisible:!1,currentOption:null,currentOperator:null,options:[],valid:!1}),computed:{checks(){return this.$store.getters.getChecksForEntity(this.rule.entity)},operators(){if(!this.currentOption)return[];const t=this.checks[this.currentOption.class].operators;return"function"==typeof t?t(this.check):t},currentComponent(){return this.currentOption?this.checks[this.currentOption.class].component:[]},valuePlaceholder(){return this.currentOption&&this.currentOption.placeholder?this.currentOption.placeholder(this.check):""}},watch:{"check.operator"(){this.validate()}},mounted(){this.options=Object.values(this.checks),this.currentOption=this.checks[this.check.class],this.currentOperator=this.operators.find((t=>t.operator===this.check.operator)),null===this.check.class&&this.$nextTick((()=>this.$refs.checkSelector.$el.focus())),this.validate()},methods:{showDelete(){this.deleteVisible=!0},hideDelete(){this.deleteVisible=!1},validate(){this.valid=!0,this.currentOption&&this.currentOption.validate&&(this.valid=!!this.currentOption.validate(this.check)),this.check.invalid=!this.valid,this.$emit("validate",this.valid)},updateCheck(){const t=this.operators.findIndex((t=>this.check.operator===t.operator));this.check.class===this.currentOption.class&&-1!==t||(this.currentOperator=this.operators[0]),this.check.class=this.currentOption.class,this.check.operator=this.currentOperator.operator,this.validate(),this.$emit("update",this.check)}}};var H=i(12704),J={};J.styleTagTransform=Z(),J.setAttributes=D(),J.insert=N().bind(null,"head"),J.domAPI=S(),J.insertStyleElement=F(),B()(H.Z,J),H.Z&&H.Z.locals&&H.Z.locals;const Q=(0,$.Z)(Y,(function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideDelete,expression:"hideDelete"}],staticClass:"check",on:{click:t.showDelete}},[e("NcSelect",{ref:"checkSelector",attrs:{options:t.options,label:"name","track-by":"class",clearable:!1,placeholder:t.t("workflowengine","Select a filter")},on:{input:t.updateCheck},model:{value:t.currentOption,callback:function(e){t.currentOption=e},expression:"currentOption"}}),t._v(" "),e("NcSelect",{staticClass:"comparator",attrs:{disabled:!t.currentOption,options:t.operators,label:"name","track-by":"operator",clearable:!1,placeholder:t.t("workflowengine","Select a comparator")},on:{input:t.updateCheck},model:{value:t.currentOperator,callback:function(e){t.currentOperator=e},expression:"currentOperator"}}),t._v(" "),t.currentOperator&&t.currentComponent?e(t.currentOption.component,{tag:"component",staticClass:"option",attrs:{disabled:!t.currentOption,check:t.check},on:{input:t.updateCheck,valid:function(e){(t.valid=!0)&&t.validate()},invalid:function(e){!(t.valid=!1)&&t.validate()}},model:{value:t.check.value,callback:function(e){t.$set(t.check,"value",e)},expression:"check.value"}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.check.value,expression:"check.value"}],staticClass:"option",class:{invalid:!t.valid},attrs:{type:"text",disabled:!t.currentOption,placeholder:t.valuePlaceholder},domProps:{value:t.check.value},on:{input:[function(e){e.target.composing||t.$set(t.check,"value",e.target.value)},t.updateCheck]}}),t._v(" "),t.deleteVisible||!t.currentOption?e("NcActions",[e("NcActionButton",{attrs:{title:t.t("workflowengine","Remove filter")},on:{click:function(e){return t.$emit("remove")}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)})],1):t._e()],1)}),[],!1,null,"e3633862",null).exports,K={name:"Operation",components:{NcButton:w()},props:{operation:{type:Object,required:!0},colored:{type:Boolean,default:!0}}};var X=i(67767),tt={};tt.styleTagTransform=Z(),tt.setAttributes=D(),tt.insert=N().bind(null,"head"),tt.domAPI=S(),tt.insertStyleElement=F(),B()(X.Z,tt),X.Z&&X.Z.locals&&X.Z.locals;const et=(0,$.Z)(K,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"actions__item",class:{colored:t.colored},style:{backgroundColor:t.colored?t.operation.color:"transparent"}},[e("div",{staticClass:"icon",class:t.operation.iconClass,style:{backgroundImage:t.operation.iconClass?"":"url(".concat(t.operation.icon,")")}}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.operation.name))]),t._v(" "),e("small",[t._v(t._s(t.operation.description))]),t._v(" "),t.colored?e("NcButton",[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Add new flow"))+"\n\t\t")]):t._e()],1),t._v(" "),e("div",{staticClass:"actions__item_options"},[t._t("default")],2)])}),[],!1,null,"a0480332",null).exports;var nt=i(25108);const it={name:"Rule",components:{ArrowRight:x.default,Check:Q,CheckMark:k.default,Close:b.default,Event:I,NcActionButton:f(),NcActions:g(),NcButton:w(),Operation:et},directives:{Tooltip:m()},props:{rule:{type:Object,required:!0}},data(){return{editing:!1,checks:[],error:null,dirty:this.rule.id<0,originalRule:null}},computed:{operation(){return this.$store.getters.getOperationForRule(this.rule)},ruleStatus(){return this.error||!this.rule.valid||0===this.rule.checks.length||this.rule.checks.some((t=>!0===t.invalid))?{title:t("workflowengine","The configuration is invalid"),icon:"Close",type:"warning",tooltip:{placement:"bottom",show:!0,content:this.error}}:this.dirty?{title:t("workflowengine","Save"),icon:"ArrowRight",type:"primary"}:{title:t("workflowengine","Active"),icon:"CheckMark",type:"success"}},lastCheckComplete(){const t=this.rule.checks[this.rule.checks.length-1];return void 0===t||null!==t.class}},mounted(){this.originalRule=JSON.parse(JSON.stringify(this.rule))},methods:{async updateOperation(t){this.$set(this.rule,"operation",t),await this.updateRule()},validate(t){this.error=null,this.$store.dispatch("updateRule",this.rule)},updateRule(){this.dirty||(this.dirty=!0),this.error=null,this.$store.dispatch("updateRule",this.rule)},async saveRule(){try{await this.$store.dispatch("pushUpdateRule",this.rule),this.dirty=!1,this.error=null,this.originalRule=JSON.parse(JSON.stringify(this.rule))}catch(t){nt.error("Failed to save operation"),this.error=t.response.data.ocs.meta.message}},async deleteRule(){try{await this.$store.dispatch("deleteRule",this.rule)}catch(t){nt.error("Failed to delete operation"),this.error=t.response.data.ocs.meta.message}},cancelRule(){this.rule.id<0?this.$store.dispatch("removeRule",this.rule):(this.$store.dispatch("updateRule",this.originalRule),this.originalRule=JSON.parse(JSON.stringify(this.rule)),this.dirty=!1)},async removeCheck(t){const e=this.rule.checks.findIndex((e=>e===t));e>-1&&this.$delete(this.rule.checks,e),this.$store.dispatch("updateRule",this.rule)},onAddFilter(){this.rule.checks.push({class:null,operator:null,value:""})}}};var ot=i(91372),at={};at.styleTagTransform=Z(),at.setAttributes=D(),at.insert=N().bind(null,"head"),at.domAPI=S(),at.insertStyleElement=F(),B()(ot.Z,at),ot.Z&&ot.Z.locals&&ot.Z.locals;const st=(0,$.Z)(it,(function(){var t=this,e=t._self._c;return t.operation?e("div",{staticClass:"section rule",style:{borderLeftColor:t.operation.color||""}},[e("div",{staticClass:"trigger"},[e("p",[e("span",[t._v(t._s(t.t("workflowengine","When")))]),t._v(" "),e("Event",{attrs:{rule:t.rule},on:{update:t.updateRule}})],1),t._v(" "),t._l(t.rule.checks,(function(n,i){return e("p",{key:i},[e("span",[t._v(t._s(t.t("workflowengine","and")))]),t._v(" "),e("Check",{attrs:{check:n,rule:t.rule},on:{update:t.updateRule,validate:t.validate,remove:function(e){return t.removeCheck(n)}}})],1)})),t._v(" "),e("p",[e("span"),t._v(" "),t.lastCheckComplete?e("input",{staticClass:"check--add",attrs:{type:"button",value:t.t("workflowengine","Add a new filter")},on:{click:t.onAddFilter}}):t._e()])],2),t._v(" "),e("div",{staticClass:"flow-icon icon-confirm"}),t._v(" "),e("div",{staticClass:"action"},[e("Operation",{attrs:{operation:t.operation,colored:!1}},[t.operation.options?e(t.operation.options,{tag:"component",on:{input:t.updateOperation},model:{value:t.rule.operation,callback:function(e){t.$set(t.rule,"operation",e)},expression:"rule.operation"}}):t._e()],1),t._v(" "),e("div",{staticClass:"buttons"},[t.rule.id<-1||t.dirty?e("NcButton",{on:{click:t.cancelRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Cancel"))+"\n\t\t\t")]):t.dirty?t._e():e("NcButton",{on:{click:t.deleteRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Delete"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:t.ruleStatus.type},on:{click:t.saveRule},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.ruleStatus.icon,{tag:"component",attrs:{size:20}})]},proxy:!0}],null,!1,2383918876)},[t._v("\n\t\t\t\t"+t._s(t.ruleStatus.title)+"\n\t\t\t")])],1),t._v(" "),t.error?e("p",{staticClass:"error-message"},[t._v("\n\t\t\t"+t._s(t.error)+"\n\t\t")]):t._e()],1)]):t._e()}),[],!1,null,"3def8966",null).exports;var rt=i(13299),lt=i.n(rt),ct=i(23873),dt=i(20404);const At={name:"Workflow",components:{NcButton:w(),MenuDown:dt.Z,MenuUp:ct.Z,Operation:et,Rule:st,NcSettingsSection:lt()},data:()=>({showMoreOperations:!1,appstoreUrl:(0,l.generateUrl)("settings/apps/workflow"),workflowDocUrl:(0,r.j)("workflowengine","doc-url")}),computed:{...(0,a.Se)({rules:"getRules"}),...(0,a.rn)({appstoreEnabled:"appstoreEnabled",scope:"scope",operations:"operations"}),hasMoreOperations(){return Object.keys(this.operations).length>3},getMainOperations(){return this.showMoreOperations?Object.values(this.operations):Object.values(this.operations).slice(0,3)},showAppStoreHint(){return 0===this.scope&&this.appstoreEnabled&&OC.isUserAdmin()}},mounted(){this.$store.dispatch("fetchRules")},methods:{createNewRule(t){this.$store.dispatch("createNewRule",t)}}};var pt=i(86504),ut={};ut.styleTagTransform=Z(),ut.setAttributes=D(),ut.insert=N().bind(null,"head"),ut.domAPI=S(),ut.insertStyleElement=F(),B()(pt.Z,ut),pt.Z&&pt.Z.locals&&pt.Z.locals;const mt=(0,$.Z)(At,(function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"workflowengine"}},[e("NcSettingsSection",{attrs:{title:t.t("workflowengine","Available flows"),"doc-url":t.workflowDocUrl}},[0===t.scope?e("p",{staticClass:"settings-hint"},[e("a",{attrs:{href:"https://nextcloud.com/developer/"}},[t._v(t._s(t.t("workflowengine","For details on how to write your own flow, check out the development documentation.")))])]):t._e(),t._v(" "),e("transition-group",{staticClass:"actions",attrs:{name:"slide",tag:"div"}},[t._l(t.getMainOperations,(function(n){return e("Operation",{key:n.id,attrs:{operation:n},nativeOn:{click:function(e){return t.createNewRule(n)}}})})),t._v(" "),t.showAppStoreHint?e("a",{key:"add",staticClass:"actions__item colored more",attrs:{href:t.appstoreUrl}},[e("div",{staticClass:"icon icon-add"}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.t("workflowengine","More flows")))]),t._v(" "),e("small",[t._v(t._s(t.t("workflowengine","Browse the App Store")))])])]):t._e()],2),t._v(" "),t.hasMoreOperations?e("div",{staticClass:"actions__more"},[e("NcButton",{on:{click:function(e){t.showMoreOperations=!t.showMoreOperations}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.showMoreOperations?e("MenuUp",{attrs:{size:20}}):e("MenuDown",{attrs:{size:20}})]},proxy:!0}],null,!1,3801522717)},[t._v("\n\t\t\t\t"+t._s(t.showMoreOperations?t.t("workflowengine","Show less"):t.t("workflowengine","Show more"))+"\n\t\t\t")])],1):t._e(),t._v(" "),0===t.scope?e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Configured flows"))+"\n\t\t")]):e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Your flows"))+"\n\t\t")])],1),t._v(" "),t.rules.length>0?e("transition-group",{attrs:{name:"slide"}},t._l(t.rules,(function(t){return e("Rule",{key:t.id,attrs:{rule:t}})})),1):t._e()],1)}),[],!1,null,"4e25e34d",null).exports,ht=/^\/(.*)\/([gui]{0,3})$/,gt=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(3[0-2]|[1-2][0-9]|[1-9])$/,Ct=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/;var ft=i(94179),vt=i.n(ft);const wt={props:{value:{type:String,default:""},check:{type:Object,default:()=>({})}},data:()=>({newValue:""}),watch:{value:{immediate:!0,handler(t){this.updateInternalValue(t)}}},methods:{updateInternalValue(t){this.newValue=t}}},xt={name:"FileMimeType",components:{NcEllipsisedOption:vt(),NcSelect:W()},mixins:[wt],data:()=>({predefinedTypes:[{icon:"icon-folder",label:t("workflowengine","Folder"),id:"httpd/unix-directory"},{icon:"icon-picture",label:t("workflowengine","Images"),id:"/image\\/.*/"},{iconUrl:(0,l.imagePath)("core","filetypes/x-office-document"),label:t("workflowengine","Office documents"),id:"/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/"},{iconUrl:(0,l.imagePath)("core","filetypes/application-pdf"),label:t("workflowengine","PDF documents"),id:"application/pdf"}]}),computed:{options(){return[...this.predefinedTypes,this.customValue]},isPredefined(){return!!this.predefinedTypes.find((t=>this.newValue===t.id))},customValue:()=>({icon:"icon-settings-dark",label:t("workflowengine","Custom MIME type"),id:""}),currentValue(){return this.predefinedTypes.find((t=>this.newValue===t.id))||{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),id:this.newValue}}},methods:{validateRegex:t=>null!==/^\/(.*)\/([gui]{0,3})$/.exec(t),setValue(t){null!==t&&(this.newValue=t.id,this.$emit("input",this.newValue))},updateCustom(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}};var kt=i(4643),bt={};bt.styleTagTransform=Z(),bt.setAttributes=D(),bt.insert=N().bind(null,"head"),bt.domAPI=S(),bt.insertStyleElement=F(),B()(kt.Z,bt),kt.Z&&kt.Z.locals&&kt.Z.locals;const _t=(0,$.Z)(xt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a file type"),label:"label",options:t.options,clearable:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"option",fn:function(n){return[n.icon?e("span",{staticClass:"option__icon",class:n.icon}):e("span",{staticClass:"option__icon-img"},[e("img",{attrs:{src:n.iconUrl,alt:""}})]),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}},{key:"selected-option",fn:function(n){return[n.icon?e("span",{staticClass:"option__icon",class:n.icon}):e("span",{staticClass:"option__icon-img"},[e("img",{attrs:{src:n.iconUrl,alt:""}})]),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.t("workflowengine","e.g. httpd/unix-directory")},domProps:{value:t.currentValue.id},on:{input:t.updateCustom}})],1)}),[],!1,null,"1a11f354",null).exports;var yt=i(11677);const jt={name:"FileSystemTag",components:{NcSelectTags:i.n(yt)()},props:{value:{type:String,default:""}},data:()=>({newValue:[]}),watch:{value(){this.updateValue()}},beforeMount(){this.updateValue()},methods:{updateValue(){""!==this.value?this.newValue=parseInt(this.value):this.newValue=null},update(){this.$emit("input",this.newValue||"")}}},Ot=(0,$.Z)(jt,(function(){var t=this;return(0,t._self._c)("NcSelectTags",{attrs:{multiple:!1},on:{input:t.update},model:{value:t.newValue,callback:function(e){t.newValue=e},expression:"newValue"}})}),[],!1,null,"3bb09106",null).exports,Et=()=>[{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")},{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")}],Bt=[{class:"OCA\\WorkflowEngine\\Check\\FileName",name:t("workflowengine","File name"),operators:Et,placeholder:t=>"matches"===t.operator||"!matches"===t.operator?"/^dummy-.+$/i":"filename.txt",validate:t=>{return"matches"!==t.operator&&"!matches"!==t.operator||!!(e=t.value)&&null!==ht.exec(e);var e}},{class:"OCA\\WorkflowEngine\\Check\\FileMimeType",name:t("workflowengine","File MIME type"),operators:Et,component:_t},{class:"OCA\\WorkflowEngine\\Check\\FileSize",name:t("workflowengine","File size (upload)"),operators:[{operator:"less",name:t("workflowengine","less")},{operator:"!greater",name:t("workflowengine","less or equals")},{operator:"!less",name:t("workflowengine","greater or equals")},{operator:"greater",name:t("workflowengine","greater")}],placeholder:t=>"5 MB",validate:t=>!!t.value&&null!==t.value.match(/^[0-9]+[ ]?[kmgt]?b$/i)},{class:"OCA\\WorkflowEngine\\Check\\RequestRemoteAddress",name:t("workflowengine","Request remote address"),operators:[{operator:"matchesIPv4",name:t("workflowengine","matches IPv4")},{operator:"!matchesIPv4",name:t("workflowengine","does not match IPv4")},{operator:"matchesIPv6",name:t("workflowengine","matches IPv6")},{operator:"!matchesIPv6",name:t("workflowengine","does not match IPv6")}],placeholder:t=>"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?"::1/128":"127.0.0.1/32",validate:t=>{return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?!!(e=t.value)&&null!==Ct.exec(e):function(t){return!!t&&null!==gt.exec(t)}(t.value);var e}},{class:"OCA\\WorkflowEngine\\Check\\FileSystemTags",name:t("workflowengine","File system tag"),operators:[{operator:"is",name:t("workflowengine","is tagged with")},{operator:"!is",name:t("workflowengine","is not tagged with")}],component:Ot}],Rt={name:"RequestUserAgent",components:{NcEllipsisedOption:vt(),NcSelect:W()},mixins:[wt],data:()=>({newValue:"",predefinedTypes:[{id:"android",label:t("workflowengine","Android client"),icon:"icon-phone"},{id:"ios",label:t("workflowengine","iOS client"),icon:"icon-phone"},{id:"desktop",label:t("workflowengine","Desktop client"),icon:"icon-desktop"},{id:"mail",label:t("workflowengine","Thunderbird & Outlook addons"),icon:"icon-mail"}]}),computed:{options(){return[...this.predefinedTypes,this.customValue]},matchingPredefined(){return this.predefinedTypes.find((t=>this.newValue===t.id))},isPredefined(){return!!this.matchingPredefined},customValue:()=>({icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),id:""}),currentValue(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),id:this.newValue}}},methods:{validateRegex:t=>null!==/^\/(.*)\/([gui]{0,3})$/.exec(t),setValue(t){null!==t&&(this.newValue=t.id,this.$emit("input",this.newValue))},updateCustom(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}};var St=i(47892),Vt={};Vt.styleTagTransform=Z(),Vt.setAttributes=D(),Vt.insert=N().bind(null,"head"),Vt.domAPI=S(),Vt.insertStyleElement=F(),B()(St.Z,Vt),St.Z&&St.Z.locals&&St.Z.locals;const Nt=(0,$.Z)(Rt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a user agent"),label:"label",options:t.options,clearable:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}},{key:"selected-option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text"},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"003881d4",null).exports;var Tt=i(80008),Dt=i.n(Tt);const Pt=Dt().tz.names(),Ft={name:"RequestTime",components:{NcSelect:W()},mixins:[wt],props:{value:{type:String,default:""}},data:()=>({timezones:Pt,valid:!1,newValue:{startTime:null,endTime:null,timezone:Dt().tz.guess()}}),mounted(){this.validate()},methods:{updateInternalValue(t){try{const e=JSON.parse(t);2===e.length&&(this.newValue={startTime:e[0].split(" ",2)[0],endTime:e[1].split(" ",2)[0],timezone:e[0].split(" ",2)[1]})}catch(t){}},validate(){return this.valid=this.newValue.startTime&&null!==this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&this.newValue.endTime&&null!==this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&null!==Dt().tz.zone(this.newValue.timezone),this.valid?this.$emit("valid"):this.$emit("invalid"),this.valid},update(){if(null===this.newValue.timezone&&(this.newValue.timezone=Dt().tz.guess()),this.validate()){const t='["'.concat(this.newValue.startTime," ").concat(this.newValue.timezone,'","').concat(this.newValue.endTime," ").concat(this.newValue.timezone,'"]');this.$emit("input",t)}}}};var zt=i(5487),Zt={};Zt.styleTagTransform=Z(),Zt.setAttributes=D(),Zt.insert=N().bind(null,"head"),Zt.domAPI=S(),Zt.insertStyleElement=F(),B()(zt.Z,Zt),zt.Z&&zt.Z.locals&&zt.Z.locals;const Ut=(0,$.Z)(Ft,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"timeslot"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.startTime,expression:"newValue.startTime"}],staticClass:"timeslot--start",attrs:{type:"text",placeholder:"e.g. 08:00"},domProps:{value:t.newValue.startTime},on:{input:[function(e){e.target.composing||t.$set(t.newValue,"startTime",e.target.value)},t.update]}}),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.endTime,expression:"newValue.endTime"}],attrs:{type:"text",placeholder:"e.g. 18:00"},domProps:{value:t.newValue.endTime},on:{input:[function(e){e.target.composing||t.$set(t.newValue,"endTime",e.target.value)},t.update]}}),t._v(" "),t.valid?t._e():e("p",{staticClass:"invalid-hint"},[t._v("\n\t\t"+t._s(t.t("workflowengine","Please enter a valid time span"))+"\n\t")]),t._v(" "),e("NcSelect",{directives:[{name:"show",rawName:"v-show",value:t.valid,expression:"valid"}],attrs:{clearable:!1,options:t.timezones},on:{input:t.update},model:{value:t.newValue.timezone,callback:function(e){t.$set(t.newValue,"timezone",e)},expression:"newValue.timezone"}})],1)}),[],!1,null,"7a2ecc67",null).exports,Gt={name:"RequestURL",components:{NcEllipsisedOption:vt(),NcSelect:W()},mixins:[wt],data:()=>({newValue:"",predefinedTypes:[{icon:"icon-files-dark",id:"webdav",label:t("workflowengine","Files WebDAV")}]}),computed:{options(){return[...this.predefinedTypes,this.customValue]},placeholder(){return"matches"===this.check.operator||"!matches"===this.check.operator?"/^https\\:\\/\\/localhost\\/index\\.php$/i":"https://localhost/index.php"},matchingPredefined(){return this.predefinedTypes.find((t=>this.newValue===t.id))},isPredefined(){return!!this.matchingPredefined},customValue:()=>({icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),id:""}),currentValue(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),id:this.newValue}}},methods:{validateRegex:t=>null!==/^\/(.*)\/([gui]{0,3})$/.exec(t),setValue(t){null!==t&&(this.newValue=t.id,this.$emit("input",this.newValue))},updateCustom(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}};var $t=i(35784),It={};It.styleTagTransform=Z(),It.setAttributes=D(),It.insert=N().bind(null,"head"),It.domAPI=S(),It.insertStyleElement=F(),B()($t.Z,It),$t.Z&&$t.Z.locals&&$t.Z.locals;const qt=(0,$.Z)(Gt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a request URL"),label:"label",clearable:!1,options:t.options},on:{input:t.setValue},scopedSlots:t._u([{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}},{key:"selected-option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.currentValue.id},on:{input:t.updateCustom}})],1)}),[],!1,null,"1a72d97f",null).exports;var Wt=i(25108);const Mt=[],Lt={isLoading:!1},Yt={name:"RequestUserGroup",components:{NcSelect:W()},props:{value:{type:String,default:""},check:{type:Object,default:()=>({})}},data:()=>({groups:Mt,status:Lt}),computed:{currentValue(){return this.groups.find((t=>t.id===this.value))||null}},async mounted(){0===this.groups.length&&await this.searchAsync(""),null===this.currentValue&&await this.searchAsync(this.value)},methods:{searchAsync(t){if(!this.status.isLoading)return this.status.isLoading=!0,s.default.get((0,l.generateOcsUrl)("cloud/groups/details?limit=20&search={searchQuery}",{searchQuery:t})).then((t=>{t.data.ocs.data.groups.forEach((t=>{this.addGroup({id:t.id,displayname:t.displayname})})),this.status.isLoading=!1}),(t=>{Wt.error("Error while loading group list",t.response)}))},addGroup(t){-1===this.groups.findIndex((e=>e.id===t.id))&&this.groups.push(t)}}};var Ht=i(32062),Jt={};Jt.styleTagTransform=Z(),Jt.setAttributes=D(),Jt.insert=N().bind(null,"head"),Jt.domAPI=S(),Jt.insertStyleElement=F(),B()(Ht.Z,Jt),Ht.Z&&Ht.Z.locals&&Ht.Z.locals;const Qt=(0,$.Z)(Yt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,loading:t.status.isLoading&&0===t.groups.length,options:t.groups,clearable:!1,label:"displayname","track-by":"id"},on:{"search-change":t.searchAsync,input:e=>t.$emit("input",e.id)}})],1)}),[],!1,null,"07a6a476",null).exports,Kt=[...Bt,{class:"OCA\\WorkflowEngine\\Check\\RequestURL",name:t("workflowengine","Request URL"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:qt},{class:"OCA\\WorkflowEngine\\Check\\RequestTime",name:t("workflowengine","Request time"),operators:[{operator:"in",name:t("workflowengine","between")},{operator:"!in",name:t("workflowengine","not between")}],component:Ut},{class:"OCA\\WorkflowEngine\\Check\\RequestUserAgent",name:t("workflowengine","Request user agent"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Nt},{class:"OCA\\WorkflowEngine\\Check\\UserGroupMembership",name:t("workflowengine","User group membership"),operators:[{operator:"is",name:t("workflowengine","is member of")},{operator:"!is",name:t("workflowengine","is not member of")}],component:Qt}];window.OCA.WorkflowEngine=Object.assign({},OCA.WorkflowEngine,{registerCheck(t){p.commit("addPluginCheck",t)},registerOperator(t){p.commit("addPluginOperator",t)}}),Kt.forEach((t=>window.OCA.WorkflowEngine.registerCheck(t))),o.default.use(a.ZP),o.default.prototype.t=t,new(o.default.extend(mt))({store:p}).$mount("#workflowengine")},12704:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".check[data-v-e3633862]{display:flex;flex-wrap:wrap;align-items:flex-start;width:100%;padding-right:20px}.check>*[data-v-e3633862]:not(.close){width:180px}.check>.comparator[data-v-e3633862]{min-width:200px;width:200px}.check>.option[data-v-e3633862]{min-width:260px;width:260px;min-height:48px}.check>.option>input[type=text][data-v-e3633862]{min-height:48px}.check>.v-select[data-v-e3633862],.check>.button-vue[data-v-e3633862],.check>input[type=text][data-v-e3633862]{margin-right:5px;margin-bottom:5px}input[type=text][data-v-e3633862]{margin:0}.invalid[data-v-e3633862]{border-color:var(--color-error) !important}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Check.vue"],names:[],mappings:"AACA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,UAAA,CACA,kBAAA,CAEA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CACA,eAAA,CAEA,iDACC,eAAA,CAGF,+GAGC,gBAAA,CACA,iBAAA,CAGF,kCACC,QAAA,CAED,0BACC,0CAAA",sourcesContent:["\n.check {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: flex-start; // to not stretch components vertically\n\twidth: 100%;\n\tpadding-right: 20px;\n\n\t& > *:not(.close) {\n\t\twidth: 180px;\n\t}\n\t& > .comparator {\n\t\tmin-width: 200px;\n\t\twidth: 200px;\n\t}\n\t& > .option {\n\t\tmin-width: 260px;\n\t\twidth: 260px;\n\t\tmin-height: 48px;\n\n\t\t& > input[type=text] {\n\t\t\tmin-height: 48px;\n\t\t}\n\t}\n\t& > .v-select,\n\t& > .button-vue,\n\t& > input[type=text] {\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\t}\n}\ninput[type=text] {\n\tmargin: 0;\n}\n.invalid {\n\tborder-color: var(--color-error) !important;\n}\n"],sourceRoot:""}]);const r=s},4643:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".v-select[data-v-1a11f354],input[type=text][data-v-1a11f354]{width:100%}input[type=text][data-v-1a11f354]{min-height:48px}.option__icon[data-v-1a11f354],.option__icon-img[data-v-1a11f354]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__icon-img[data-v-1a11f354]{text-align:center}.option__title[data-v-1a11f354]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue"],names:[],mappings:"AACA,6DAEC,UAAA,CAGD,kCACC,eAAA,CAGD,kEAEC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,mCACC,iBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA",sourcesContent:["\n.v-select,\ninput[type='text'] {\n\twidth: 100%;\n}\n\ninput[type=text] {\n\tmin-height: 48px;\n}\n\n.option__icon,\n.option__icon-img {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n\n.option__icon-img {\n\ttext-align: center;\n}\n\n.option__title {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]);const r=s},5487:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".timeslot[data-v-7a2ecc67]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-7a2ecc67]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-7a2ecc67] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-7a2ecc67]{width:50%;margin:0;margin-bottom:5px;min-height:48px}.timeslot input[type=text].timeslot--start[data-v-7a2ecc67]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-7a2ecc67]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue"],names:[],mappings:"AACA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CACA,eAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA",sourcesContent:["\n.timeslot {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tflex-wrap: wrap;\n\tmax-width: 180px;\n\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\tborder: 1px solid transparent;\n\t}\n\n\tinput[type=text] {\n\t\twidth: 50%;\n\t\tmargin: 0;\n\t\tmargin-bottom: 5px;\n\t\tmin-height: 48px;\n\n\t\t&.timeslot--start {\n\t\t\tmargin-right: 5px;\n\t\t\twidth: calc(50% - 5px);\n\t\t}\n\t}\n\n\t.invalid-hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const r=s},35784:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".v-select[data-v-1a72d97f],input[type=text][data-v-1a72d97f]{width:100%}input[type=text][data-v-1a72d97f]{min-height:48px}.option__icon[data-v-1a72d97f]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__title[data-v-1a72d97f]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue"],names:[],mappings:"AACA,6DAEC,UAAA,CAED,kCACC,eAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA",sourcesContent:["\n.v-select,\ninput[type='text'] {\n\twidth: 100%;\n}\ninput[type='text'] {\n\tmin-height: 48px;\n}\n\n.option__icon {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n\n.option__title {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]);const r=s},53667:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".event[data-v-1825d70e]{margin-bottom:5px}.isComplex img[data-v-1825d70e]{vertical-align:text-top}.isComplex span[data-v-1825d70e]{padding-top:2px;display:inline-block}.multiselect[data-v-1825d70e]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-1825d70e] .multiselect__single{display:flex}.multiselect[data-v-1825d70e]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-1825d70e] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-1825d70e]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-1825d70e]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-1825d70e]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-1825d70e]{font-weight:900}.option__icon[data-v-1825d70e]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-1825d70e],.eventlist .text[data-v-1825d70e]{vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Event.vue"],names:[],mappings:"AACA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA",sourcesContent:["\n.event {\n\tmargin-bottom: 5px;\n}\n.isComplex {\n\timg {\n\t\tvertical-align: text-top;\n\t}\n\tspan {\n\t\tpadding-top: 2px;\n\t\tdisplay: inline-block;\n\t}\n}\n.multiselect {\n\twidth: 100%;\n\tmax-width: 550px;\n\tmargin-top: 4px;\n}\n.multiselect::v-deep .multiselect__single {\n\tdisplay: flex;\n}\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\tborder: 1px solid transparent;\n}\n\n.multiselect::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\theight: auto;\n\tmin-height: 34px;\n}\n\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\tbackground-image: var(--icon-triangle-s-dark);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right center;\n}\n\ninput {\n\tborder: 1px solid transparent;\n}\n\n.option__title {\n\tmargin-left: 5px;\n\tcolor: var(--color-main-text);\n}\n.option__title_single {\n\tfont-weight: 900;\n}\n\n.option__icon {\n\twidth: 16px;\n\theight: 16px;\n\tfilter: var(--background-invert-if-dark);\n}\n\n.eventlist img,\n.eventlist .text {\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]);const r=s},67767:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".actions__item[data-v-a0480332]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-a0480332]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-a0480332]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-a0480332]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-a0480332],small[data-v-a0480332]{padding:6px;display:block}h3[data-v-a0480332]{margin:0;padding:0;font-weight:600}small[data-v-a0480332]{font-size:10pt;flex-grow:1}.colored[data-v-a0480332]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-a0480332],.colored:not(.more) small[data-v-a0480332]{color:var(--color-primary-text)}.actions__item[data-v-a0480332]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-a0480332]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-a0480332]{padding:0}.actions__item:not(.colored) .icon[data-v-a0480332]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-a0480332]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-a0480332]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA",sourcesContent:[".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]);const r=s},91372:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".buttons[data-v-3def8966]{display:flex;justify-content:end}.buttons button[data-v-3def8966]{margin-left:5px}.buttons button[data-v-3def8966]:last-child{margin-right:10px}.error-message[data-v-3def8966]{float:right;margin-right:10px}.flow-icon[data-v-3def8966]{width:44px}.rule[data-v-3def8966]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{flex-grow:1;min-height:100px;max-width:920px}.rule .action[data-v-3def8966]{max-width:400px;position:relative}.rule .icon-confirm[data-v-3def8966]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-3def8966],.action p[data-v-3def8966]{min-height:34px;display:flex}.trigger p>span[data-v-3def8966],.action p>span[data-v-3def8966]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-3def8966],.action p .multiselect[data-v-3def8966]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-3def8966]{padding-top:3px}.trigger p[data-v-3def8966]:last-child{padding-top:8px}.check--add[data-v-3def8966]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-3def8966],.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{width:100%;max-width:100%}.rule .flow-icon[data-v-3def8966]{display:none}}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Rule.vue"],names:[],mappings:"AAEA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DAEC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAEF,uCACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA",sourcesContent:["\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: end;\n\n\tbutton {\n\t\tmargin-left: 5px;\n\t}\n\tbutton:last-child{\n\t\tmargin-right: 10px;\n\t}\n}\n\n.error-message {\n\tfloat: right;\n\tmargin-right: 10px;\n}\n\n.flow-icon {\n\twidth: 44px;\n}\n\n.rule {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-left: 5px solid var(--color-primary-element);\n\n\t.trigger,\n\t.action {\n\t\tflex-grow: 1;\n\t\tmin-height: 100px;\n\t\tmax-width: 920px;\n\t}\n\t.action {\n\t\tmax-width: 400px;\n\t\tposition: relative;\n\t}\n\t.icon-confirm {\n\t\tbackground-position: right 27px;\n\t\tpadding-right: 20px;\n\t\tmargin-right: 20px;\n\t}\n}\n.trigger p, .action p {\n\tmin-height: 34px;\n\tdisplay: flex;\n\n\t& > span {\n\t\tmin-width: 50px;\n\t\ttext-align: right;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-right: 10px;\n\t\tpadding-top: 6px;\n\t}\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 300px;\n\t}\n}\n.trigger p:first-child span {\n\t\tpadding-top: 3px;\n}\n.trigger p:last-child {\n\t\tpadding-top: 8px;\n}\n\n.check--add {\n\tbackground-position: 7px center;\n\tbackground-color: transparent;\n\tpadding-left: 6px;\n\tmargin: 0;\n\twidth: 180px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-text-maxcontrast);\n\tfont-weight: normal;\n\ttext-align: left;\n\tfont-size: 1em;\n}\n\n@media (max-width:1400px) {\n\t.rule {\n\t\t&, .trigger, .action {\n\t\t\twidth: 100%;\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.flow-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const r=s},86504:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,"#workflowengine[data-v-4e25e34d]{border-bottom:1px solid var(--color-border)}.section[data-v-4e25e34d]{max-width:100vw}.section h2.configured-flows[data-v-4e25e34d]{margin-top:50px;margin-bottom:0}.actions[data-v-4e25e34d]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-4e25e34d]{max-width:280px;flex-basis:250px}.actions__more[data-v-4e25e34d]{margin-bottom:10px}.slide-enter-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-4e25e34d],.slide-leave[data-v-4e25e34d]{max-height:500px;overflow:hidden}.slide-enter[data-v-4e25e34d],.slide-leave-to[data-v-4e25e34d]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-4e25e34d]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-4e25e34d]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-4e25e34d]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-4e25e34d]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-4e25e34d],small[data-v-4e25e34d]{padding:6px;display:block}h3[data-v-4e25e34d]{margin:0;padding:0;font-weight:600}small[data-v-4e25e34d]{font-size:10pt;flex-grow:1}.colored[data-v-4e25e34d]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-4e25e34d],.colored:not(.more) small[data-v-4e25e34d]{color:var(--color-primary-text)}.actions__item[data-v-4e25e34d]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-4e25e34d]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-4e25e34d]{padding:0}.actions__item:not(.colored) .icon[data-v-4e25e34d]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-4e25e34d]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-4e25e34d]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-4e25e34d]{background-color:var(--color-background-dark)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Workflow.vue","webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AACA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCxDD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDfD,qCACC,6CAAA",sourcesContent:['\n#workflowengine {\n\tborder-bottom: 1px solid var(--color-border);\n}\n.section {\n\tmax-width: 100vw;\n\n\th2.configured-flows {\n\t\tmargin-top: 50px;\n\t\tmargin-bottom: 0;\n\t}\n}\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tmax-width: 1200px;\n\t.actions__item {\n\t\tmax-width: 280px;\n\t\tflex-basis: 250px;\n\t}\n}\n.actions__more {\n\tmargin-bottom: 10px;\n}\n\n.slide-enter-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: ease-in;\n\t-webkit-transition-timing-function: ease-in;\n\t-o-transition-timing-function: ease-in;\n\ttransition-timing-function: ease-in;\n}\n\n.slide-leave-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.slide-enter-to, .slide-leave {\n\tmax-height: 500px;\n\toverflow: hidden;\n}\n\n.slide-enter, .slide-leave-to {\n\toverflow: hidden;\n\tmax-height: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n}\n\n@import "./../styles/operation";\n\n.actions__item.more {\n\tbackground-color: var(--color-background-dark);\n}\n',".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]);const r=s},47892:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,"\n.v-select[data-v-003881d4],\ninput[type='text'][data-v-003881d4] {\n\twidth: 100%;\n}\ninput[type='text'][data-v-003881d4] {\n\tmin-height: 48px;\n}\n.option__icon[data-v-003881d4] {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n.option__title[data-v-003881d4] {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue"],names:[],mappings:";AAmJA;;CAEA,WAAA;AACA;AACA;CACA,gBAAA;AACA;AAEA;CACA,qBAAA;CACA,eAAA;CACA,2BAAA;CACA,sBAAA;AACA;AAEA;CACA,oBAAA;CACA,wBAAA;CACA,sBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:clearable=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ id: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ id: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.id)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.v-select,\n\tinput[type='text'] {\n\t\twidth: 100%;\n\t}\n\tinput[type='text'] {\n\t\tmin-height: 48px;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: center;\n\t\tvertical-align: middle;\n\t}\n\n\t.option__title {\n\t\tdisplay: inline-flex;\n\t\twidth: calc(100% - 36px);\n\t\tvertical-align: middle;\n\t}\n</style>\n"],sourceRoot:""}]);const r=s},32062:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,"\n.v-select[data-v-07a6a476] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue"],names:[],mappings:";AA4GA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:clearable=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n.v-select {\n\twidth: 100%;\n}\n</style>\n"],sourceRoot:""}]);const r=s},46700:(t,e,n)=>{var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var e=a(t);return n(e)}function a(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=a,t.exports=o,o.id=46700}},i={};function o(t){var e=i[t];if(void 0!==e)return e.exports;var a=i[t]={id:t,loaded:!1,exports:{}};return n[t].call(a.exports,a,a.exports,o),a.loaded=!0,a.exports}o.m=n,e=[],o.O=(t,n,i,a)=>{if(!n){var s=1/0;for(d=0;d<e.length;d++){n=e[d][0],i=e[d][1],a=e[d][2];for(var r=!0,l=0;l<n.length;l++)(!1&a||s>=a)&&Object.keys(o.O).every((t=>o.O[t](n[l])))?n.splice(l--,1):(r=!1,a<s&&(s=a));if(r){e.splice(d--,1);var c=i();void 0!==c&&(t=c)}}return t}a=a||0;for(var d=e.length;d>0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,i,a]},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),o.j=8318,(()=>{o.b=document.baseURI||self.location.href;var t={8318:0};o.O.j=e=>0===t[e];var e=(e,n)=>{var i,a,s=n[0],r=n[1],l=n[2],c=0;if(s.some((e=>0!==t[e]))){for(i in r)o.o(r,i)&&(o.m[i]=r[i]);if(l)var d=l(o)}for(e&&e(n);c<s.length;c++)a=s[c],o.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return o.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),o.nc=void 0;var a=o.O(void 0,[7874],(()=>o(71374)));a=o.O(a)})(); -//# sourceMappingURL=workflowengine-workflowengine.js.map?v=36374eb3e7c8d56d5827
\ No newline at end of file +(()=>{var e,n={71374:(e,n,i)=>{"use strict";var o=i(20144),a=i(20629),s=i(4820),r=i(79954),l=i(79753);const c=0===(0,r.j)("workflowengine","scope")?"global":"user",d=t=>(0,l.generateOcsUrl)("apps/workflowengine/api/v1/workflows/{scopeValue}",{scopeValue:c})+t+"?format=json";var A=i(10128);i(65509),o.default.use(a.ZP);const p=new a.yh({state:{rules:[],scope:(0,r.j)("workflowengine","scope"),appstoreEnabled:(0,r.j)("workflowengine","appstoreenabled"),operations:(0,r.j)("workflowengine","operators"),plugins:o.default.observable({checks:{},operators:{}}),entities:(0,r.j)("workflowengine","entities"),events:(0,r.j)("workflowengine","entities").map((t=>t.events.map((e=>({id:"".concat(t.id,"::").concat(e.eventName),entity:t,...e}))))).flat(),checks:(0,r.j)("workflowengine","checks")},mutations:{addRule(t,e){t.rules.push({...e,valid:!0})},updateRule(t,e){const n=t.rules.findIndex((t=>e.id===t.id)),i=Object.assign({},e);o.default.set(t.rules,n,i)},removeRule(t,e){const n=t.rules.findIndex((t=>e.id===t.id));t.rules.splice(n,1)},addPluginCheck(t,e){o.default.set(t.plugins.checks,e.class,e)},addPluginOperator(t,e){e=Object.assign({color:"var(--color-primary-element)"},e,t.operations[e.id]||{}),void 0!==t.operations[e.id]&&o.default.set(t.operations,e.id,e)}},actions:{async fetchRules(t){const{data:e}=await s.default.get(d(""));Object.values(e.ocs.data).flat().forEach((e=>{t.commit("addRule",e)}))},createNewRule(t,e){let n=null,i=[];!1===e.isComplex&&""===e.fixedEntity&&(n=t.state.entities.find((t=>e.entities&&e.entities[0]===t.id)),n=n||Object.values(t.state.entities)[0],i=[n.events[0].eventName]),t.commit("addRule",{id:-(new Date).getTime(),class:e.id,entity:n?n.id:e.fixedEntity,events:i,name:"",checks:[{class:null,operator:null,value:""}],operation:e.operation||""})},updateRule(t,e){t.commit("updateRule",{...e,events:"string"==typeof e.events?JSON.parse(e.events):e.events})},removeRule(t,e){t.commit("removeRule",e)},async pushUpdateRule(t,e){let n;0===t.state.scope&&await(0,A.confirmPassword)(),n=e.id<0?await s.default.post(d(""),e):await s.default.put(d("/".concat(e.id)),e),o.default.set(e,"id",n.data.ocs.data.id),t.commit("updateRule",e)},async deleteRule(t,e){await(0,A.confirmPassword)(),await s.default.delete(d("/".concat(e.id))),t.commit("removeRule",e)},setValid(t,e){let{rule:n,valid:i}=e;n.valid=i,t.commit("updateRule",n)}},getters:{getRules:t=>t.rules.filter((e=>void 0!==t.operations[e.class])).sort(((t,e)=>t.id-e.id||e.class-t.class)),getOperationForRule:t=>e=>t.operations[e.class],getEntityForOperation:t=>e=>t.entities.find((t=>e.fixedEntity===t.id)),getEventsForOperation:t=>e=>t.events,getChecksForEntity:t=>e=>Object.values(t.checks).filter((t=>t.supportedEntities.indexOf(e)>-1||0===t.supportedEntities.length)).map((e=>t.plugins.checks[e.id])).reduce(((t,e)=>(t[e.class]=e,t)),{})}});var u=i(15168),m=i.n(u),h=i(12945),g=i.n(h),C=i(45400),f=i.n(C),v=i(10861),w=i.n(v),x=i(39429),k=i(80419),b=i(82675),_=i(98266),y=i.n(_),j=i(64024);const O={name:"Event",components:{NcMultiselect:y()},props:{rule:{type:Object,required:!0}},computed:{entity(){return this.$store.getters.getEntityForOperation(this.operation)},operation(){return this.$store.getters.getOperationForRule(this.rule)},allEvents(){return this.$store.getters.getEventsForOperation(this.operation)},currentEvent(){return this.allEvents.filter((t=>t.entity.id===this.rule.entity&&-1!==this.rule.events.indexOf(t.eventName)))}},methods:{updateEvent(e){if(0===e.length)return void(0,j.K2)(t("workflowengine","At least one event must be selected"));const n=this.rule.entity,i=e.map((t=>t.entity.id)).filter(((t,e,n)=>n.indexOf(t)===e));let o=null;o=i.length>1?i.filter((t=>t!==n))[0]:i[0],this.$set(this.rule,"entity",o),this.$set(this.rule,"events",e.filter((t=>t.entity.id===o)).map((t=>t.eventName))),this.$emit("update",this.rule)}}};var E=i(93379),B=i.n(E),R=i(7795),S=i.n(R),V=i(90569),N=i.n(V),T=i(3565),D=i.n(T),P=i(19216),F=i.n(P),z=i(44589),Z=i.n(z),U=i(53667),G={};G.styleTagTransform=Z(),G.setAttributes=D(),G.insert=N().bind(null,"head"),G.domAPI=S(),G.insertStyleElement=F(),B()(U.Z,G),U.Z&&U.Z.locals&&U.Z.locals;var $=i(51900);const I=(0,$.Z)(O,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"event"},[t.operation.isComplex&&""!==t.operation.fixedEntity?e("div",{staticClass:"isComplex"},[e("img",{staticClass:"option__icon",attrs:{src:t.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(t.operation.triggerHint))])]):e("NcMultiselect",{attrs:{value:t.currentEvent,options:t.allEvents,"track-by":"id",multiple:!0,"auto-limit":!1,disabled:t.allEvents.length<=1},on:{input:t.updateEvent},scopedSlots:t._u([{key:"selection",fn:function(n){let{values:i,isOpen:o}=n;return[i.length&&!o?e("div",{staticClass:"eventlist"},[e("img",{staticClass:"option__icon",attrs:{src:i[0].entity.icon,alt:""}}),t._v(" "),t._l(i,(function(n,o){return e("span",{key:n.id,staticClass:"text option__title option__title_single"},[t._v(t._s(n.displayName)+" "),o+1<i.length?e("span",[t._v(", ")]):t._e()])}))],2):t._e()]}},{key:"option",fn:function(n){return[e("img",{staticClass:"option__icon",attrs:{src:n.option.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.displayName))])]}}])})],1)}),[],!1,null,"1825d70e",null).exports;var q=i(36456),W=i.n(q),M=i(2649),L=i.n(M);const Y={name:"Check",components:{NcActionButton:f(),NcActions:g(),NcSelect:W(),CloseIcon:b.default},directives:{ClickOutside:L()},props:{check:{type:Object,required:!0},rule:{type:Object,required:!0}},data:()=>({deleteVisible:!1,currentOption:null,currentOperator:null,options:[],valid:!1}),computed:{checks(){return this.$store.getters.getChecksForEntity(this.rule.entity)},operators(){if(!this.currentOption)return[];const t=this.checks[this.currentOption.class].operators;return"function"==typeof t?t(this.check):t},currentComponent(){return this.currentOption?this.checks[this.currentOption.class].component:[]},valuePlaceholder(){return this.currentOption&&this.currentOption.placeholder?this.currentOption.placeholder(this.check):""}},watch:{"check.operator"(){this.validate()}},mounted(){this.options=Object.values(this.checks),this.currentOption=this.checks[this.check.class],this.currentOperator=this.operators.find((t=>t.operator===this.check.operator)),null===this.check.class&&this.$nextTick((()=>this.$refs.checkSelector.$el.focus())),this.validate()},methods:{showDelete(){this.deleteVisible=!0},hideDelete(){this.deleteVisible=!1},validate(){this.valid=!0,this.currentOption&&this.currentOption.validate&&(this.valid=!!this.currentOption.validate(this.check)),this.check.invalid=!this.valid,this.$emit("validate",this.valid)},updateCheck(){const t=this.operators.findIndex((t=>this.check.operator===t.operator));this.check.class===this.currentOption.class&&-1!==t||(this.currentOperator=this.operators[0]),this.check.class=this.currentOption.class,this.check.operator=this.currentOperator.operator,this.validate(),this.$emit("update",this.check)}}};var H=i(12704),J={};J.styleTagTransform=Z(),J.setAttributes=D(),J.insert=N().bind(null,"head"),J.domAPI=S(),J.insertStyleElement=F(),B()(H.Z,J),H.Z&&H.Z.locals&&H.Z.locals;const Q=(0,$.Z)(Y,(function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideDelete,expression:"hideDelete"}],staticClass:"check",on:{click:t.showDelete}},[e("NcSelect",{ref:"checkSelector",attrs:{options:t.options,label:"name","track-by":"class",clearable:!1,placeholder:t.t("workflowengine","Select a filter")},on:{input:t.updateCheck},model:{value:t.currentOption,callback:function(e){t.currentOption=e},expression:"currentOption"}}),t._v(" "),e("NcSelect",{staticClass:"comparator",attrs:{disabled:!t.currentOption,options:t.operators,label:"name","track-by":"operator",clearable:!1,placeholder:t.t("workflowengine","Select a comparator")},on:{input:t.updateCheck},model:{value:t.currentOperator,callback:function(e){t.currentOperator=e},expression:"currentOperator"}}),t._v(" "),t.currentOperator&&t.currentComponent?e(t.currentOption.component,{tag:"component",staticClass:"option",attrs:{disabled:!t.currentOption,check:t.check},on:{input:t.updateCheck,valid:function(e){(t.valid=!0)&&t.validate()},invalid:function(e){!(t.valid=!1)&&t.validate()}},model:{value:t.check.value,callback:function(e){t.$set(t.check,"value",e)},expression:"check.value"}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.check.value,expression:"check.value"}],staticClass:"option",class:{invalid:!t.valid},attrs:{type:"text",disabled:!t.currentOption,placeholder:t.valuePlaceholder},domProps:{value:t.check.value},on:{input:[function(e){e.target.composing||t.$set(t.check,"value",e.target.value)},t.updateCheck]}}),t._v(" "),t.deleteVisible||!t.currentOption?e("NcActions",[e("NcActionButton",{attrs:{title:t.t("workflowengine","Remove filter")},on:{click:function(e){return t.$emit("remove")}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("CloseIcon",{attrs:{size:20}})]},proxy:!0}],null,!1,2428343285)})],1):t._e()],1)}),[],!1,null,"e3633862",null).exports,K={name:"Operation",components:{NcButton:w()},props:{operation:{type:Object,required:!0},colored:{type:Boolean,default:!0}}};var X=i(67767),tt={};tt.styleTagTransform=Z(),tt.setAttributes=D(),tt.insert=N().bind(null,"head"),tt.domAPI=S(),tt.insertStyleElement=F(),B()(X.Z,tt),X.Z&&X.Z.locals&&X.Z.locals;const et=(0,$.Z)(K,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"actions__item",class:{colored:t.colored},style:{backgroundColor:t.colored?t.operation.color:"transparent"}},[e("div",{staticClass:"icon",class:t.operation.iconClass,style:{backgroundImage:t.operation.iconClass?"":"url(".concat(t.operation.icon,")")}}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.operation.name))]),t._v(" "),e("small",[t._v(t._s(t.operation.description))]),t._v(" "),t.colored?e("NcButton",[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Add new flow"))+"\n\t\t")]):t._e()],1),t._v(" "),e("div",{staticClass:"actions__item_options"},[t._t("default")],2)])}),[],!1,null,"a0480332",null).exports;var nt=i(25108);const it={name:"Rule",components:{ArrowRight:x.default,Check:Q,CheckMark:k.default,Close:b.default,Event:I,NcActionButton:f(),NcActions:g(),NcButton:w(),Operation:et},directives:{Tooltip:m()},props:{rule:{type:Object,required:!0}},data(){return{editing:!1,checks:[],error:null,dirty:this.rule.id<0,originalRule:null}},computed:{operation(){return this.$store.getters.getOperationForRule(this.rule)},ruleStatus(){return this.error||!this.rule.valid||0===this.rule.checks.length||this.rule.checks.some((t=>!0===t.invalid))?{title:t("workflowengine","The configuration is invalid"),icon:"Close",type:"warning",tooltip:{placement:"bottom",show:!0,content:this.error}}:this.dirty?{title:t("workflowengine","Save"),icon:"ArrowRight",type:"primary"}:{title:t("workflowengine","Active"),icon:"CheckMark",type:"success"}},lastCheckComplete(){const t=this.rule.checks[this.rule.checks.length-1];return void 0===t||null!==t.class}},mounted(){this.originalRule=JSON.parse(JSON.stringify(this.rule))},methods:{async updateOperation(t){this.$set(this.rule,"operation",t),await this.updateRule()},validate(t){this.error=null,this.$store.dispatch("updateRule",this.rule)},updateRule(){this.dirty||(this.dirty=!0),this.error=null,this.$store.dispatch("updateRule",this.rule)},async saveRule(){try{await this.$store.dispatch("pushUpdateRule",this.rule),this.dirty=!1,this.error=null,this.originalRule=JSON.parse(JSON.stringify(this.rule))}catch(t){nt.error("Failed to save operation"),this.error=t.response.data.ocs.meta.message}},async deleteRule(){try{await this.$store.dispatch("deleteRule",this.rule)}catch(t){nt.error("Failed to delete operation"),this.error=t.response.data.ocs.meta.message}},cancelRule(){this.rule.id<0?this.$store.dispatch("removeRule",this.rule):(this.$store.dispatch("updateRule",this.originalRule),this.originalRule=JSON.parse(JSON.stringify(this.rule)),this.dirty=!1)},async removeCheck(t){const e=this.rule.checks.findIndex((e=>e===t));e>-1&&this.$delete(this.rule.checks,e),this.$store.dispatch("updateRule",this.rule)},onAddFilter(){this.rule.checks.push({class:null,operator:null,value:""})}}};var ot=i(91372),at={};at.styleTagTransform=Z(),at.setAttributes=D(),at.insert=N().bind(null,"head"),at.domAPI=S(),at.insertStyleElement=F(),B()(ot.Z,at),ot.Z&&ot.Z.locals&&ot.Z.locals;const st=(0,$.Z)(it,(function(){var t=this,e=t._self._c;return t.operation?e("div",{staticClass:"section rule",style:{borderLeftColor:t.operation.color||""}},[e("div",{staticClass:"trigger"},[e("p",[e("span",[t._v(t._s(t.t("workflowengine","When")))]),t._v(" "),e("Event",{attrs:{rule:t.rule},on:{update:t.updateRule}})],1),t._v(" "),t._l(t.rule.checks,(function(n,i){return e("p",{key:i},[e("span",[t._v(t._s(t.t("workflowengine","and")))]),t._v(" "),e("Check",{attrs:{check:n,rule:t.rule},on:{update:t.updateRule,validate:t.validate,remove:function(e){return t.removeCheck(n)}}})],1)})),t._v(" "),e("p",[e("span"),t._v(" "),t.lastCheckComplete?e("input",{staticClass:"check--add",attrs:{type:"button",value:t.t("workflowengine","Add a new filter")},on:{click:t.onAddFilter}}):t._e()])],2),t._v(" "),e("div",{staticClass:"flow-icon icon-confirm"}),t._v(" "),e("div",{staticClass:"action"},[e("Operation",{attrs:{operation:t.operation,colored:!1}},[t.operation.options?e(t.operation.options,{tag:"component",on:{input:t.updateOperation},model:{value:t.rule.operation,callback:function(e){t.$set(t.rule,"operation",e)},expression:"rule.operation"}}):t._e()],1),t._v(" "),e("div",{staticClass:"buttons"},[t.rule.id<-1||t.dirty?e("NcButton",{on:{click:t.cancelRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Cancel"))+"\n\t\t\t")]):t.dirty?t._e():e("NcButton",{on:{click:t.deleteRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Delete"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:t.ruleStatus.type},on:{click:t.saveRule},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.ruleStatus.icon,{tag:"component",attrs:{size:20}})]},proxy:!0}],null,!1,2383918876)},[t._v("\n\t\t\t\t"+t._s(t.ruleStatus.title)+"\n\t\t\t")])],1),t._v(" "),t.error?e("p",{staticClass:"error-message"},[t._v("\n\t\t\t"+t._s(t.error)+"\n\t\t")]):t._e()],1)]):t._e()}),[],!1,null,"3def8966",null).exports;var rt=i(13299),lt=i.n(rt),ct=i(23873),dt=i(20404);const At={name:"Workflow",components:{NcButton:w(),MenuDown:dt.Z,MenuUp:ct.Z,Operation:et,Rule:st,NcSettingsSection:lt()},data:()=>({showMoreOperations:!1,appstoreUrl:(0,l.generateUrl)("settings/apps/workflow"),workflowDocUrl:(0,r.j)("workflowengine","doc-url")}),computed:{...(0,a.Se)({rules:"getRules"}),...(0,a.rn)({appstoreEnabled:"appstoreEnabled",scope:"scope",operations:"operations"}),hasMoreOperations(){return Object.keys(this.operations).length>3},getMainOperations(){return this.showMoreOperations?Object.values(this.operations):Object.values(this.operations).slice(0,3)},showAppStoreHint(){return 0===this.scope&&this.appstoreEnabled&&OC.isUserAdmin()}},mounted(){this.$store.dispatch("fetchRules")},methods:{createNewRule(t){this.$store.dispatch("createNewRule",t)}}};var pt=i(86504),ut={};ut.styleTagTransform=Z(),ut.setAttributes=D(),ut.insert=N().bind(null,"head"),ut.domAPI=S(),ut.insertStyleElement=F(),B()(pt.Z,ut),pt.Z&&pt.Z.locals&&pt.Z.locals;const mt=(0,$.Z)(At,(function(){var t=this,e=t._self._c;return e("div",{attrs:{id:"workflowengine"}},[e("NcSettingsSection",{attrs:{title:t.t("workflowengine","Available flows"),"doc-url":t.workflowDocUrl}},[0===t.scope?e("p",{staticClass:"settings-hint"},[e("a",{attrs:{href:"https://nextcloud.com/developer/"}},[t._v(t._s(t.t("workflowengine","For details on how to write your own flow, check out the development documentation.")))])]):t._e(),t._v(" "),e("transition-group",{staticClass:"actions",attrs:{name:"slide",tag:"div"}},[t._l(t.getMainOperations,(function(n){return e("Operation",{key:n.id,attrs:{operation:n},nativeOn:{click:function(e){return t.createNewRule(n)}}})})),t._v(" "),t.showAppStoreHint?e("a",{key:"add",staticClass:"actions__item colored more",attrs:{href:t.appstoreUrl}},[e("div",{staticClass:"icon icon-add"}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.t("workflowengine","More flows")))]),t._v(" "),e("small",[t._v(t._s(t.t("workflowengine","Browse the App Store")))])])]):t._e()],2),t._v(" "),t.hasMoreOperations?e("div",{staticClass:"actions__more"},[e("NcButton",{on:{click:function(e){t.showMoreOperations=!t.showMoreOperations}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.showMoreOperations?e("MenuUp",{attrs:{size:20}}):e("MenuDown",{attrs:{size:20}})]},proxy:!0}],null,!1,3801522717)},[t._v("\n\t\t\t\t"+t._s(t.showMoreOperations?t.t("workflowengine","Show less"):t.t("workflowengine","Show more"))+"\n\t\t\t")])],1):t._e(),t._v(" "),0===t.scope?e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Configured flows"))+"\n\t\t")]):e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Your flows"))+"\n\t\t")])],1),t._v(" "),t.rules.length>0?e("transition-group",{attrs:{name:"slide"}},t._l(t.rules,(function(t){return e("Rule",{key:t.id,attrs:{rule:t}})})),1):t._e()],1)}),[],!1,null,"4e25e34d",null).exports,ht=/^\/(.*)\/([gui]{0,3})$/,gt=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(3[0-2]|[1-2][0-9]|[1-9])$/,Ct=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/;var ft=i(94179),vt=i.n(ft);const wt={props:{value:{type:String,default:""},check:{type:Object,default:()=>({})}},data:()=>({newValue:""}),watch:{value:{immediate:!0,handler(t){this.updateInternalValue(t)}}},methods:{updateInternalValue(t){this.newValue=t}}},xt={name:"FileMimeType",components:{NcEllipsisedOption:vt(),NcSelect:W()},mixins:[wt],data:()=>({predefinedTypes:[{icon:"icon-folder",label:t("workflowengine","Folder"),id:"httpd/unix-directory"},{icon:"icon-picture",label:t("workflowengine","Images"),id:"/image\\/.*/"},{iconUrl:(0,l.imagePath)("core","filetypes/x-office-document"),label:t("workflowengine","Office documents"),id:"/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/"},{iconUrl:(0,l.imagePath)("core","filetypes/application-pdf"),label:t("workflowengine","PDF documents"),id:"application/pdf"}]}),computed:{options(){return[...this.predefinedTypes,this.customValue]},isPredefined(){return!!this.predefinedTypes.find((t=>this.newValue===t.id))},customValue:()=>({icon:"icon-settings-dark",label:t("workflowengine","Custom MIME type"),id:""}),currentValue(){return this.predefinedTypes.find((t=>this.newValue===t.id))||{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),id:this.newValue}}},methods:{validateRegex:t=>null!==/^\/(.*)\/([gui]{0,3})$/.exec(t),setValue(t){null!==t&&(this.newValue=t.id,this.$emit("input",this.newValue))},updateCustom(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}};var kt=i(4643),bt={};bt.styleTagTransform=Z(),bt.setAttributes=D(),bt.insert=N().bind(null,"head"),bt.domAPI=S(),bt.insertStyleElement=F(),B()(kt.Z,bt),kt.Z&&kt.Z.locals&&kt.Z.locals;const _t=(0,$.Z)(xt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a file type"),label:"label",options:t.options,clearable:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"option",fn:function(n){return[n.icon?e("span",{staticClass:"option__icon",class:n.icon}):e("span",{staticClass:"option__icon-img"},[e("img",{attrs:{src:n.iconUrl,alt:""}})]),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}},{key:"selected-option",fn:function(n){return[n.icon?e("span",{staticClass:"option__icon",class:n.icon}):e("span",{staticClass:"option__icon-img"},[e("img",{attrs:{src:n.iconUrl,alt:""}})]),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.t("workflowengine","e.g. httpd/unix-directory")},domProps:{value:t.currentValue.id},on:{input:t.updateCustom}})],1)}),[],!1,null,"1a11f354",null).exports;var yt=i(11677);const jt={name:"FileSystemTag",components:{NcSelectTags:i.n(yt)()},props:{value:{type:String,default:""}},data:()=>({newValue:[]}),watch:{value(){this.updateValue()}},beforeMount(){this.updateValue()},methods:{updateValue(){""!==this.value?this.newValue=parseInt(this.value):this.newValue=null},update(){this.$emit("input",this.newValue||"")}}},Ot=(0,$.Z)(jt,(function(){var t=this;return(0,t._self._c)("NcSelectTags",{attrs:{multiple:!1},on:{input:t.update},model:{value:t.newValue,callback:function(e){t.newValue=e},expression:"newValue"}})}),[],!1,null,"3bb09106",null).exports,Et=()=>[{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")},{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")}],Bt=[{class:"OCA\\WorkflowEngine\\Check\\FileName",name:t("workflowengine","File name"),operators:Et,placeholder:t=>"matches"===t.operator||"!matches"===t.operator?"/^dummy-.+$/i":"filename.txt",validate:t=>{return"matches"!==t.operator&&"!matches"!==t.operator||!!(e=t.value)&&null!==ht.exec(e);var e}},{class:"OCA\\WorkflowEngine\\Check\\FileMimeType",name:t("workflowengine","File MIME type"),operators:Et,component:_t},{class:"OCA\\WorkflowEngine\\Check\\FileSize",name:t("workflowengine","File size (upload)"),operators:[{operator:"less",name:t("workflowengine","less")},{operator:"!greater",name:t("workflowengine","less or equals")},{operator:"!less",name:t("workflowengine","greater or equals")},{operator:"greater",name:t("workflowengine","greater")}],placeholder:t=>"5 MB",validate:t=>!!t.value&&null!==t.value.match(/^[0-9]+[ ]?[kmgt]?b$/i)},{class:"OCA\\WorkflowEngine\\Check\\RequestRemoteAddress",name:t("workflowengine","Request remote address"),operators:[{operator:"matchesIPv4",name:t("workflowengine","matches IPv4")},{operator:"!matchesIPv4",name:t("workflowengine","does not match IPv4")},{operator:"matchesIPv6",name:t("workflowengine","matches IPv6")},{operator:"!matchesIPv6",name:t("workflowengine","does not match IPv6")}],placeholder:t=>"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?"::1/128":"127.0.0.1/32",validate:t=>{return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?!!(e=t.value)&&null!==Ct.exec(e):function(t){return!!t&&null!==gt.exec(t)}(t.value);var e}},{class:"OCA\\WorkflowEngine\\Check\\FileSystemTags",name:t("workflowengine","File system tag"),operators:[{operator:"is",name:t("workflowengine","is tagged with")},{operator:"!is",name:t("workflowengine","is not tagged with")}],component:Ot}],Rt={name:"RequestUserAgent",components:{NcEllipsisedOption:vt(),NcSelect:W()},mixins:[wt],data:()=>({newValue:"",predefinedTypes:[{id:"android",label:t("workflowengine","Android client"),icon:"icon-phone"},{id:"ios",label:t("workflowengine","iOS client"),icon:"icon-phone"},{id:"desktop",label:t("workflowengine","Desktop client"),icon:"icon-desktop"},{id:"mail",label:t("workflowengine","Thunderbird & Outlook addons"),icon:"icon-mail"}]}),computed:{options(){return[...this.predefinedTypes,this.customValue]},matchingPredefined(){return this.predefinedTypes.find((t=>this.newValue===t.id))},isPredefined(){return!!this.matchingPredefined},customValue:()=>({icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),id:""}),currentValue(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),id:this.newValue}}},methods:{validateRegex:t=>null!==/^\/(.*)\/([gui]{0,3})$/.exec(t),setValue(t){null!==t&&(this.newValue=t.id,this.$emit("input",this.newValue))},updateCustom(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}};var St=i(47892),Vt={};Vt.styleTagTransform=Z(),Vt.setAttributes=D(),Vt.insert=N().bind(null,"head"),Vt.domAPI=S(),Vt.insertStyleElement=F(),B()(St.Z,Vt),St.Z&&St.Z.locals&&St.Z.locals;const Nt=(0,$.Z)(Rt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a user agent"),label:"label",options:t.options,clearable:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}},{key:"selected-option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text"},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"003881d4",null).exports;var Tt=i(80008),Dt=i.n(Tt);const Pt=Dt().tz.names(),Ft={name:"RequestTime",components:{NcSelect:W()},mixins:[wt],props:{value:{type:String,default:""}},data:()=>({timezones:Pt,valid:!1,newValue:{startTime:null,endTime:null,timezone:Dt().tz.guess()}}),mounted(){this.validate()},methods:{updateInternalValue(t){try{const e=JSON.parse(t);2===e.length&&(this.newValue={startTime:e[0].split(" ",2)[0],endTime:e[1].split(" ",2)[0],timezone:e[0].split(" ",2)[1]})}catch(t){}},validate(){return this.valid=this.newValue.startTime&&null!==this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&this.newValue.endTime&&null!==this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&null!==Dt().tz.zone(this.newValue.timezone),this.valid?this.$emit("valid"):this.$emit("invalid"),this.valid},update(){if(null===this.newValue.timezone&&(this.newValue.timezone=Dt().tz.guess()),this.validate()){const t='["'.concat(this.newValue.startTime," ").concat(this.newValue.timezone,'","').concat(this.newValue.endTime," ").concat(this.newValue.timezone,'"]');this.$emit("input",t)}}}};var zt=i(5487),Zt={};Zt.styleTagTransform=Z(),Zt.setAttributes=D(),Zt.insert=N().bind(null,"head"),Zt.domAPI=S(),Zt.insertStyleElement=F(),B()(zt.Z,Zt),zt.Z&&zt.Z.locals&&zt.Z.locals;const Ut=(0,$.Z)(Ft,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"timeslot"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.startTime,expression:"newValue.startTime"}],staticClass:"timeslot--start",attrs:{type:"text",placeholder:"e.g. 08:00"},domProps:{value:t.newValue.startTime},on:{input:[function(e){e.target.composing||t.$set(t.newValue,"startTime",e.target.value)},t.update]}}),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.endTime,expression:"newValue.endTime"}],attrs:{type:"text",placeholder:"e.g. 18:00"},domProps:{value:t.newValue.endTime},on:{input:[function(e){e.target.composing||t.$set(t.newValue,"endTime",e.target.value)},t.update]}}),t._v(" "),t.valid?t._e():e("p",{staticClass:"invalid-hint"},[t._v("\n\t\t"+t._s(t.t("workflowengine","Please enter a valid time span"))+"\n\t")]),t._v(" "),e("NcSelect",{directives:[{name:"show",rawName:"v-show",value:t.valid,expression:"valid"}],attrs:{clearable:!1,options:t.timezones},on:{input:t.update},model:{value:t.newValue.timezone,callback:function(e){t.$set(t.newValue,"timezone",e)},expression:"newValue.timezone"}})],1)}),[],!1,null,"7a2ecc67",null).exports,Gt={name:"RequestURL",components:{NcEllipsisedOption:vt(),NcSelect:W()},mixins:[wt],data:()=>({newValue:"",predefinedTypes:[{icon:"icon-files-dark",id:"webdav",label:t("workflowengine","Files WebDAV")}]}),computed:{options(){return[...this.predefinedTypes,this.customValue]},placeholder(){return"matches"===this.check.operator||"!matches"===this.check.operator?"/^https\\:\\/\\/localhost\\/index\\.php$/i":"https://localhost/index.php"},matchingPredefined(){return this.predefinedTypes.find((t=>this.newValue===t.id))},isPredefined(){return!!this.matchingPredefined},customValue:()=>({icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),id:""}),currentValue(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),id:this.newValue}}},methods:{validateRegex:t=>null!==/^\/(.*)\/([gui]{0,3})$/.exec(t),setValue(t){null!==t&&(this.newValue=t.id,this.$emit("input",this.newValue))},updateCustom(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}};var $t=i(35784),It={};It.styleTagTransform=Z(),It.setAttributes=D(),It.insert=N().bind(null,"head"),It.domAPI=S(),It.insertStyleElement=F(),B()($t.Z,It),$t.Z&&$t.Z.locals&&$t.Z.locals;const qt=(0,$.Z)(Gt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a request URL"),label:"label",clearable:!1,options:t.options},on:{input:t.setValue},scopedSlots:t._u([{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}},{key:"selected-option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.icon}),t._v(" "),e("span",{staticClass:"option__title"},[e("NcEllipsisedOption",{attrs:{name:String(n.label)}})],1)]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.currentValue.id},on:{input:t.updateCustom}})],1)}),[],!1,null,"1a72d97f",null).exports;var Wt=i(25108);const Mt=[],Lt={isLoading:!1},Yt={name:"RequestUserGroup",components:{NcSelect:W()},props:{value:{type:String,default:""},check:{type:Object,default:()=>({})}},data:()=>({groups:Mt,status:Lt}),computed:{currentValue(){return this.groups.find((t=>t.id===this.value))||null}},async mounted(){0===this.groups.length&&await this.searchAsync(""),null===this.currentValue&&await this.searchAsync(this.value)},methods:{searchAsync(t){if(!this.status.isLoading)return this.status.isLoading=!0,s.default.get((0,l.generateOcsUrl)("cloud/groups/details?limit=20&search={searchQuery}",{searchQuery:t})).then((t=>{t.data.ocs.data.groups.forEach((t=>{this.addGroup({id:t.id,displayname:t.displayname})})),this.status.isLoading=!1}),(t=>{Wt.error("Error while loading group list",t.response)}))},addGroup(t){-1===this.groups.findIndex((e=>e.id===t.id))&&this.groups.push(t)}}};var Ht=i(32062),Jt={};Jt.styleTagTransform=Z(),Jt.setAttributes=D(),Jt.insert=N().bind(null,"head"),Jt.domAPI=S(),Jt.insertStyleElement=F(),B()(Ht.Z,Jt),Ht.Z&&Ht.Z.locals&&Ht.Z.locals;const Qt=(0,$.Z)(Yt,(function(){var t=this,e=t._self._c;return e("div",[e("NcSelect",{attrs:{value:t.currentValue,loading:t.status.isLoading&&0===t.groups.length,options:t.groups,clearable:!1,label:"displayname","track-by":"id"},on:{"search-change":t.searchAsync,input:e=>t.$emit("input",e.id)}})],1)}),[],!1,null,"07a6a476",null).exports,Kt=[...Bt,{class:"OCA\\WorkflowEngine\\Check\\RequestURL",name:t("workflowengine","Request URL"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:qt},{class:"OCA\\WorkflowEngine\\Check\\RequestTime",name:t("workflowengine","Request time"),operators:[{operator:"in",name:t("workflowengine","between")},{operator:"!in",name:t("workflowengine","not between")}],component:Ut},{class:"OCA\\WorkflowEngine\\Check\\RequestUserAgent",name:t("workflowengine","Request user agent"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Nt},{class:"OCA\\WorkflowEngine\\Check\\UserGroupMembership",name:t("workflowengine","User group membership"),operators:[{operator:"is",name:t("workflowengine","is member of")},{operator:"!is",name:t("workflowengine","is not member of")}],component:Qt}];window.OCA.WorkflowEngine=Object.assign({},OCA.WorkflowEngine,{registerCheck(t){p.commit("addPluginCheck",t)},registerOperator(t){p.commit("addPluginOperator",t)}}),Kt.forEach((t=>window.OCA.WorkflowEngine.registerCheck(t))),o.default.use(a.ZP),o.default.prototype.t=t,new(o.default.extend(mt))({store:p}).$mount("#workflowengine")},12704:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".check[data-v-e3633862]{display:flex;flex-wrap:wrap;align-items:flex-start;width:100%;padding-right:20px}.check>*[data-v-e3633862]:not(.close){width:180px}.check>.comparator[data-v-e3633862]{min-width:200px;width:200px}.check>.option[data-v-e3633862]{min-width:260px;width:260px;min-height:48px}.check>.option>input[type=text][data-v-e3633862]{min-height:48px}.check>.v-select[data-v-e3633862],.check>.button-vue[data-v-e3633862],.check>input[type=text][data-v-e3633862]{margin-right:5px;margin-bottom:5px}input[type=text][data-v-e3633862]{margin:0}.invalid[data-v-e3633862]{border-color:var(--color-error) !important}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Check.vue"],names:[],mappings:"AACA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,UAAA,CACA,kBAAA,CAEA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CACA,eAAA,CAEA,iDACC,eAAA,CAGF,+GAGC,gBAAA,CACA,iBAAA,CAGF,kCACC,QAAA,CAED,0BACC,0CAAA",sourcesContent:["\n.check {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: flex-start; // to not stretch components vertically\n\twidth: 100%;\n\tpadding-right: 20px;\n\n\t& > *:not(.close) {\n\t\twidth: 180px;\n\t}\n\t& > .comparator {\n\t\tmin-width: 200px;\n\t\twidth: 200px;\n\t}\n\t& > .option {\n\t\tmin-width: 260px;\n\t\twidth: 260px;\n\t\tmin-height: 48px;\n\n\t\t& > input[type=text] {\n\t\t\tmin-height: 48px;\n\t\t}\n\t}\n\t& > .v-select,\n\t& > .button-vue,\n\t& > input[type=text] {\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\t}\n}\ninput[type=text] {\n\tmargin: 0;\n}\n.invalid {\n\tborder-color: var(--color-error) !important;\n}\n"],sourceRoot:""}]);const r=s},4643:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".v-select[data-v-1a11f354],input[type=text][data-v-1a11f354]{width:100%}input[type=text][data-v-1a11f354]{min-height:48px}.option__icon[data-v-1a11f354],.option__icon-img[data-v-1a11f354]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__icon-img[data-v-1a11f354]{text-align:center}.option__title[data-v-1a11f354]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue"],names:[],mappings:"AACA,6DAEC,UAAA,CAGD,kCACC,eAAA,CAGD,kEAEC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,mCACC,iBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA",sourcesContent:["\n.v-select,\ninput[type='text'] {\n\twidth: 100%;\n}\n\ninput[type=text] {\n\tmin-height: 48px;\n}\n\n.option__icon,\n.option__icon-img {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n\n.option__icon-img {\n\ttext-align: center;\n}\n\n.option__title {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]);const r=s},5487:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".timeslot[data-v-7a2ecc67]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-7a2ecc67]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-7a2ecc67] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-7a2ecc67]{width:50%;margin:0;margin-bottom:5px;min-height:48px}.timeslot input[type=text].timeslot--start[data-v-7a2ecc67]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-7a2ecc67]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue"],names:[],mappings:"AACA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CACA,eAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA",sourcesContent:["\n.timeslot {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tflex-wrap: wrap;\n\tmax-width: 180px;\n\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\tborder: 1px solid transparent;\n\t}\n\n\tinput[type=text] {\n\t\twidth: 50%;\n\t\tmargin: 0;\n\t\tmargin-bottom: 5px;\n\t\tmin-height: 48px;\n\n\t\t&.timeslot--start {\n\t\t\tmargin-right: 5px;\n\t\t\twidth: calc(50% - 5px);\n\t\t}\n\t}\n\n\t.invalid-hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const r=s},35784:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".v-select[data-v-1a72d97f],input[type=text][data-v-1a72d97f]{width:100%}input[type=text][data-v-1a72d97f]{min-height:48px}.option__icon[data-v-1a72d97f]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__title[data-v-1a72d97f]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue"],names:[],mappings:"AACA,6DAEC,UAAA,CAED,kCACC,eAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA",sourcesContent:["\n.v-select,\ninput[type='text'] {\n\twidth: 100%;\n}\ninput[type='text'] {\n\tmin-height: 48px;\n}\n\n.option__icon {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n\n.option__title {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]);const r=s},53667:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".event[data-v-1825d70e]{margin-bottom:5px}.isComplex img[data-v-1825d70e]{vertical-align:text-top}.isComplex span[data-v-1825d70e]{padding-top:2px;display:inline-block}.multiselect[data-v-1825d70e]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-1825d70e] .multiselect__single{display:flex}.multiselect[data-v-1825d70e]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-1825d70e] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-1825d70e]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-1825d70e]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-1825d70e]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-1825d70e]{font-weight:900}.option__icon[data-v-1825d70e]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-1825d70e],.eventlist .text[data-v-1825d70e]{vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Event.vue"],names:[],mappings:"AACA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA",sourcesContent:["\n.event {\n\tmargin-bottom: 5px;\n}\n.isComplex {\n\timg {\n\t\tvertical-align: text-top;\n\t}\n\tspan {\n\t\tpadding-top: 2px;\n\t\tdisplay: inline-block;\n\t}\n}\n.multiselect {\n\twidth: 100%;\n\tmax-width: 550px;\n\tmargin-top: 4px;\n}\n.multiselect::v-deep .multiselect__single {\n\tdisplay: flex;\n}\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\tborder: 1px solid transparent;\n}\n\n.multiselect::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\theight: auto;\n\tmin-height: 34px;\n}\n\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\tbackground-image: var(--icon-triangle-s-dark);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right center;\n}\n\ninput {\n\tborder: 1px solid transparent;\n}\n\n.option__title {\n\tmargin-left: 5px;\n\tcolor: var(--color-main-text);\n}\n.option__title_single {\n\tfont-weight: 900;\n}\n\n.option__icon {\n\twidth: 16px;\n\theight: 16px;\n\tfilter: var(--background-invert-if-dark);\n}\n\n.eventlist img,\n.eventlist .text {\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]);const r=s},67767:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".actions__item[data-v-a0480332]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-a0480332]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-a0480332]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-a0480332]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-a0480332],small[data-v-a0480332]{padding:6px;display:block}h3[data-v-a0480332]{margin:0;padding:0;font-weight:600}small[data-v-a0480332]{font-size:10pt;flex-grow:1}.colored[data-v-a0480332]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-a0480332],.colored:not(.more) small[data-v-a0480332]{color:var(--color-primary-element-text)}.actions__item[data-v-a0480332]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-a0480332]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-a0480332]{padding:0}.actions__item:not(.colored) .icon[data-v-a0480332]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-a0480332]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-a0480332]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,uCAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA",sourcesContent:[".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-element-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]);const r=s},91372:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,".buttons[data-v-3def8966]{display:flex;justify-content:end}.buttons button[data-v-3def8966]{margin-left:5px}.buttons button[data-v-3def8966]:last-child{margin-right:10px}.error-message[data-v-3def8966]{float:right;margin-right:10px}.flow-icon[data-v-3def8966]{width:44px}.rule[data-v-3def8966]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{flex-grow:1;min-height:100px;max-width:920px}.rule .action[data-v-3def8966]{max-width:400px;position:relative}.rule .icon-confirm[data-v-3def8966]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-3def8966],.action p[data-v-3def8966]{min-height:34px;display:flex}.trigger p>span[data-v-3def8966],.action p>span[data-v-3def8966]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-3def8966],.action p .multiselect[data-v-3def8966]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-3def8966]{padding-top:3px}.trigger p[data-v-3def8966]:last-child{padding-top:8px}.check--add[data-v-3def8966]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-3def8966],.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{width:100%;max-width:100%}.rule .flow-icon[data-v-3def8966]{display:none}}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Rule.vue"],names:[],mappings:"AAEA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DAEC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAEF,uCACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA",sourcesContent:["\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: end;\n\n\tbutton {\n\t\tmargin-left: 5px;\n\t}\n\tbutton:last-child{\n\t\tmargin-right: 10px;\n\t}\n}\n\n.error-message {\n\tfloat: right;\n\tmargin-right: 10px;\n}\n\n.flow-icon {\n\twidth: 44px;\n}\n\n.rule {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-left: 5px solid var(--color-primary-element);\n\n\t.trigger,\n\t.action {\n\t\tflex-grow: 1;\n\t\tmin-height: 100px;\n\t\tmax-width: 920px;\n\t}\n\t.action {\n\t\tmax-width: 400px;\n\t\tposition: relative;\n\t}\n\t.icon-confirm {\n\t\tbackground-position: right 27px;\n\t\tpadding-right: 20px;\n\t\tmargin-right: 20px;\n\t}\n}\n.trigger p, .action p {\n\tmin-height: 34px;\n\tdisplay: flex;\n\n\t& > span {\n\t\tmin-width: 50px;\n\t\ttext-align: right;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-right: 10px;\n\t\tpadding-top: 6px;\n\t}\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 300px;\n\t}\n}\n.trigger p:first-child span {\n\t\tpadding-top: 3px;\n}\n.trigger p:last-child {\n\t\tpadding-top: 8px;\n}\n\n.check--add {\n\tbackground-position: 7px center;\n\tbackground-color: transparent;\n\tpadding-left: 6px;\n\tmargin: 0;\n\twidth: 180px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-text-maxcontrast);\n\tfont-weight: normal;\n\ttext-align: left;\n\tfont-size: 1em;\n}\n\n@media (max-width:1400px) {\n\t.rule {\n\t\t&, .trigger, .action {\n\t\t\twidth: 100%;\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.flow-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const r=s},86504:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,"#workflowengine[data-v-4e25e34d]{border-bottom:1px solid var(--color-border)}.section[data-v-4e25e34d]{max-width:100vw}.section h2.configured-flows[data-v-4e25e34d]{margin-top:50px;margin-bottom:0}.actions[data-v-4e25e34d]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-4e25e34d]{max-width:280px;flex-basis:250px}.actions__more[data-v-4e25e34d]{margin-bottom:10px}.slide-enter-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-4e25e34d],.slide-leave[data-v-4e25e34d]{max-height:500px;overflow:hidden}.slide-enter[data-v-4e25e34d],.slide-leave-to[data-v-4e25e34d]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-4e25e34d]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-4e25e34d]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-4e25e34d]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-4e25e34d]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-4e25e34d],small[data-v-4e25e34d]{padding:6px;display:block}h3[data-v-4e25e34d]{margin:0;padding:0;font-weight:600}small[data-v-4e25e34d]{font-size:10pt;flex-grow:1}.colored[data-v-4e25e34d]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-4e25e34d],.colored:not(.more) small[data-v-4e25e34d]{color:var(--color-primary-element-text)}.actions__item[data-v-4e25e34d]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-4e25e34d]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-4e25e34d]{padding:0}.actions__item:not(.colored) .icon[data-v-4e25e34d]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-4e25e34d]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-4e25e34d]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-4e25e34d]{background-color:var(--color-background-dark)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Workflow.vue","webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AACA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCxDD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,uCAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDfD,qCACC,6CAAA",sourcesContent:['\n#workflowengine {\n\tborder-bottom: 1px solid var(--color-border);\n}\n.section {\n\tmax-width: 100vw;\n\n\th2.configured-flows {\n\t\tmargin-top: 50px;\n\t\tmargin-bottom: 0;\n\t}\n}\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tmax-width: 1200px;\n\t.actions__item {\n\t\tmax-width: 280px;\n\t\tflex-basis: 250px;\n\t}\n}\n.actions__more {\n\tmargin-bottom: 10px;\n}\n\n.slide-enter-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: ease-in;\n\t-webkit-transition-timing-function: ease-in;\n\t-o-transition-timing-function: ease-in;\n\ttransition-timing-function: ease-in;\n}\n\n.slide-leave-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.slide-enter-to, .slide-leave {\n\tmax-height: 500px;\n\toverflow: hidden;\n}\n\n.slide-enter, .slide-leave-to {\n\toverflow: hidden;\n\tmax-height: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n}\n\n@import "./../styles/operation";\n\n.actions__item.more {\n\tbackground-color: var(--color-background-dark);\n}\n',".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-element-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]);const r=s},47892:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,"\n.v-select[data-v-003881d4],\ninput[type='text'][data-v-003881d4] {\n\twidth: 100%;\n}\ninput[type='text'][data-v-003881d4] {\n\tmin-height: 48px;\n}\n.option__icon[data-v-003881d4] {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n.option__title[data-v-003881d4] {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue"],names:[],mappings:";AAmJA;;CAEA,WAAA;AACA;AACA;CACA,gBAAA;AACA;AAEA;CACA,qBAAA;CACA,eAAA;CACA,2BAAA;CACA,sBAAA;AACA;AAEA;CACA,oBAAA;CACA,wBAAA;CACA,sBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:clearable=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ id: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ id: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.id)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.v-select,\n\tinput[type='text'] {\n\t\twidth: 100%;\n\t}\n\tinput[type='text'] {\n\t\tmin-height: 48px;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: center;\n\t\tvertical-align: middle;\n\t}\n\n\t.option__title {\n\t\tdisplay: inline-flex;\n\t\twidth: calc(100% - 36px);\n\t\tvertical-align: middle;\n\t}\n</style>\n"],sourceRoot:""}]);const r=s},32062:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});var i=n(87537),o=n.n(i),a=n(23645),s=n.n(a)()(o());s.push([t.id,"\n.v-select[data-v-07a6a476] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue"],names:[],mappings:";AA4GA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:clearable=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n.v-select {\n\twidth: 100%;\n}\n</style>\n"],sourceRoot:""}]);const r=s},46700:(t,e,n)=>{var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var e=a(t);return n(e)}function a(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=a,t.exports=o,o.id=46700}},i={};function o(t){var e=i[t];if(void 0!==e)return e.exports;var a=i[t]={id:t,loaded:!1,exports:{}};return n[t].call(a.exports,a,a.exports,o),a.loaded=!0,a.exports}o.m=n,e=[],o.O=(t,n,i,a)=>{if(!n){var s=1/0;for(d=0;d<e.length;d++){n=e[d][0],i=e[d][1],a=e[d][2];for(var r=!0,l=0;l<n.length;l++)(!1&a||s>=a)&&Object.keys(o.O).every((t=>o.O[t](n[l])))?n.splice(l--,1):(r=!1,a<s&&(s=a));if(r){e.splice(d--,1);var c=i();void 0!==c&&(t=c)}}return t}a=a||0;for(var d=e.length;d>0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[n,i,a]},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),o.j=8318,(()=>{o.b=document.baseURI||self.location.href;var t={8318:0};o.O.j=e=>0===t[e];var e=(e,n)=>{var i,a,s=n[0],r=n[1],l=n[2],c=0;if(s.some((e=>0!==t[e]))){for(i in r)o.o(r,i)&&(o.m[i]=r[i]);if(l)var d=l(o)}for(e&&e(n);c<s.length;c++)a=s[c],o.o(t,a)&&t[a]&&t[a][0](),t[a]=0;return o.O(d)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),o.nc=void 0;var a=o.O(void 0,[7874],(()=>o(71374)));a=o.O(a)})(); +//# sourceMappingURL=workflowengine-workflowengine.js.map?v=59f70fe7e6299bdf97b3
\ No newline at end of file diff --git a/dist/workflowengine-workflowengine.js.map b/dist/workflowengine-workflowengine.js.map index 8102f8c6b5f..dda2e956cdc 100644 --- a/dist/workflowengine-workflowengine.js.map +++ b/dist/workflowengine-workflowengine.js.map @@ -1 +1 @@ -{"version":3,"file":"workflowengine-workflowengine.js?v=36374eb3e7c8d56d5827","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/workflowengine/src/helpers/api.js","webpack:///nextcloud/apps/workflowengine/src/store.js","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?de47","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5144","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5115","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?3d5a","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?bf90","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?83b4","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?3fb8","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?6918","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?3526","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?86d2","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?2d87","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?e711","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?6c53","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?979d","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?17b8","webpack:///nextcloud/apps/workflowengine/src/helpers/validators.js","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?f663","webpack:///nextcloud/apps/workflowengine/src/mixins/valueMixin.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?0d3a","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?c385","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?acab","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?2d3e","webpack:///nextcloud/apps/workflowengine/src/components/Checks/file.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?f104","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?81d6","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?80f0","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?1af1","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?7391","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?a55a","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?7662","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?eee5","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?b56e","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f1ec","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?a319","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f6d3","webpack:///nextcloud/apps/workflowengine/src/components/Checks/index.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/request.js","webpack:///nextcloud/apps/workflowengine/src/workflowengine.js","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst scopeValue = loadState('workflowengine', 'scope') === 0 ? 'global' : 'user'\n\nconst getApiUrl = (url) => {\n\treturn generateOcsUrl('apps/workflowengine/api/v1/workflows/{scopeValue}', { scopeValue }) + url + '?format=json'\n}\n\nexport {\n\tgetApiUrl,\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport { getApiUrl } from './helpers/api.js'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.use(Vuex)\n\nconst store = new Store({\n\tstate: {\n\t\trules: [],\n\t\tscope: loadState('workflowengine', 'scope'),\n\t\tappstoreEnabled: loadState('workflowengine', 'appstoreenabled'),\n\t\toperations: loadState('workflowengine', 'operators'),\n\n\t\tplugins: Vue.observable({\n\t\t\tchecks: {},\n\t\t\toperators: {},\n\t\t}),\n\n\t\tentities: loadState('workflowengine', 'entities'),\n\t\tevents: loadState('workflowengine', 'entities')\n\t\t\t.map((entity) => entity.events.map(event => {\n\t\t\t\treturn {\n\t\t\t\t\tid: `${entity.id}::${event.eventName}`,\n\t\t\t\t\tentity,\n\t\t\t\t\t...event,\n\t\t\t\t}\n\t\t\t})).flat(),\n\t\tchecks: loadState('workflowengine', 'checks'),\n\t},\n\tmutations: {\n\t\taddRule(state, rule) {\n\t\t\tstate.rules.push({ ...rule, valid: true })\n\t\t},\n\t\tupdateRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tconst newRule = Object.assign({}, rule)\n\t\t\tVue.set(state.rules, index, newRule)\n\t\t},\n\t\tremoveRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tstate.rules.splice(index, 1)\n\t\t},\n\t\taddPluginCheck(state, plugin) {\n\t\t\tVue.set(state.plugins.checks, plugin.class, plugin)\n\t\t},\n\t\taddPluginOperator(state, plugin) {\n\t\t\tplugin = Object.assign(\n\t\t\t\t{ color: 'var(--color-primary-element)' },\n\t\t\t\tplugin, state.operations[plugin.id] || {})\n\t\t\tif (typeof state.operations[plugin.id] !== 'undefined') {\n\t\t\t\tVue.set(state.operations, plugin.id, plugin)\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tasync fetchRules(context) {\n\t\t\tconst { data } = await axios.get(getApiUrl(''))\n\t\t\tObject.values(data.ocs.data).flat().forEach((rule) => {\n\t\t\t\tcontext.commit('addRule', rule)\n\t\t\t})\n\t\t},\n\t\tcreateNewRule(context, rule) {\n\t\t\tlet entity = null\n\t\t\tlet events = []\n\t\t\tif (rule.isComplex === false && rule.fixedEntity === '') {\n\t\t\t\tentity = context.state.entities.find((item) => rule.entities && rule.entities[0] === item.id)\n\t\t\t\tentity = entity || Object.values(context.state.entities)[0]\n\t\t\t\tevents = [entity.events[0].eventName]\n\t\t\t}\n\n\t\t\tcontext.commit('addRule', {\n\t\t\t\tid: -(new Date().getTime()),\n\t\t\t\tclass: rule.id,\n\t\t\t\tentity: entity ? entity.id : rule.fixedEntity,\n\t\t\t\tevents,\n\t\t\t\tname: '', // unused in the new ui, there for legacy reasons\n\t\t\t\tchecks: [\n\t\t\t\t\t{ class: null, operator: null, value: '' },\n\t\t\t\t],\n\t\t\t\toperation: rule.operation || '',\n\t\t\t})\n\t\t},\n\t\tupdateRule(context, rule) {\n\t\t\tcontext.commit('updateRule', {\n\t\t\t\t...rule,\n\t\t\t\tevents: typeof rule.events === 'string' ? JSON.parse(rule.events) : rule.events,\n\t\t\t})\n\t\t},\n\t\tremoveRule(context, rule) {\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tasync pushUpdateRule(context, rule) {\n\t\t\tif (context.state.scope === 0) {\n\t\t\t\tawait confirmPassword()\n\t\t\t}\n\t\t\tlet result\n\t\t\tif (rule.id < 0) {\n\t\t\t\tresult = await axios.post(getApiUrl(''), rule)\n\t\t\t} else {\n\t\t\t\tresult = await axios.put(getApiUrl(`/${rule.id}`), rule)\n\t\t\t}\n\t\t\tVue.set(rule, 'id', result.data.ocs.data.id)\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t\tasync deleteRule(context, rule) {\n\t\t\tawait confirmPassword()\n\t\t\tawait axios.delete(getApiUrl(`/${rule.id}`))\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tsetValid(context, { rule, valid }) {\n\t\t\trule.valid = valid\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t},\n\tgetters: {\n\t\tgetRules(state) {\n\t\t\treturn state.rules.filter((rule) => typeof state.operations[rule.class] !== 'undefined').sort((rule1, rule2) => {\n\t\t\t\treturn rule1.id - rule2.id || rule2.class - rule1.class\n\t\t\t})\n\t\t},\n\t\tgetOperationForRule(state) {\n\t\t\treturn (rule) => state.operations[rule.class]\n\t\t},\n\t\tgetEntityForOperation(state) {\n\t\t\treturn (operation) => state.entities.find((entity) => operation.fixedEntity === entity.id)\n\t\t},\n\t\tgetEventsForOperation(state) {\n\t\t\treturn (operation) => state.events\n\t\t},\n\n\t\t/**\n\t\t * Return all available checker plugins for a given entity class\n\t\t *\n\t\t * @param {object} state the store state\n\t\t * @return {Function} the available plugins\n\t\t */\n\t\tgetChecksForEntity(state) {\n\t\t\treturn (entity) => {\n\t\t\t\treturn Object.values(state.checks)\n\t\t\t\t\t.filter((check) => check.supportedEntities.indexOf(entity) > -1 || check.supportedEntities.length === 0)\n\t\t\t\t\t.map((check) => state.plugins.checks[check.id])\n\t\t\t\t\t.reduce((obj, item) => {\n\t\t\t\t\t\tobj[item.class] = item\n\t\t\t\t\t\treturn obj\n\t\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t},\n})\n\nexport default store\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"workflowengine\"}},[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('workflowengine', 'Available flows'),\"doc-url\":_vm.workflowDocUrl}},[(_vm.scope === 0)?_c('p',{staticClass:\"settings-hint\"},[_c('a',{attrs:{\"href\":\"https://nextcloud.com/developer/\"}},[_vm._v(_vm._s(_vm.t('workflowengine', 'For details on how to write your own flow, check out the development documentation.')))])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"actions\",attrs:{\"name\":\"slide\",\"tag\":\"div\"}},[_vm._l((_vm.getMainOperations),function(operation){return _c('Operation',{key:operation.id,attrs:{\"operation\":operation},nativeOn:{\"click\":function($event){return _vm.createNewRule(operation)}}})}),_vm._v(\" \"),(_vm.showAppStoreHint)?_c('a',{key:'add',staticClass:\"actions__item colored more\",attrs:{\"href\":_vm.appstoreUrl}},[_c('div',{staticClass:\"icon icon-add\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.t('workflowengine', 'More flows')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('workflowengine', 'Browse the App Store')))])])]):_vm._e()],2),_vm._v(\" \"),(_vm.hasMoreOperations)?_c('div',{staticClass:\"actions__more\"},[_c('NcButton',{on:{\"click\":function($event){_vm.showMoreOperations = !_vm.showMoreOperations}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.showMoreOperations)?_c('MenuUp',{attrs:{\"size\":20}}):_c('MenuDown',{attrs:{\"size\":20}})]},proxy:true}],null,false,3801522717)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.showMoreOperations ? _vm.t('workflowengine', 'Show less') : _vm.t('workflowengine', 'Show more'))+\"\\n\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(_vm.scope === 0)?_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Configured flows'))+\"\\n\\t\\t\")]):_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Your flows'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.rules.length > 0)?_c('transition-group',{attrs:{\"name\":\"slide\"}},_vm._l((_vm.rules),function(rule){return _c('Rule',{key:rule.id,attrs:{\"rule\":rule}})}),1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"event\">\n\t\t<div v-if=\"operation.isComplex && operation.fixedEntity !== ''\" class=\"isComplex\">\n\t\t\t<img class=\"option__icon\" :src=\"entity.icon\" alt=\"\">\n\t\t\t<span class=\"option__title option__title_single\">{{ operation.triggerHint }}</span>\n\t\t</div>\n\t\t<NcMultiselect v-else\n\t\t\t:value=\"currentEvent\"\n\t\t\t:options=\"allEvents\"\n\t\t\ttrack-by=\"id\"\n\t\t\t:multiple=\"true\"\n\t\t\t:auto-limit=\"false\"\n\t\t\t:disabled=\"allEvents.length <= 1\"\n\t\t\t@input=\"updateEvent\">\n\t\t\t<template slot=\"selection\" slot-scope=\"{ values, isOpen }\">\n\t\t\t\t<div v-if=\"values.length && !isOpen\" class=\"eventlist\">\n\t\t\t\t\t<img class=\"option__icon\" :src=\"values[0].entity.icon\" alt=\"\">\n\t\t\t\t\t<span v-for=\"(value, index) in values\" :key=\"value.id\" class=\"text option__title option__title_single\">{{ value.displayName }} <span v-if=\"index+1 < values.length\">, </span></span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<img class=\"option__icon\" :src=\"props.option.entity.icon\" alt=\"\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.displayName }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'\nimport { showWarning } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'Event',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tentity() {\n\t\t\treturn this.$store.getters.getEntityForOperation(this.operation)\n\t\t},\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\tallEvents() {\n\t\t\treturn this.$store.getters.getEventsForOperation(this.operation)\n\t\t},\n\t\tcurrentEvent() {\n\t\t\treturn this.allEvents.filter(event => event.entity.id === this.rule.entity && this.rule.events.indexOf(event.eventName) !== -1)\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateEvent(events) {\n\t\t\tif (events.length === 0) {\n\t\t\t\tshowWarning(t('workflowengine', 'At least one event must be selected'))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst existingEntity = this.rule.entity\n\t\t\tconst newEntities = events.map(event => event.entity.id).filter((value, index, self) => self.indexOf(value) === index)\n\t\t\tlet newEntity = null\n\t\t\tif (newEntities.length > 1) {\n\t\t\t\tnewEntity = newEntities.filter(entity => entity !== existingEntity)[0]\n\t\t\t} else {\n\t\t\t\tnewEntity = newEntities[0]\n\t\t\t}\n\n\t\t\tthis.$set(this.rule, 'entity', newEntity)\n\t\t\tthis.$set(this.rule, 'events', events.filter(event => event.entity.id === newEntity).map(event => event.eventName))\n\t\t\tthis.$emit('update', this.rule)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.event {\n\t\tmargin-bottom: 5px;\n\t}\n\t.isComplex {\n\t\timg {\n\t\t\tvertical-align: text-top;\n\t\t}\n\t\tspan {\n\t\t\tpadding-top: 2px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmax-width: 550px;\n\t\tmargin-top: 4px;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: flex;\n\t}\n\t.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\theight: auto;\n\t\tmin-height: 34px;\n\t}\n\n\t.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\t\tbackground-image: var(--icon-triangle-s-dark);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: right center;\n\t}\n\n\tinput {\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.option__title {\n\t\tmargin-left: 5px;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.option__title_single {\n\t\tfont-weight: 900;\n\t}\n\n\t.option__icon {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t.eventlist img,\n\t.eventlist .text {\n\t\tvertical-align: middle;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=1825d70e&scoped=true&\"\nimport script from \"./Event.vue?vue&type=script&lang=js&\"\nexport * from \"./Event.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1825d70e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"event\"},[(_vm.operation.isComplex && _vm.operation.fixedEntity !== '')?_c('div',{staticClass:\"isComplex\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":_vm.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(_vm.operation.triggerHint))])]):_c('NcMultiselect',{attrs:{\"value\":_vm.currentEvent,\"options\":_vm.allEvents,\"track-by\":\"id\",\"multiple\":true,\"auto-limit\":false,\"disabled\":_vm.allEvents.length <= 1},on:{\"input\":_vm.updateEvent},scopedSlots:_vm._u([{key:\"selection\",fn:function({ values, isOpen }){return [(values.length && !isOpen)?_c('div',{staticClass:\"eventlist\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":values[0].entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_vm._l((values),function(value,index){return _c('span',{key:value.id,staticClass:\"text option__title option__title_single\"},[_vm._v(_vm._s(value.displayName)+\" \"),(index+1 < values.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e()]}},{key:\"option\",fn:function(props){return [_c('img',{staticClass:\"option__icon\",attrs:{\"src\":props.option.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.displayName))])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideDelete),expression:\"hideDelete\"}],staticClass:\"check\",on:{\"click\":_vm.showDelete}},[_c('NcSelect',{ref:\"checkSelector\",attrs:{\"options\":_vm.options,\"label\":\"name\",\"track-by\":\"class\",\"clearable\":false,\"placeholder\":_vm.t('workflowengine', 'Select a filter')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOption),callback:function ($$v) {_vm.currentOption=$$v},expression:\"currentOption\"}}),_vm._v(\" \"),_c('NcSelect',{staticClass:\"comparator\",attrs:{\"disabled\":!_vm.currentOption,\"options\":_vm.operators,\"label\":\"name\",\"track-by\":\"operator\",\"clearable\":false,\"placeholder\":_vm.t('workflowengine', 'Select a comparator')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOperator),callback:function ($$v) {_vm.currentOperator=$$v},expression:\"currentOperator\"}}),_vm._v(\" \"),(_vm.currentOperator && _vm.currentComponent)?_c(_vm.currentOption.component,{tag:\"component\",staticClass:\"option\",attrs:{\"disabled\":!_vm.currentOption,\"check\":_vm.check},on:{\"input\":_vm.updateCheck,\"valid\":function($event){(_vm.valid=true) && _vm.validate()},\"invalid\":function($event){!(_vm.valid=false) && _vm.validate()}},model:{value:(_vm.check.value),callback:function ($$v) {_vm.$set(_vm.check, \"value\", $$v)},expression:\"check.value\"}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.check.value),expression:\"check.value\"}],staticClass:\"option\",class:{ invalid: !_vm.valid },attrs:{\"type\":\"text\",\"disabled\":!_vm.currentOption,\"placeholder\":_vm.valuePlaceholder},domProps:{\"value\":(_vm.check.value)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.check, \"value\", $event.target.value)},_vm.updateCheck]}}),_vm._v(\" \"),(_vm.deleteVisible || !_vm.currentOption)?_c('NcActions',[_c('NcActionButton',{attrs:{\"title\":_vm.t('workflowengine', 'Remove filter')},on:{\"click\":function($event){return _vm.$emit('remove')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2428343285)})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-click-outside=\"hideDelete\" class=\"check\" @click=\"showDelete\">\n\t\t<NcSelect ref=\"checkSelector\"\n\t\t\tv-model=\"currentOption\"\n\t\t\t:options=\"options\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"class\"\n\t\t\t:clearable=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a filter')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<NcSelect v-model=\"currentOperator\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:options=\"operators\"\n\t\t\tclass=\"comparator\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"operator\"\n\t\t\t:clearable=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a comparator')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<component :is=\"currentOption.component\"\n\t\t\tv-if=\"currentOperator && currentComponent\"\n\t\t\tv-model=\"check.value\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:check=\"check\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\"\n\t\t\t@valid=\"(valid=true) && validate()\"\n\t\t\t@invalid=\"!(valid=false) && validate()\" />\n\t\t<input v-else\n\t\t\tv-model=\"check.value\"\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{ invalid: !valid }\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:placeholder=\"valuePlaceholder\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\">\n\t\t<NcActions v-if=\"deleteVisible || !currentOption\">\n\t\t\t<NcActionButton :title=\"t('workflowengine', 'Remove filter')\" @click=\"$emit('remove')\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</div>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\n\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'Check',\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcSelect,\n\n\t\t// Icons\n\t\tCloseIcon,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdeleteVisible: false,\n\t\t\tcurrentOption: null,\n\t\t\tcurrentOperator: null,\n\t\t\toptions: [],\n\t\t\tvalid: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tchecks() {\n\t\t\treturn this.$store.getters.getChecksForEntity(this.rule.entity)\n\t\t},\n\t\toperators() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\tconst operators = this.checks[this.currentOption.class].operators\n\t\t\tif (typeof operators === 'function') {\n\t\t\t\treturn operators(this.check)\n\t\t\t}\n\t\t\treturn operators\n\t\t},\n\t\tcurrentComponent() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\treturn this.checks[this.currentOption.class].component\n\t\t},\n\t\tvaluePlaceholder() {\n\t\t\tif (this.currentOption && this.currentOption.placeholder) {\n\t\t\t\treturn this.currentOption.placeholder(this.check)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t},\n\twatch: {\n\t\t'check.operator'() {\n\t\t\tthis.validate()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.options = Object.values(this.checks)\n\t\tthis.currentOption = this.checks[this.check.class]\n\t\tthis.currentOperator = this.operators.find((operator) => operator.operator === this.check.operator)\n\n\t\tif (this.check.class === null) {\n\t\t\tthis.$nextTick(() => this.$refs.checkSelector.$el.focus())\n\t\t}\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tshowDelete() {\n\t\t\tthis.deleteVisible = true\n\t\t},\n\t\thideDelete() {\n\t\t\tthis.deleteVisible = false\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = true\n\t\t\tif (this.currentOption && this.currentOption.validate) {\n\t\t\t\tthis.valid = !!this.currentOption.validate(this.check)\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.invalid = !this.valid\n\t\t\tthis.$emit('validate', this.valid)\n\t\t},\n\t\tupdateCheck() {\n\t\t\tconst matchingOperator = this.operators.findIndex((operator) => this.check.operator === operator.operator)\n\t\t\tif (this.check.class !== this.currentOption.class || matchingOperator === -1) {\n\t\t\t\tthis.currentOperator = this.operators[0]\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.class = this.currentOption.class\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.operator = this.currentOperator.operator\n\n\t\t\tthis.validate()\n\n\t\t\tthis.$emit('update', this.check)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.check {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\talign-items: flex-start; // to not stretch components vertically\n\t\twidth: 100%;\n\t\tpadding-right: 20px;\n\n\t\t& > *:not(.close) {\n\t\t\twidth: 180px;\n\t\t}\n\t\t& > .comparator {\n\t\t\tmin-width: 200px;\n\t\t\twidth: 200px;\n\t\t}\n\t\t& > .option {\n\t\t\tmin-width: 260px;\n\t\t\twidth: 260px;\n\t\t\tmin-height: 48px;\n\n\t\t\t& > input[type=text] {\n\t\t\t\tmin-height: 48px;\n\t\t\t}\n\t\t}\n\t\t& > .v-select,\n\t\t& > .button-vue,\n\t\t& > input[type=text] {\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\tinput[type=text] {\n\t\tmargin: 0;\n\t}\n\t.invalid {\n\t\tborder-color: var(--color-error) !important;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=e3633862&scoped=true&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3633862\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"actions__item\" :class=\"{'colored': colored}\" :style=\"{ backgroundColor: colored ? operation.color : 'transparent' }\">\n\t\t<div class=\"icon\" :class=\"operation.iconClass\" :style=\"{ backgroundImage: operation.iconClass ? '' : `url(${operation.icon})` }\" />\n\t\t<div class=\"actions__item__description\">\n\t\t\t<h3>{{ operation.name }}</h3>\n\t\t\t<small>{{ operation.description }}</small>\n\t\t\t<NcButton v-if=\"colored\">\n\t\t\t\t{{ t('workflowengine', 'Add new flow') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div class=\"actions__item_options\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'Operation',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tprops: {\n\t\toperation: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcolored: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t@import \"./../styles/operation\";\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Operation.vue?vue&type=template&id=a0480332&scoped=true&\"\nimport script from \"./Operation.vue?vue&type=script&lang=js&\"\nexport * from \"./Operation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a0480332\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"actions__item\",class:{'colored': _vm.colored},style:({ backgroundColor: _vm.colored ? _vm.operation.color : 'transparent' })},[_c('div',{staticClass:\"icon\",class:_vm.operation.iconClass,style:({ backgroundImage: _vm.operation.iconClass ? '' : `url(${_vm.operation.icon})` })}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.operation.name))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.operation.description))]),_vm._v(\" \"),(_vm.colored)?_c('NcButton',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Add new flow'))+\"\\n\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions__item_options\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-if=\"operation\" class=\"section rule\" :style=\"{ borderLeftColor: operation.color || '' }\">\n\t\t<div class=\"trigger\">\n\t\t\t<p>\n\t\t\t\t<span>{{ t('workflowengine', 'When') }}</span>\n\t\t\t\t<Event :rule=\"rule\" @update=\"updateRule\" />\n\t\t\t</p>\n\t\t\t<p v-for=\"(check, index) in rule.checks\" :key=\"index\">\n\t\t\t\t<span>{{ t('workflowengine', 'and') }}</span>\n\t\t\t\t<Check :check=\"check\"\n\t\t\t\t\t:rule=\"rule\"\n\t\t\t\t\t@update=\"updateRule\"\n\t\t\t\t\t@validate=\"validate\"\n\t\t\t\t\t@remove=\"removeCheck(check)\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<span />\n\t\t\t\t<input v-if=\"lastCheckComplete\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"check--add\"\n\t\t\t\t\t:value=\"t('workflowengine', 'Add a new filter')\"\n\t\t\t\t\t@click=\"onAddFilter\">\n\t\t\t</p>\n\t\t</div>\n\t\t<div class=\"flow-icon icon-confirm\" />\n\t\t<div class=\"action\">\n\t\t\t<Operation :operation=\"operation\" :colored=\"false\">\n\t\t\t\t<component :is=\"operation.options\"\n\t\t\t\t\tv-if=\"operation.options\"\n\t\t\t\t\tv-model=\"rule.operation\"\n\t\t\t\t\t@input=\"updateOperation\" />\n\t\t\t</Operation>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<NcButton v-if=\"rule.id < -1 || dirty\" @click=\"cancelRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton v-else-if=\"!dirty\" @click=\"deleteRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Delete') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton :type=\"ruleStatus.type\"\n\t\t\t\t\t@click=\"saveRule\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<component :is=\"ruleStatus.icon\" :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ ruleStatus.title }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<p v-if=\"error\" class=\"error-message\">\n\t\t\t\t{{ error }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport CheckMark from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport Event from './Event.vue'\nimport Check from './Check.vue'\nimport Operation from './Operation.vue'\n\nexport default {\n\tname: 'Rule',\n\tcomponents: {\n\t\tArrowRight,\n\t\tCheck,\n\t\tCheckMark,\n\t\tClose,\n\t\tEvent,\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcButton,\n\t\tOperation,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tediting: false,\n\t\t\tchecks: [],\n\t\t\terror: null,\n\t\t\tdirty: this.rule.id < 0,\n\t\t\toriginalRule: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\truleStatus() {\n\t\t\tif (this.error || !this.rule.valid || this.rule.checks.length === 0 || this.rule.checks.some((check) => check.invalid === true)) {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: t('workflowengine', 'The configuration is invalid'),\n\t\t\t\t\ticon: 'Close',\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttooltip: { placement: 'bottom', show: true, content: this.error },\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dirty) {\n\t\t\t\treturn { title: t('workflowengine', 'Active'), icon: 'CheckMark', type: 'success' }\n\t\t\t}\n\t\t\treturn { title: t('workflowengine', 'Save'), icon: 'ArrowRight', type: 'primary' }\n\n\t\t},\n\t\tlastCheckComplete() {\n\t\t\tconst lastCheck = this.rule.checks[this.rule.checks.length - 1]\n\t\t\treturn typeof lastCheck === 'undefined' || lastCheck.class !== null\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t},\n\tmethods: {\n\t\tasync updateOperation(operation) {\n\t\t\tthis.$set(this.rule, 'operation', operation)\n\t\t\tawait this.updateRule()\n\t\t},\n\t\tvalidate(state) {\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tupdateRule() {\n\t\t\tif (!this.dirty) {\n\t\t\t\tthis.dirty = true\n\t\t\t}\n\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tasync saveRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('pushUpdateRule', this.rule)\n\t\t\t\tthis.dirty = false\n\t\t\t\tthis.error = null\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to save operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tasync deleteRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('deleteRule', this.rule)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to delete operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tcancelRule() {\n\t\t\tif (this.rule.id < 0) {\n\t\t\t\tthis.$store.dispatch('removeRule', this.rule)\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateRule', this.originalRule)\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t\tthis.dirty = false\n\t\t\t}\n\t\t},\n\n\t\tasync removeCheck(check) {\n\t\t\tconst index = this.rule.checks.findIndex(item => item === check)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.$delete(this.rule.checks, index)\n\t\t\t}\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\n\t\tonAddFilter() {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.rule.checks.push({ class: null, operator: null, value: '' })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\n\t.buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\n\t\tbutton {\n\t\t\tmargin-left: 5px;\n\t\t}\n\t\tbutton:last-child{\n\t\t\tmargin-right: 10px;\n\t\t}\n\t}\n\n\t.error-message {\n\t\tfloat: right;\n\t\tmargin-right: 10px;\n\t}\n\n\t.flow-icon {\n\t\twidth: 44px;\n\t}\n\n\t.rule {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tborder-left: 5px solid var(--color-primary-element);\n\n\t\t.trigger,\n\t\t.action {\n\t\t\tflex-grow: 1;\n\t\t\tmin-height: 100px;\n\t\t\tmax-width: 920px;\n\t\t}\n\t\t.action {\n\t\t\tmax-width: 400px;\n\t\t\tposition: relative;\n\t\t}\n\t\t.icon-confirm {\n\t\t\tbackground-position: right 27px;\n\t\t\tpadding-right: 20px;\n\t\t\tmargin-right: 20px;\n\t\t}\n\t}\n\t.trigger p, .action p {\n\t\tmin-height: 34px;\n\t\tdisplay: flex;\n\n\t\t& > span {\n\t\t\tmin-width: 50px;\n\t\t\ttext-align: right;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tpadding-right: 10px;\n\t\t\tpadding-top: 6px;\n\t\t}\n\t\t.multiselect {\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: 300px;\n\t\t}\n\t}\n\t.trigger p:first-child span {\n\t\t\tpadding-top: 3px;\n\t}\n\t.trigger p:last-child {\n\t\t\tpadding-top: 8px;\n\t}\n\n\t.check--add {\n\t\tbackground-position: 7px center;\n\t\tbackground-color: transparent;\n\t\tpadding-left: 6px;\n\t\tmargin: 0;\n\t\twidth: 180px;\n\t\tborder-radius: var(--border-radius);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tfont-weight: normal;\n\t\ttext-align: left;\n\t\tfont-size: 1em;\n\t}\n\n\t@media (max-width:1400px) {\n\t\t.rule {\n\t\t\t&, .trigger, .action {\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t.flow-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=3def8966&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3def8966\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.operation)?_c('div',{staticClass:\"section rule\",style:({ borderLeftColor: _vm.operation.color || '' })},[_c('div',{staticClass:\"trigger\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'When')))]),_vm._v(\" \"),_c('Event',{attrs:{\"rule\":_vm.rule},on:{\"update\":_vm.updateRule}})],1),_vm._v(\" \"),_vm._l((_vm.rule.checks),function(check,index){return _c('p',{key:index},[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'and')))]),_vm._v(\" \"),_c('Check',{attrs:{\"check\":check,\"rule\":_vm.rule},on:{\"update\":_vm.updateRule,\"validate\":_vm.validate,\"remove\":function($event){return _vm.removeCheck(check)}}})],1)}),_vm._v(\" \"),_c('p',[_c('span'),_vm._v(\" \"),(_vm.lastCheckComplete)?_c('input',{staticClass:\"check--add\",attrs:{\"type\":\"button\",\"value\":_vm.t('workflowengine', 'Add a new filter')},on:{\"click\":_vm.onAddFilter}}):_vm._e()])],2),_vm._v(\" \"),_c('div',{staticClass:\"flow-icon icon-confirm\"}),_vm._v(\" \"),_c('div',{staticClass:\"action\"},[_c('Operation',{attrs:{\"operation\":_vm.operation,\"colored\":false}},[(_vm.operation.options)?_c(_vm.operation.options,{tag:\"component\",on:{\"input\":_vm.updateOperation},model:{value:(_vm.rule.operation),callback:function ($$v) {_vm.$set(_vm.rule, \"operation\", $$v)},expression:\"rule.operation\"}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"buttons\"},[(_vm.rule.id < -1 || _vm.dirty)?_c('NcButton',{on:{\"click\":_vm.cancelRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Cancel'))+\"\\n\\t\\t\\t\")]):(!_vm.dirty)?_c('NcButton',{on:{\"click\":_vm.deleteRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Delete'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":_vm.ruleStatus.type},on:{\"click\":_vm.saveRule},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.ruleStatus.icon,{tag:\"component\",attrs:{\"size\":20}})]},proxy:true}],null,false,2383918876)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.ruleStatus.title)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"error-message\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\")]):_vm._e()],1)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"workflowengine\">\n\t\t<NcSettingsSection :title=\"t('workflowengine', 'Available flows')\"\n\t\t\t:doc-url=\"workflowDocUrl\">\n\t\t\t<p v-if=\"scope === 0\" class=\"settings-hint\">\n\t\t\t\t<a href=\"https://nextcloud.com/developer/\">{{ t('workflowengine', 'For details on how to write your own flow, check out the development documentation.') }}</a>\n\t\t\t</p>\n\n\t\t\t<transition-group name=\"slide\" tag=\"div\" class=\"actions\">\n\t\t\t\t<Operation v-for=\"operation in getMainOperations\"\n\t\t\t\t\t:key=\"operation.id\"\n\t\t\t\t\t:operation=\"operation\"\n\t\t\t\t\t@click.native=\"createNewRule(operation)\" />\n\n\t\t\t\t<a v-if=\"showAppStoreHint\"\n\t\t\t\t\t:key=\"'add'\"\n\t\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\t\tclass=\"actions__item colored more\">\n\t\t\t\t\t<div class=\"icon icon-add\" />\n\t\t\t\t\t<div class=\"actions__item__description\">\n\t\t\t\t\t\t<h3>{{ t('workflowengine', 'More flows') }}</h3>\n\t\t\t\t\t\t<small>{{ t('workflowengine', 'Browse the App Store') }}</small>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</transition-group>\n\n\t\t\t<div v-if=\"hasMoreOperations\" class=\"actions__more\">\n\t\t\t\t<NcButton @click=\"showMoreOperations = !showMoreOperations\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<MenuUp v-if=\"showMoreOperations\" :size=\"20\" />\n\t\t\t\t\t\t<MenuDown v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ showMoreOperations ? t('workflowengine', 'Show less') : t('workflowengine', 'Show more') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\n\t\t\t<h2 v-if=\"scope === 0\" class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Configured flows') }}\n\t\t\t</h2>\n\t\t\t<h2 v-else class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Your flows') }}\n\t\t\t</h2>\n\t\t</NcSettingsSection>\n\n\t\t<transition-group v-if=\"rules.length > 0\" name=\"slide\">\n\t\t\t<Rule v-for=\"rule in rules\" :key=\"rule.id\" :rule=\"rule\" />\n\t\t</transition-group>\n\t</div>\n</template>\n\n<script>\nimport Rule from './Rule.vue'\nimport Operation from './Operation.vue'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport { mapGetters, mapState } from 'vuex'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport MenuUp from 'vue-material-design-icons/MenuUp.vue'\nimport MenuDown from 'vue-material-design-icons/MenuDown.vue'\n\nconst ACTION_LIMIT = 3\n\nexport default {\n\tname: 'Workflow',\n\tcomponents: {\n\t\tNcButton,\n\t\tMenuDown,\n\t\tMenuUp,\n\t\tOperation,\n\t\tRule,\n\t\tNcSettingsSection,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMoreOperations: false,\n\t\t\tappstoreUrl: generateUrl('settings/apps/workflow'),\n\t\t\tworkflowDocUrl: loadState('workflowengine', 'doc-url'),\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters({\n\t\t\trules: 'getRules',\n\t\t}),\n\t\t...mapState({\n\t\t\tappstoreEnabled: 'appstoreEnabled',\n\t\t\tscope: 'scope',\n\t\t\toperations: 'operations',\n\t\t}),\n\t\thasMoreOperations() {\n\t\t\treturn Object.keys(this.operations).length > ACTION_LIMIT\n\t\t},\n\t\tgetMainOperations() {\n\t\t\tif (this.showMoreOperations) {\n\t\t\t\treturn Object.values(this.operations)\n\t\t\t}\n\t\t\treturn Object.values(this.operations).slice(0, ACTION_LIMIT)\n\t\t},\n\t\tshowAppStoreHint() {\n\t\t\treturn this.scope === 0 && this.appstoreEnabled && OC.isUserAdmin()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$store.dispatch('fetchRules')\n\t},\n\tmethods: {\n\t\tcreateNewRule(operation) {\n\t\t\tthis.$store.dispatch('createNewRule', operation)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#workflowengine {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\t.section {\n\t\tmax-width: 100vw;\n\n\t\th2.configured-flows {\n\t\t\tmargin-top: 50px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\t.actions {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 1200px;\n\t\t.actions__item {\n\t\t\tmax-width: 280px;\n\t\t\tflex-basis: 250px;\n\t\t}\n\t}\n\t.actions__more {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.slide-enter-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: ease-in;\n\t\t-webkit-transition-timing-function: ease-in;\n\t\t-o-transition-timing-function: ease-in;\n\t\ttransition-timing-function: ease-in;\n\t}\n\n\t.slide-leave-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t}\n\n\t.slide-enter-to, .slide-leave {\n\t\tmax-height: 500px;\n\t\toverflow: hidden;\n\t}\n\n\t.slide-enter, .slide-leave-to {\n\t\toverflow: hidden;\n\t\tmax-height: 0;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t}\n\n\t@import \"./../styles/operation\";\n\n\t.actions__item.more {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Workflow.vue?vue&type=template&id=4e25e34d&scoped=true&\"\nimport script from \"./Workflow.vue?vue&type=script&lang=js&\"\nexport * from \"./Workflow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e25e34d\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\nconst regexIPv4 = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|[1-2][0-9]|[1-9])$/\nconst regexIPv6 = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/\n\nconst validateRegex = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexRegex.exec(string) !== null\n}\n\nconst validateIPv4 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv4.exec(string) !== null\n}\n\nconst validateIPv6 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv6.exec(string) !== null\n}\n\nconst stringValidator = (check) => {\n\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\treturn validateRegex(check.value)\n\t}\n\treturn true\n}\n\nexport { validateRegex, stringValidator, validateIPv4, validateIPv6 }\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a file type'),\"label\":\"label\",\"options\":_vm.options,\"clearable\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [(option.icon)?_c('span',{staticClass:\"option__icon\",class:option.icon}):_c('span',{staticClass:\"option__icon-img\"},[_c('img',{attrs:{\"src\":option.iconUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(option.label)}})],1)]}},{key:\"selected-option\",fn:function(selectedOption){return [(selectedOption.icon)?_c('span',{staticClass:\"option__icon\",class:selectedOption.icon}):_c('span',{staticClass:\"option__icon-img\"},[_c('img',{attrs:{\"src\":selectedOption.iconUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(selectedOption.label)}})],1)]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.t('workflowengine', 'e.g. httpd/unix-directory')},domProps:{\"value\":_vm.currentValue.id},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst valueMixin = {\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t}\n\t},\n\twatch: {\n\t\tvalue: {\n\t\t\timmediate: true,\n\t\t\thandler(value) {\n\t\t\t\tthis.updateInternalValue(value)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\tthis.newValue = value\n\t\t},\n\t},\n}\n\nexport default valueMixin\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:clearable=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span v-if=\"option.icon\" class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span v-else class=\"option__icon-img\">\n\t\t\t\t\t<img :src=\"option.iconUrl\" alt=\"\">\n\t\t\t\t</span>\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span v-if=\"selectedOption.icon\" class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span v-else class=\"option__icon-img\">\n\t\t\t\t\t<img :src=\"selectedOption.iconUrl\" alt=\"\">\n\t\t\t\t</span>\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.id\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from './../../mixins/valueMixin.js'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tid: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tid: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tid: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tid: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.id)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom MIME type'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.id)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n.v-select,\ninput[type='text'] {\n\twidth: 100%;\n}\n\ninput[type=text] {\n\tmin-height: 48px;\n}\n\n.option__icon,\n.option__icon-img {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n\n.option__icon-img {\n\ttext-align: center;\n}\n\n.option__title {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileMimeType.vue?vue&type=template&id=1a11f354&scoped=true&\"\nimport script from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nexport * from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a11f354\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcSelectTags',{attrs:{\"multiple\":false},on:{\"input\":_vm.update},model:{value:(_vm.newValue),callback:function ($$v) {_vm.newValue=$$v},expression:\"newValue\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcSelectTags v-model=\"newValue\"\n\t\t:multiple=\"false\"\n\t\t@input=\"update\" />\n</template>\n\n<script>\nimport NcSelectTags from '@nextcloud/vue/dist/Components/NcSelectTags.js'\n\nexport default {\n\tname: 'FileSystemTag',\n\tcomponents: {\n\t\tNcSelectTags,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: [],\n\t\t}\n\t},\n\twatch: {\n\t\tvalue() {\n\t\t\tthis.updateValue()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.updateValue()\n\t},\n\tmethods: {\n\t\tupdateValue() {\n\t\t\tif (this.value !== '') {\n\t\t\t\tthis.newValue = parseInt(this.value)\n\t\t\t} else {\n\t\t\t\tthis.newValue = null\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tthis.$emit('input', this.newValue || '')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FileSystemTag.vue?vue&type=template&id=3bb09106&scoped=true&\"\nimport script from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\nexport * from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3bb09106\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { stringValidator, validateIPv4, validateIPv6 } from '../../helpers/validators.js'\nimport FileMimeType from './FileMimeType.vue'\nimport FileSystemTag from './FileSystemTag.vue'\n\nconst stringOrRegexOperators = () => {\n\treturn [\n\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t]\n}\n\nconst FileChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName',\n\t\tname: t('workflowengine', 'File name'),\n\t\toperators: stringOrRegexOperators,\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\treturn '/^dummy-.+$/i'\n\t\t\t}\n\t\t\treturn 'filename.txt'\n\t\t},\n\t\tvalidate: stringValidator,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType',\n\t\tname: t('workflowengine', 'File MIME type'),\n\t\toperators: stringOrRegexOperators,\n\t\tcomponent: FileMimeType,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize',\n\t\tname: t('workflowengine', 'File size (upload)'),\n\t\toperators: [\n\t\t\t{ operator: 'less', name: t('workflowengine', 'less') },\n\t\t\t{ operator: '!greater', name: t('workflowengine', 'less or equals') },\n\t\t\t{ operator: '!less', name: t('workflowengine', 'greater or equals') },\n\t\t\t{ operator: 'greater', name: t('workflowengine', 'greater') },\n\t\t],\n\t\tplaceholder: (check) => '5 MB',\n\t\tvalidate: (check) => check.value ? check.value.match(/^[0-9]+[ ]?[kmgt]?b$/i) !== null : false,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress',\n\t\tname: t('workflowengine', 'Request remote address'),\n\t\toperators: [\n\t\t\t{ operator: 'matchesIPv4', name: t('workflowengine', 'matches IPv4') },\n\t\t\t{ operator: '!matchesIPv4', name: t('workflowengine', 'does not match IPv4') },\n\t\t\t{ operator: 'matchesIPv6', name: t('workflowengine', 'matches IPv6') },\n\t\t\t{ operator: '!matchesIPv6', name: t('workflowengine', 'does not match IPv6') },\n\t\t],\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn '::1/128'\n\t\t\t}\n\t\t\treturn '127.0.0.1/32'\n\t\t},\n\t\tvalidate: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn validateIPv6(check.value)\n\t\t\t}\n\t\t\treturn validateIPv4(check.value)\n\t\t},\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags',\n\t\tname: t('workflowengine', 'File system tag'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is tagged with') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not tagged with') },\n\t\t],\n\t\tcomponent: FileSystemTag,\n\t},\n]\n\nexport default FileChecks\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:clearable=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ id: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ id: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.id)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.v-select,\n\tinput[type='text'] {\n\t\twidth: 100%;\n\t}\n\tinput[type='text'] {\n\t\tmin-height: 48px;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: center;\n\t\tvertical-align: middle;\n\t}\n\n\t.option__title {\n\t\tdisplay: inline-flex;\n\t\twidth: calc(100% - 36px);\n\t\tvertical-align: middle;\n\t}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserAgent.vue?vue&type=template&id=003881d4&scoped=true&\"\nimport script from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"003881d4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a user agent'),\"label\":\"label\",\"options\":_vm.options,\"clearable\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_c('span',{staticClass:\"option__icon\",class:option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(option.label)}})],1)]}},{key:\"selected-option\",fn:function(selectedOption){return [_c('span',{staticClass:\"option__icon\",class:selectedOption.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(selectedOption.label)}})],1)]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"timeslot\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.startTime),expression:\"newValue.startTime\"}],staticClass:\"timeslot--start\",attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 08:00\"},domProps:{\"value\":(_vm.newValue.startTime)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.newValue, \"startTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.endTime),expression:\"newValue.endTime\"}],attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 18:00\"},domProps:{\"value\":(_vm.newValue.endTime)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.newValue, \"endTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),(!_vm.valid)?_c('p',{staticClass:\"invalid-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Please enter a valid time span'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcSelect',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.valid),expression:\"valid\"}],attrs:{\"clearable\":false,\"options\":_vm.timezones},on:{\"input\":_vm.update},model:{value:(_vm.newValue.timezone),callback:function ($$v) {_vm.$set(_vm.newValue, \"timezone\", $$v)},expression:\"newValue.timezone\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"timeslot\">\n\t\t<input v-model=\"newValue.startTime\"\n\t\t\ttype=\"text\"\n\t\t\tclass=\"timeslot--start\"\n\t\t\tplaceholder=\"e.g. 08:00\"\n\t\t\t@input=\"update\">\n\t\t<input v-model=\"newValue.endTime\"\n\t\t\ttype=\"text\"\n\t\t\tplaceholder=\"e.g. 18:00\"\n\t\t\t@input=\"update\">\n\t\t<p v-if=\"!valid\" class=\"invalid-hint\">\n\t\t\t{{ t('workflowengine', 'Please enter a valid time span') }}\n\t\t</p>\n\t\t<NcSelect v-show=\"valid\"\n\t\t\tv-model=\"newValue.timezone\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"timezones\"\n\t\t\t@input=\"update\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport moment from 'moment-timezone'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nconst zones = moment.tz.names()\nexport default {\n\tname: 'RequestTime',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttimezones: zones,\n\t\t\tvalid: false,\n\t\t\tnewValue: {\n\t\t\t\tstartTime: null,\n\t\t\t\tendTime: null,\n\t\t\t\ttimezone: moment.tz.guess(),\n\t\t\t},\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(value)\n\t\t\t\tif (data.length === 2) {\n\t\t\t\t\tthis.newValue = {\n\t\t\t\t\t\tstartTime: data[0].split(' ', 2)[0],\n\t\t\t\t\t\tendTime: data[1].split(' ', 2)[0],\n\t\t\t\t\t\ttimezone: data[0].split(' ', 2)[1],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// ignore invalid values\n\t\t\t}\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& this.newValue.endTime && this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& moment.tz.zone(this.newValue.timezone) !== null\n\t\t\tif (this.valid) {\n\t\t\t\tthis.$emit('valid')\n\t\t\t} else {\n\t\t\t\tthis.$emit('invalid')\n\t\t\t}\n\t\t\treturn this.valid\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.newValue.timezone === null) {\n\t\t\t\tthis.newValue.timezone = moment.tz.guess()\n\t\t\t}\n\t\t\tif (this.validate()) {\n\t\t\t\tconst output = `[\"${this.newValue.startTime} ${this.newValue.timezone}\",\"${this.newValue.endTime} ${this.newValue.timezone}\"]`\n\t\t\t\tthis.$emit('input', output)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.timeslot {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 180px;\n\n\t\t.multiselect {\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\twidth: 50%;\n\t\t\tmargin: 0;\n\t\t\tmargin-bottom: 5px;\n\t\t\tmin-height: 48px;\n\n\t\t\t&.timeslot--start {\n\t\t\t\tmargin-right: 5px;\n\t\t\t\twidth: calc(50% - 5px);\n\t\t\t}\n\t\t}\n\n\t\t.invalid-hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestTime.vue?vue&type=template&id=7a2ecc67&scoped=true&\"\nimport script from \"./RequestTime.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestTime.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a2ecc67\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"options\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.id\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-files-dark',\n\t\t\t\t\tid: 'webdav',\n\t\t\t\t\tlabel: t('workflowengine', 'Files WebDAV'),\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.id)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n\t.v-select,\n\tinput[type='text'] {\n\t\twidth: 100%;\n\t}\n\tinput[type='text'] {\n\t\tmin-height: 48px;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: center;\n\t\tvertical-align: middle;\n\t}\n\n\t.option__title {\n\t\tdisplay: inline-flex;\n\t\twidth: calc(100% - 36px);\n\t\tvertical-align: middle;\n\t}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestURL.vue?vue&type=template&id=1a72d97f&scoped=true&\"\nimport script from \"./RequestURL.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestURL.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a72d97f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a request URL'),\"label\":\"label\",\"clearable\":false,\"options\":_vm.options},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_c('span',{staticClass:\"option__icon\",class:option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(option.label)}})],1)]}},{key:\"selected-option\",fn:function(selectedOption){return [_c('span',{staticClass:\"option__icon\",class:selectedOption.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(selectedOption.label)}})],1)]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.currentValue.id},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"loading\":_vm.status.isLoading && _vm.groups.length === 0,\"options\":_vm.groups,\"clearable\":false,\"label\":\"displayname\",\"track-by\":\"id\"},on:{\"search-change\":_vm.searchAsync,\"input\":(value) => _vm.$emit('input', value.id)}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:clearable=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n.v-select {\n\twidth: 100%;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserGroup.vue?vue&type=template&id=07a6a476&scoped=true&\"\nimport script from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07a6a476\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport FileChecks from './file.js'\nimport RequestChecks from './request.js'\n\nexport default [...FileChecks, ...RequestChecks]\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport RequestUserAgent from './RequestUserAgent.vue'\nimport RequestTime from './RequestTime.vue'\nimport RequestURL from './RequestURL.vue'\nimport RequestUserGroup from './RequestUserGroup.vue'\n\nconst RequestChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL',\n\t\tname: t('workflowengine', 'Request URL'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestURL,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime',\n\t\tname: t('workflowengine', 'Request time'),\n\t\toperators: [\n\t\t\t{ operator: 'in', name: t('workflowengine', 'between') },\n\t\t\t{ operator: '!in', name: t('workflowengine', 'not between') },\n\t\t],\n\t\tcomponent: RequestTime,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent',\n\t\tname: t('workflowengine', 'Request user agent'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestUserAgent,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership',\n\t\tname: t('workflowengine', 'User group membership'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is member of') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not member of') },\n\t\t],\n\t\tcomponent: RequestUserGroup,\n\t},\n]\n\nexport default RequestChecks\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport store from './store.js'\nimport Settings from './components/Workflow.vue'\nimport ShippedChecks from './components/Checks/index.js'\n\n/**\n * A plugin for displaying a custom value field for checks\n *\n * @typedef {object} CheckPlugin\n * @property {string} class - The PHP class name of the check\n * @property {Comparison[]} operators - A list of possible comparison operations running on the check\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n * @property {Function} placeholder - Return a placeholder of no custom component is used\n * @property {Function} validate - validate a check if no custom component is used\n */\n\n/**\n * A plugin for extending the admin page representation of an operator\n *\n * @typedef {object} OperatorPlugin\n * @property {string} id - The PHP class name of the check\n * @property {string} operation - Default value for the operation field\n * @property {string} color - Custom color code to be applied for the operator selector\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n */\n\n/**\n * @typedef {object} Comparison\n * @property {string} operator - value the comparison should have, e.g. !less, greater\n * @property {string} name - Translated readable text, e.g. less or equals\n */\n\n/**\n * Public javascript api for apps to register custom plugins\n */\nwindow.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {\n\n\t/**\n\t *\n\t * @param {CheckPlugin} Plugin the plugin to register\n\t */\n\tregisterCheck(Plugin) {\n\t\tstore.commit('addPluginCheck', Plugin)\n\t},\n\t/**\n\t *\n\t * @param {OperatorPlugin} Plugin the plugin to register\n\t */\n\tregisterOperator(Plugin) {\n\t\tstore.commit('addPluginOperator', Plugin)\n\t},\n})\n\n// Register shipped checks\nShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))\n\nVue.use(Vuex)\nVue.prototype.t = t\n\nconst View = Vue.extend(Settings)\nconst workflowengine = new View({\n\tstore,\n})\nworkflowengine.$mount('#workflowengine')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".check[data-v-e3633862]{display:flex;flex-wrap:wrap;align-items:flex-start;width:100%;padding-right:20px}.check>*[data-v-e3633862]:not(.close){width:180px}.check>.comparator[data-v-e3633862]{min-width:200px;width:200px}.check>.option[data-v-e3633862]{min-width:260px;width:260px;min-height:48px}.check>.option>input[type=text][data-v-e3633862]{min-height:48px}.check>.v-select[data-v-e3633862],.check>.button-vue[data-v-e3633862],.check>input[type=text][data-v-e3633862]{margin-right:5px;margin-bottom:5px}input[type=text][data-v-e3633862]{margin:0}.invalid[data-v-e3633862]{border-color:var(--color-error) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Check.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,UAAA,CACA,kBAAA,CAEA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CACA,eAAA,CAEA,iDACC,eAAA,CAGF,+GAGC,gBAAA,CACA,iBAAA,CAGF,kCACC,QAAA,CAED,0BACC,0CAAA\",\"sourcesContent\":[\"\\n.check {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\talign-items: flex-start; // to not stretch components vertically\\n\\twidth: 100%;\\n\\tpadding-right: 20px;\\n\\n\\t& > *:not(.close) {\\n\\t\\twidth: 180px;\\n\\t}\\n\\t& > .comparator {\\n\\t\\tmin-width: 200px;\\n\\t\\twidth: 200px;\\n\\t}\\n\\t& > .option {\\n\\t\\tmin-width: 260px;\\n\\t\\twidth: 260px;\\n\\t\\tmin-height: 48px;\\n\\n\\t\\t& > input[type=text] {\\n\\t\\t\\tmin-height: 48px;\\n\\t\\t}\\n\\t}\\n\\t& > .v-select,\\n\\t& > .button-vue,\\n\\t& > input[type=text] {\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n}\\ninput[type=text] {\\n\\tmargin: 0;\\n}\\n.invalid {\\n\\tborder-color: var(--color-error) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-select[data-v-1a11f354],input[type=text][data-v-1a11f354]{width:100%}input[type=text][data-v-1a11f354]{min-height:48px}.option__icon[data-v-1a11f354],.option__icon-img[data-v-1a11f354]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__icon-img[data-v-1a11f354]{text-align:center}.option__title[data-v-1a11f354]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue\"],\"names\":[],\"mappings\":\"AACA,6DAEC,UAAA,CAGD,kCACC,eAAA,CAGD,kEAEC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,mCACC,iBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA\",\"sourcesContent\":[\"\\n.v-select,\\ninput[type='text'] {\\n\\twidth: 100%;\\n}\\n\\ninput[type=text] {\\n\\tmin-height: 48px;\\n}\\n\\n.option__icon,\\n.option__icon-img {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: center;\\n\\tvertical-align: middle;\\n}\\n\\n.option__icon-img {\\n\\ttext-align: center;\\n}\\n\\n.option__title {\\n\\tdisplay: inline-flex;\\n\\twidth: calc(100% - 36px);\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeslot[data-v-7a2ecc67]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-7a2ecc67]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-7a2ecc67] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-7a2ecc67]{width:50%;margin:0;margin-bottom:5px;min-height:48px}.timeslot input[type=text].timeslot--start[data-v-7a2ecc67]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-7a2ecc67]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CACA,eAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA\",\"sourcesContent\":[\"\\n.timeslot {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 180px;\\n\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\\n\\t\\tborder: 1px solid transparent;\\n\\t}\\n\\n\\tinput[type=text] {\\n\\t\\twidth: 50%;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-bottom: 5px;\\n\\t\\tmin-height: 48px;\\n\\n\\t\\t&.timeslot--start {\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\twidth: calc(50% - 5px);\\n\\t\\t}\\n\\t}\\n\\n\\t.invalid-hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-select[data-v-1a72d97f],input[type=text][data-v-1a72d97f]{width:100%}input[type=text][data-v-1a72d97f]{min-height:48px}.option__icon[data-v-1a72d97f]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__title[data-v-1a72d97f]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue\"],\"names\":[],\"mappings\":\"AACA,6DAEC,UAAA,CAED,kCACC,eAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA\",\"sourcesContent\":[\"\\n.v-select,\\ninput[type='text'] {\\n\\twidth: 100%;\\n}\\ninput[type='text'] {\\n\\tmin-height: 48px;\\n}\\n\\n.option__icon {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: center;\\n\\tvertical-align: middle;\\n}\\n\\n.option__title {\\n\\tdisplay: inline-flex;\\n\\twidth: calc(100% - 36px);\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".event[data-v-1825d70e]{margin-bottom:5px}.isComplex img[data-v-1825d70e]{vertical-align:text-top}.isComplex span[data-v-1825d70e]{padding-top:2px;display:inline-block}.multiselect[data-v-1825d70e]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-1825d70e] .multiselect__single{display:flex}.multiselect[data-v-1825d70e]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-1825d70e] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-1825d70e]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-1825d70e]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-1825d70e]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-1825d70e]{font-weight:900}.option__icon[data-v-1825d70e]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-1825d70e],.eventlist .text[data-v-1825d70e]{vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Event.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA\",\"sourcesContent\":[\"\\n.event {\\n\\tmargin-bottom: 5px;\\n}\\n.isComplex {\\n\\timg {\\n\\t\\tvertical-align: text-top;\\n\\t}\\n\\tspan {\\n\\t\\tpadding-top: 2px;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n.multiselect {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n\\tmargin-top: 4px;\\n}\\n.multiselect::v-deep .multiselect__single {\\n\\tdisplay: flex;\\n}\\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\tborder: 1px solid transparent;\\n}\\n\\n.multiselect::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\theight: auto;\\n\\tmin-height: 34px;\\n}\\n\\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\\n\\tbackground-image: var(--icon-triangle-s-dark);\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: right center;\\n}\\n\\ninput {\\n\\tborder: 1px solid transparent;\\n}\\n\\n.option__title {\\n\\tmargin-left: 5px;\\n\\tcolor: var(--color-main-text);\\n}\\n.option__title_single {\\n\\tfont-weight: 900;\\n}\\n\\n.option__icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tfilter: var(--background-invert-if-dark);\\n}\\n\\n.eventlist img,\\n.eventlist .text {\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions__item[data-v-a0480332]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-a0480332]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-a0480332]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-a0480332]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-a0480332],small[data-v-a0480332]{padding:6px;display:block}h3[data-v-a0480332]{margin:0;padding:0;font-weight:600}small[data-v-a0480332]{font-size:10pt;flex-grow:1}.colored[data-v-a0480332]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-a0480332],.colored:not(.more) small[data-v-a0480332]{color:var(--color-primary-text)}.actions__item[data-v-a0480332]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-a0480332]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-a0480332]{padding:0}.actions__item:not(.colored) .icon[data-v-a0480332]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-a0480332]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-a0480332]{filter:var(--background-invert-if-bright)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA\",\"sourcesContent\":[\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".buttons[data-v-3def8966]{display:flex;justify-content:end}.buttons button[data-v-3def8966]{margin-left:5px}.buttons button[data-v-3def8966]:last-child{margin-right:10px}.error-message[data-v-3def8966]{float:right;margin-right:10px}.flow-icon[data-v-3def8966]{width:44px}.rule[data-v-3def8966]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{flex-grow:1;min-height:100px;max-width:920px}.rule .action[data-v-3def8966]{max-width:400px;position:relative}.rule .icon-confirm[data-v-3def8966]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-3def8966],.action p[data-v-3def8966]{min-height:34px;display:flex}.trigger p>span[data-v-3def8966],.action p>span[data-v-3def8966]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-3def8966],.action p .multiselect[data-v-3def8966]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-3def8966]{padding-top:3px}.trigger p[data-v-3def8966]:last-child{padding-top:8px}.check--add[data-v-3def8966]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-3def8966],.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{width:100%;max-width:100%}.rule .flow-icon[data-v-3def8966]{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Rule.vue\"],\"names\":[],\"mappings\":\"AAEA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DAEC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAEF,uCACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA\",\"sourcesContent\":[\"\\n\\n.buttons {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\n\\tbutton {\\n\\t\\tmargin-left: 5px;\\n\\t}\\n\\tbutton:last-child{\\n\\t\\tmargin-right: 10px;\\n\\t}\\n}\\n\\n.error-message {\\n\\tfloat: right;\\n\\tmargin-right: 10px;\\n}\\n\\n.flow-icon {\\n\\twidth: 44px;\\n}\\n\\n.rule {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-left: 5px solid var(--color-primary-element);\\n\\n\\t.trigger,\\n\\t.action {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-height: 100px;\\n\\t\\tmax-width: 920px;\\n\\t}\\n\\t.action {\\n\\t\\tmax-width: 400px;\\n\\t\\tposition: relative;\\n\\t}\\n\\t.icon-confirm {\\n\\t\\tbackground-position: right 27px;\\n\\t\\tpadding-right: 20px;\\n\\t\\tmargin-right: 20px;\\n\\t}\\n}\\n.trigger p, .action p {\\n\\tmin-height: 34px;\\n\\tdisplay: flex;\\n\\n\\t& > span {\\n\\t\\tmin-width: 50px;\\n\\t\\ttext-align: right;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-right: 10px;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 300px;\\n\\t}\\n}\\n.trigger p:first-child span {\\n\\t\\tpadding-top: 3px;\\n}\\n.trigger p:last-child {\\n\\t\\tpadding-top: 8px;\\n}\\n\\n.check--add {\\n\\tbackground-position: 7px center;\\n\\tbackground-color: transparent;\\n\\tpadding-left: 6px;\\n\\tmargin: 0;\\n\\twidth: 180px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tfont-weight: normal;\\n\\ttext-align: left;\\n\\tfont-size: 1em;\\n}\\n\\n@media (max-width:1400px) {\\n\\t.rule {\\n\\t\\t&, .trigger, .action {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.flow-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#workflowengine[data-v-4e25e34d]{border-bottom:1px solid var(--color-border)}.section[data-v-4e25e34d]{max-width:100vw}.section h2.configured-flows[data-v-4e25e34d]{margin-top:50px;margin-bottom:0}.actions[data-v-4e25e34d]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-4e25e34d]{max-width:280px;flex-basis:250px}.actions__more[data-v-4e25e34d]{margin-bottom:10px}.slide-enter-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-4e25e34d],.slide-leave[data-v-4e25e34d]{max-height:500px;overflow:hidden}.slide-enter[data-v-4e25e34d],.slide-leave-to[data-v-4e25e34d]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-4e25e34d]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-4e25e34d]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-4e25e34d]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-4e25e34d]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-4e25e34d],small[data-v-4e25e34d]{padding:6px;display:block}h3[data-v-4e25e34d]{margin:0;padding:0;font-weight:600}small[data-v-4e25e34d]{font-size:10pt;flex-grow:1}.colored[data-v-4e25e34d]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-4e25e34d],.colored:not(.more) small[data-v-4e25e34d]{color:var(--color-primary-text)}.actions__item[data-v-4e25e34d]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-4e25e34d]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-4e25e34d]{padding:0}.actions__item:not(.colored) .icon[data-v-4e25e34d]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-4e25e34d]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-4e25e34d]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-4e25e34d]{background-color:var(--color-background-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Workflow.vue\",\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AACA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCxDD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDfD,qCACC,6CAAA\",\"sourcesContent\":[\"\\n#workflowengine {\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n.section {\\n\\tmax-width: 100vw;\\n\\n\\th2.configured-flows {\\n\\t\\tmargin-top: 50px;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n.actions {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 1200px;\\n\\t.actions__item {\\n\\t\\tmax-width: 280px;\\n\\t\\tflex-basis: 250px;\\n\\t}\\n}\\n.actions__more {\\n\\tmargin-bottom: 10px;\\n}\\n\\n.slide-enter-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: ease-in;\\n\\t-webkit-transition-timing-function: ease-in;\\n\\t-o-transition-timing-function: ease-in;\\n\\ttransition-timing-function: ease-in;\\n}\\n\\n.slide-leave-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n}\\n\\n.slide-enter-to, .slide-leave {\\n\\tmax-height: 500px;\\n\\toverflow: hidden;\\n}\\n\\n.slide-enter, .slide-leave-to {\\n\\toverflow: hidden;\\n\\tmax-height: 0;\\n\\tpadding-top: 0;\\n\\tpadding-bottom: 0;\\n}\\n\\n@import \\\"./../styles/operation\\\";\\n\\n.actions__item.more {\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\",\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-select[data-v-003881d4],\\ninput[type='text'][data-v-003881d4] {\\n\\twidth: 100%;\\n}\\ninput[type='text'][data-v-003881d4] {\\n\\tmin-height: 48px;\\n}\\n.option__icon[data-v-003881d4] {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: center;\\n\\tvertical-align: middle;\\n}\\n.option__title[data-v-003881d4] {\\n\\tdisplay: inline-flex;\\n\\twidth: calc(100% - 36px);\\n\\tvertical-align: middle;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue\"],\"names\":[],\"mappings\":\";AAmJA;;CAEA,WAAA;AACA;AACA;CACA,gBAAA;AACA;AAEA;CACA,qBAAA;CACA,eAAA;CACA,2BAAA;CACA,sBAAA;AACA;AAEA;CACA,oBAAA;CACA,wBAAA;CACA,sBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (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 Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcSelect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a user agent')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:clearable=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template #option=\\\"option\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"option.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">\\n\\t\\t\\t\\t\\t<NcEllipsisedOption :name=\\\"String(option.label)\\\" />\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template #selected-option=\\\"selectedOption\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"selectedOption.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">\\n\\t\\t\\t\\t\\t<NcEllipsisedOption :name=\\\"String(selectedOption.label)\\\" />\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</template>\\n\\t\\t</NcSelect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\\nimport valueMixin from '../../mixins/valueMixin.js'\\n\\nexport default {\\n\\tname: 'RequestUserAgent',\\n\\tcomponents: {\\n\\t\\tNcEllipsisedOption,\\n\\t\\tNcSelect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{ id: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ id: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ id: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\\n\\t\\t\\t\\t{ id: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.find((type) => this.newValue === type.id)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tid: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tid: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.id\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.v-select,\\n\\tinput[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\tinput[type='text'] {\\n\\t\\tmin-height: 48px;\\n\\t}\\n\\n\\t.option__icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmin-width: 30px;\\n\\t\\tbackground-position: center;\\n\\t\\tvertical-align: middle;\\n\\t}\\n\\n\\t.option__title {\\n\\t\\tdisplay: inline-flex;\\n\\t\\twidth: calc(100% - 36px);\\n\\t\\tvertical-align: middle;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-select[data-v-07a6a476] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue\"],\"names\":[],\"mappings\":\";AA4GA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (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 Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcSelect :value=\\\"currentValue\\\"\\n\\t\\t\\t:loading=\\\"status.isLoading && groups.length === 0\\\"\\n\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t:clearable=\\\"false\\\"\\n\\t\\t\\tlabel=\\\"displayname\\\"\\n\\t\\t\\ttrack-by=\\\"id\\\"\\n\\t\\t\\t@search-change=\\\"searchAsync\\\"\\n\\t\\t\\t@input=\\\"(value) => $emit('input', value.id)\\\" />\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\\nimport axios from '@nextcloud/axios'\\nimport { generateOcsUrl } from '@nextcloud/router'\\n\\nconst groups = []\\nconst status = {\\n\\tisLoading: false,\\n}\\n\\nexport default {\\n\\tname: 'RequestUserGroup',\\n\\tcomponents: {\\n\\t\\tNcSelect,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\tdefault: '',\\n\\t\\t},\\n\\t\\tcheck: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\tdefault: () => { return {} },\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgroups,\\n\\t\\t\\tstatus,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcurrentValue() {\\n\\t\\t\\treturn this.groups.find(group => group.id === this.value) || null\\n\\t\\t},\\n\\t},\\n\\tasync mounted() {\\n\\t\\tif (this.groups.length === 0) {\\n\\t\\t\\tawait this.searchAsync('')\\n\\t\\t}\\n\\t\\tif (this.currentValue === null) {\\n\\t\\t\\tawait this.searchAsync(this.value)\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchAsync(searchQuery) {\\n\\t\\t\\tif (this.status.isLoading) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.status.isLoading = true\\n\\t\\t\\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\\n\\t\\t\\t\\tresponse.data.ocs.data.groups.forEach((group) => {\\n\\t\\t\\t\\t\\tthis.addGroup({\\n\\t\\t\\t\\t\\t\\tid: group.id,\\n\\t\\t\\t\\t\\t\\tdisplayname: group.displayname,\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tthis.status.isLoading = false\\n\\t\\t\\t}, (error) => {\\n\\t\\t\\t\\tconsole.error('Error while loading group list', error.response)\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddGroup(group) {\\n\\t\\t\\tconst index = this.groups.findIndex((item) => item.id === group.id)\\n\\t\\t\\tif (index === -1) {\\n\\t\\t\\t\\tthis.groups.push(group)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n.v-select {\\n\\twidth: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8318;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8318: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(71374)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","scopeValue","loadState","getApiUrl","url","generateOcsUrl","Vue","Vuex","Store","state","rules","scope","appstoreEnabled","operations","plugins","checks","operators","entities","events","map","entity","event","id","concat","eventName","flat","mutations","addRule","rule","push","valid","updateRule","index","findIndex","item","newRule","Object","assign","removeRule","splice","addPluginCheck","plugin","class","addPluginOperator","color","actions","async","context","data","axios","values","ocs","forEach","commit","createNewRule","isComplex","fixedEntity","find","Date","getTime","name","operator","value","operation","JSON","parse","result","confirmPassword","setValid","_ref","getters","getRules","filter","sort","rule1","rule2","getOperationForRule","getEntityForOperation","getEventsForOperation","getChecksForEntity","check","supportedEntities","indexOf","length","reduce","obj","components","NcMultiselect","props","type","required","computed","$store","allEvents","currentEvent","methods","updateEvent","showWarning","t","existingEntity","newEntities","self","newEntity","$set","$emit","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","icon","_v","_s","triggerHint","on","scopedSlots","_u","key","fn","isOpen","_l","displayName","_e","option","NcActionButton","NcActions","NcSelect","CloseIcon","directives","ClickOutside","deleteVisible","currentOption","currentOperator","currentComponent","component","valuePlaceholder","placeholder","watch","validate","mounted","$nextTick","$refs","checkSelector","$el","focus","showDelete","hideDelete","invalid","updateCheck","matchingOperator","rawName","expression","ref","model","callback","$$v","tag","$event","domProps","target","composing","proxy","NcButton","colored","Boolean","default","style","backgroundColor","iconClass","backgroundImage","description","_t","ArrowRight","Check","CheckMark","Close","Event","Operation","Tooltip","editing","error","dirty","originalRule","ruleStatus","some","title","tooltip","placement","show","content","lastCheckComplete","lastCheck","stringify","dispatch","e","console","response","meta","message","cancelRule","$delete","onAddFilter","borderLeftColor","removeCheck","updateOperation","deleteRule","saveRule","MenuDown","MenuUp","Rule","NcSettingsSection","showMoreOperations","appstoreUrl","generateUrl","workflowDocUrl","mapGetters","mapState","hasMoreOperations","keys","getMainOperations","slice","showAppStoreHint","OC","isUserAdmin","nativeOn","regexRegex","regexIPv4","regexIPv6","String","newValue","immediate","handler","updateInternalValue","NcEllipsisedOption","mixins","valueMixin","predefinedTypes","label","iconUrl","imagePath","customValue","isPredefined","currentValue","validateRegex","string","exec","setValue","updateCustom","selectedOption","NcSelectTags","updateValue","beforeMount","parseInt","update","stringOrRegexOperators","FileMimeType","match","validateIPv4","FileSystemTag","matchingPredefined","pattern","zones","moment","timezones","startTime","endTime","timezone","split","output","groups","status","isLoading","group","searchAsync","searchQuery","then","addGroup","displayname","FileChecks","RequestURL","RequestTime","RequestUserAgent","RequestUserGroup","window","OCA","WorkflowEngine","registerCheck","Plugin","store","registerOperator","ShippedChecks","checkPlugin","Settings","$mount","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"workflowengine-workflowengine.js?v=59f70fe7e6299bdf97b3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/workflowengine/src/helpers/api.js","webpack:///nextcloud/apps/workflowengine/src/store.js","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?de47","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5144","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5115","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?3d5a","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?bf90","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?83b4","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?3fb8","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?6918","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?3526","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?86d2","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?2d87","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?e711","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?6c53","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?979d","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?17b8","webpack:///nextcloud/apps/workflowengine/src/helpers/validators.js","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?f663","webpack:///nextcloud/apps/workflowengine/src/mixins/valueMixin.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?0d3a","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?c385","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?acab","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?2d3e","webpack:///nextcloud/apps/workflowengine/src/components/Checks/file.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?f104","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?81d6","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?80f0","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?1af1","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?7391","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?a55a","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?7662","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?eee5","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?b56e","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f1ec","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?a319","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f6d3","webpack:///nextcloud/apps/workflowengine/src/components/Checks/index.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/request.js","webpack:///nextcloud/apps/workflowengine/src/workflowengine.js","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst scopeValue = loadState('workflowengine', 'scope') === 0 ? 'global' : 'user'\n\nconst getApiUrl = (url) => {\n\treturn generateOcsUrl('apps/workflowengine/api/v1/workflows/{scopeValue}', { scopeValue }) + url + '?format=json'\n}\n\nexport {\n\tgetApiUrl,\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport { getApiUrl } from './helpers/api.js'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.use(Vuex)\n\nconst store = new Store({\n\tstate: {\n\t\trules: [],\n\t\tscope: loadState('workflowengine', 'scope'),\n\t\tappstoreEnabled: loadState('workflowengine', 'appstoreenabled'),\n\t\toperations: loadState('workflowengine', 'operators'),\n\n\t\tplugins: Vue.observable({\n\t\t\tchecks: {},\n\t\t\toperators: {},\n\t\t}),\n\n\t\tentities: loadState('workflowengine', 'entities'),\n\t\tevents: loadState('workflowengine', 'entities')\n\t\t\t.map((entity) => entity.events.map(event => {\n\t\t\t\treturn {\n\t\t\t\t\tid: `${entity.id}::${event.eventName}`,\n\t\t\t\t\tentity,\n\t\t\t\t\t...event,\n\t\t\t\t}\n\t\t\t})).flat(),\n\t\tchecks: loadState('workflowengine', 'checks'),\n\t},\n\tmutations: {\n\t\taddRule(state, rule) {\n\t\t\tstate.rules.push({ ...rule, valid: true })\n\t\t},\n\t\tupdateRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tconst newRule = Object.assign({}, rule)\n\t\t\tVue.set(state.rules, index, newRule)\n\t\t},\n\t\tremoveRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tstate.rules.splice(index, 1)\n\t\t},\n\t\taddPluginCheck(state, plugin) {\n\t\t\tVue.set(state.plugins.checks, plugin.class, plugin)\n\t\t},\n\t\taddPluginOperator(state, plugin) {\n\t\t\tplugin = Object.assign(\n\t\t\t\t{ color: 'var(--color-primary-element)' },\n\t\t\t\tplugin, state.operations[plugin.id] || {})\n\t\t\tif (typeof state.operations[plugin.id] !== 'undefined') {\n\t\t\t\tVue.set(state.operations, plugin.id, plugin)\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tasync fetchRules(context) {\n\t\t\tconst { data } = await axios.get(getApiUrl(''))\n\t\t\tObject.values(data.ocs.data).flat().forEach((rule) => {\n\t\t\t\tcontext.commit('addRule', rule)\n\t\t\t})\n\t\t},\n\t\tcreateNewRule(context, rule) {\n\t\t\tlet entity = null\n\t\t\tlet events = []\n\t\t\tif (rule.isComplex === false && rule.fixedEntity === '') {\n\t\t\t\tentity = context.state.entities.find((item) => rule.entities && rule.entities[0] === item.id)\n\t\t\t\tentity = entity || Object.values(context.state.entities)[0]\n\t\t\t\tevents = [entity.events[0].eventName]\n\t\t\t}\n\n\t\t\tcontext.commit('addRule', {\n\t\t\t\tid: -(new Date().getTime()),\n\t\t\t\tclass: rule.id,\n\t\t\t\tentity: entity ? entity.id : rule.fixedEntity,\n\t\t\t\tevents,\n\t\t\t\tname: '', // unused in the new ui, there for legacy reasons\n\t\t\t\tchecks: [\n\t\t\t\t\t{ class: null, operator: null, value: '' },\n\t\t\t\t],\n\t\t\t\toperation: rule.operation || '',\n\t\t\t})\n\t\t},\n\t\tupdateRule(context, rule) {\n\t\t\tcontext.commit('updateRule', {\n\t\t\t\t...rule,\n\t\t\t\tevents: typeof rule.events === 'string' ? JSON.parse(rule.events) : rule.events,\n\t\t\t})\n\t\t},\n\t\tremoveRule(context, rule) {\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tasync pushUpdateRule(context, rule) {\n\t\t\tif (context.state.scope === 0) {\n\t\t\t\tawait confirmPassword()\n\t\t\t}\n\t\t\tlet result\n\t\t\tif (rule.id < 0) {\n\t\t\t\tresult = await axios.post(getApiUrl(''), rule)\n\t\t\t} else {\n\t\t\t\tresult = await axios.put(getApiUrl(`/${rule.id}`), rule)\n\t\t\t}\n\t\t\tVue.set(rule, 'id', result.data.ocs.data.id)\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t\tasync deleteRule(context, rule) {\n\t\t\tawait confirmPassword()\n\t\t\tawait axios.delete(getApiUrl(`/${rule.id}`))\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tsetValid(context, { rule, valid }) {\n\t\t\trule.valid = valid\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t},\n\tgetters: {\n\t\tgetRules(state) {\n\t\t\treturn state.rules.filter((rule) => typeof state.operations[rule.class] !== 'undefined').sort((rule1, rule2) => {\n\t\t\t\treturn rule1.id - rule2.id || rule2.class - rule1.class\n\t\t\t})\n\t\t},\n\t\tgetOperationForRule(state) {\n\t\t\treturn (rule) => state.operations[rule.class]\n\t\t},\n\t\tgetEntityForOperation(state) {\n\t\t\treturn (operation) => state.entities.find((entity) => operation.fixedEntity === entity.id)\n\t\t},\n\t\tgetEventsForOperation(state) {\n\t\t\treturn (operation) => state.events\n\t\t},\n\n\t\t/**\n\t\t * Return all available checker plugins for a given entity class\n\t\t *\n\t\t * @param {object} state the store state\n\t\t * @return {Function} the available plugins\n\t\t */\n\t\tgetChecksForEntity(state) {\n\t\t\treturn (entity) => {\n\t\t\t\treturn Object.values(state.checks)\n\t\t\t\t\t.filter((check) => check.supportedEntities.indexOf(entity) > -1 || check.supportedEntities.length === 0)\n\t\t\t\t\t.map((check) => state.plugins.checks[check.id])\n\t\t\t\t\t.reduce((obj, item) => {\n\t\t\t\t\t\tobj[item.class] = item\n\t\t\t\t\t\treturn obj\n\t\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t},\n})\n\nexport default store\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"workflowengine\"}},[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('workflowengine', 'Available flows'),\"doc-url\":_vm.workflowDocUrl}},[(_vm.scope === 0)?_c('p',{staticClass:\"settings-hint\"},[_c('a',{attrs:{\"href\":\"https://nextcloud.com/developer/\"}},[_vm._v(_vm._s(_vm.t('workflowengine', 'For details on how to write your own flow, check out the development documentation.')))])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"actions\",attrs:{\"name\":\"slide\",\"tag\":\"div\"}},[_vm._l((_vm.getMainOperations),function(operation){return _c('Operation',{key:operation.id,attrs:{\"operation\":operation},nativeOn:{\"click\":function($event){return _vm.createNewRule(operation)}}})}),_vm._v(\" \"),(_vm.showAppStoreHint)?_c('a',{key:'add',staticClass:\"actions__item colored more\",attrs:{\"href\":_vm.appstoreUrl}},[_c('div',{staticClass:\"icon icon-add\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.t('workflowengine', 'More flows')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('workflowengine', 'Browse the App Store')))])])]):_vm._e()],2),_vm._v(\" \"),(_vm.hasMoreOperations)?_c('div',{staticClass:\"actions__more\"},[_c('NcButton',{on:{\"click\":function($event){_vm.showMoreOperations = !_vm.showMoreOperations}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.showMoreOperations)?_c('MenuUp',{attrs:{\"size\":20}}):_c('MenuDown',{attrs:{\"size\":20}})]},proxy:true}],null,false,3801522717)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.showMoreOperations ? _vm.t('workflowengine', 'Show less') : _vm.t('workflowengine', 'Show more'))+\"\\n\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(_vm.scope === 0)?_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Configured flows'))+\"\\n\\t\\t\")]):_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Your flows'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.rules.length > 0)?_c('transition-group',{attrs:{\"name\":\"slide\"}},_vm._l((_vm.rules),function(rule){return _c('Rule',{key:rule.id,attrs:{\"rule\":rule}})}),1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"event\">\n\t\t<div v-if=\"operation.isComplex && operation.fixedEntity !== ''\" class=\"isComplex\">\n\t\t\t<img class=\"option__icon\" :src=\"entity.icon\" alt=\"\">\n\t\t\t<span class=\"option__title option__title_single\">{{ operation.triggerHint }}</span>\n\t\t</div>\n\t\t<NcMultiselect v-else\n\t\t\t:value=\"currentEvent\"\n\t\t\t:options=\"allEvents\"\n\t\t\ttrack-by=\"id\"\n\t\t\t:multiple=\"true\"\n\t\t\t:auto-limit=\"false\"\n\t\t\t:disabled=\"allEvents.length <= 1\"\n\t\t\t@input=\"updateEvent\">\n\t\t\t<template slot=\"selection\" slot-scope=\"{ values, isOpen }\">\n\t\t\t\t<div v-if=\"values.length && !isOpen\" class=\"eventlist\">\n\t\t\t\t\t<img class=\"option__icon\" :src=\"values[0].entity.icon\" alt=\"\">\n\t\t\t\t\t<span v-for=\"(value, index) in values\" :key=\"value.id\" class=\"text option__title option__title_single\">{{ value.displayName }} <span v-if=\"index+1 < values.length\">, </span></span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<img class=\"option__icon\" :src=\"props.option.entity.icon\" alt=\"\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.displayName }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'\nimport { showWarning } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'Event',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tentity() {\n\t\t\treturn this.$store.getters.getEntityForOperation(this.operation)\n\t\t},\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\tallEvents() {\n\t\t\treturn this.$store.getters.getEventsForOperation(this.operation)\n\t\t},\n\t\tcurrentEvent() {\n\t\t\treturn this.allEvents.filter(event => event.entity.id === this.rule.entity && this.rule.events.indexOf(event.eventName) !== -1)\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateEvent(events) {\n\t\t\tif (events.length === 0) {\n\t\t\t\tshowWarning(t('workflowengine', 'At least one event must be selected'))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst existingEntity = this.rule.entity\n\t\t\tconst newEntities = events.map(event => event.entity.id).filter((value, index, self) => self.indexOf(value) === index)\n\t\t\tlet newEntity = null\n\t\t\tif (newEntities.length > 1) {\n\t\t\t\tnewEntity = newEntities.filter(entity => entity !== existingEntity)[0]\n\t\t\t} else {\n\t\t\t\tnewEntity = newEntities[0]\n\t\t\t}\n\n\t\t\tthis.$set(this.rule, 'entity', newEntity)\n\t\t\tthis.$set(this.rule, 'events', events.filter(event => event.entity.id === newEntity).map(event => event.eventName))\n\t\t\tthis.$emit('update', this.rule)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.event {\n\t\tmargin-bottom: 5px;\n\t}\n\t.isComplex {\n\t\timg {\n\t\t\tvertical-align: text-top;\n\t\t}\n\t\tspan {\n\t\t\tpadding-top: 2px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmax-width: 550px;\n\t\tmargin-top: 4px;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: flex;\n\t}\n\t.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\theight: auto;\n\t\tmin-height: 34px;\n\t}\n\n\t.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\t\tbackground-image: var(--icon-triangle-s-dark);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: right center;\n\t}\n\n\tinput {\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.option__title {\n\t\tmargin-left: 5px;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.option__title_single {\n\t\tfont-weight: 900;\n\t}\n\n\t.option__icon {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t.eventlist img,\n\t.eventlist .text {\n\t\tvertical-align: middle;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=1825d70e&scoped=true&\"\nimport script from \"./Event.vue?vue&type=script&lang=js&\"\nexport * from \"./Event.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Event.vue?vue&type=style&index=0&id=1825d70e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1825d70e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"event\"},[(_vm.operation.isComplex && _vm.operation.fixedEntity !== '')?_c('div',{staticClass:\"isComplex\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":_vm.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(_vm.operation.triggerHint))])]):_c('NcMultiselect',{attrs:{\"value\":_vm.currentEvent,\"options\":_vm.allEvents,\"track-by\":\"id\",\"multiple\":true,\"auto-limit\":false,\"disabled\":_vm.allEvents.length <= 1},on:{\"input\":_vm.updateEvent},scopedSlots:_vm._u([{key:\"selection\",fn:function({ values, isOpen }){return [(values.length && !isOpen)?_c('div',{staticClass:\"eventlist\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":values[0].entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_vm._l((values),function(value,index){return _c('span',{key:value.id,staticClass:\"text option__title option__title_single\"},[_vm._v(_vm._s(value.displayName)+\" \"),(index+1 < values.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e()]}},{key:\"option\",fn:function(props){return [_c('img',{staticClass:\"option__icon\",attrs:{\"src\":props.option.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.displayName))])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideDelete),expression:\"hideDelete\"}],staticClass:\"check\",on:{\"click\":_vm.showDelete}},[_c('NcSelect',{ref:\"checkSelector\",attrs:{\"options\":_vm.options,\"label\":\"name\",\"track-by\":\"class\",\"clearable\":false,\"placeholder\":_vm.t('workflowengine', 'Select a filter')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOption),callback:function ($$v) {_vm.currentOption=$$v},expression:\"currentOption\"}}),_vm._v(\" \"),_c('NcSelect',{staticClass:\"comparator\",attrs:{\"disabled\":!_vm.currentOption,\"options\":_vm.operators,\"label\":\"name\",\"track-by\":\"operator\",\"clearable\":false,\"placeholder\":_vm.t('workflowengine', 'Select a comparator')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOperator),callback:function ($$v) {_vm.currentOperator=$$v},expression:\"currentOperator\"}}),_vm._v(\" \"),(_vm.currentOperator && _vm.currentComponent)?_c(_vm.currentOption.component,{tag:\"component\",staticClass:\"option\",attrs:{\"disabled\":!_vm.currentOption,\"check\":_vm.check},on:{\"input\":_vm.updateCheck,\"valid\":function($event){(_vm.valid=true) && _vm.validate()},\"invalid\":function($event){!(_vm.valid=false) && _vm.validate()}},model:{value:(_vm.check.value),callback:function ($$v) {_vm.$set(_vm.check, \"value\", $$v)},expression:\"check.value\"}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.check.value),expression:\"check.value\"}],staticClass:\"option\",class:{ invalid: !_vm.valid },attrs:{\"type\":\"text\",\"disabled\":!_vm.currentOption,\"placeholder\":_vm.valuePlaceholder},domProps:{\"value\":(_vm.check.value)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.check, \"value\", $event.target.value)},_vm.updateCheck]}}),_vm._v(\" \"),(_vm.deleteVisible || !_vm.currentOption)?_c('NcActions',[_c('NcActionButton',{attrs:{\"title\":_vm.t('workflowengine', 'Remove filter')},on:{\"click\":function($event){return _vm.$emit('remove')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CloseIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,2428343285)})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-click-outside=\"hideDelete\" class=\"check\" @click=\"showDelete\">\n\t\t<NcSelect ref=\"checkSelector\"\n\t\t\tv-model=\"currentOption\"\n\t\t\t:options=\"options\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"class\"\n\t\t\t:clearable=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a filter')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<NcSelect v-model=\"currentOperator\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:options=\"operators\"\n\t\t\tclass=\"comparator\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"operator\"\n\t\t\t:clearable=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a comparator')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<component :is=\"currentOption.component\"\n\t\t\tv-if=\"currentOperator && currentComponent\"\n\t\t\tv-model=\"check.value\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:check=\"check\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\"\n\t\t\t@valid=\"(valid=true) && validate()\"\n\t\t\t@invalid=\"!(valid=false) && validate()\" />\n\t\t<input v-else\n\t\t\tv-model=\"check.value\"\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{ invalid: !valid }\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:placeholder=\"valuePlaceholder\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\">\n\t\t<NcActions v-if=\"deleteVisible || !currentOption\">\n\t\t\t<NcActionButton :title=\"t('workflowengine', 'Remove filter')\" @click=\"$emit('remove')\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</div>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\n\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'Check',\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcSelect,\n\n\t\t// Icons\n\t\tCloseIcon,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdeleteVisible: false,\n\t\t\tcurrentOption: null,\n\t\t\tcurrentOperator: null,\n\t\t\toptions: [],\n\t\t\tvalid: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tchecks() {\n\t\t\treturn this.$store.getters.getChecksForEntity(this.rule.entity)\n\t\t},\n\t\toperators() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\tconst operators = this.checks[this.currentOption.class].operators\n\t\t\tif (typeof operators === 'function') {\n\t\t\t\treturn operators(this.check)\n\t\t\t}\n\t\t\treturn operators\n\t\t},\n\t\tcurrentComponent() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\treturn this.checks[this.currentOption.class].component\n\t\t},\n\t\tvaluePlaceholder() {\n\t\t\tif (this.currentOption && this.currentOption.placeholder) {\n\t\t\t\treturn this.currentOption.placeholder(this.check)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t},\n\twatch: {\n\t\t'check.operator'() {\n\t\t\tthis.validate()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.options = Object.values(this.checks)\n\t\tthis.currentOption = this.checks[this.check.class]\n\t\tthis.currentOperator = this.operators.find((operator) => operator.operator === this.check.operator)\n\n\t\tif (this.check.class === null) {\n\t\t\tthis.$nextTick(() => this.$refs.checkSelector.$el.focus())\n\t\t}\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tshowDelete() {\n\t\t\tthis.deleteVisible = true\n\t\t},\n\t\thideDelete() {\n\t\t\tthis.deleteVisible = false\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = true\n\t\t\tif (this.currentOption && this.currentOption.validate) {\n\t\t\t\tthis.valid = !!this.currentOption.validate(this.check)\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.invalid = !this.valid\n\t\t\tthis.$emit('validate', this.valid)\n\t\t},\n\t\tupdateCheck() {\n\t\t\tconst matchingOperator = this.operators.findIndex((operator) => this.check.operator === operator.operator)\n\t\t\tif (this.check.class !== this.currentOption.class || matchingOperator === -1) {\n\t\t\t\tthis.currentOperator = this.operators[0]\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.class = this.currentOption.class\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.operator = this.currentOperator.operator\n\n\t\t\tthis.validate()\n\n\t\t\tthis.$emit('update', this.check)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.check {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\talign-items: flex-start; // to not stretch components vertically\n\t\twidth: 100%;\n\t\tpadding-right: 20px;\n\n\t\t& > *:not(.close) {\n\t\t\twidth: 180px;\n\t\t}\n\t\t& > .comparator {\n\t\t\tmin-width: 200px;\n\t\t\twidth: 200px;\n\t\t}\n\t\t& > .option {\n\t\t\tmin-width: 260px;\n\t\t\twidth: 260px;\n\t\t\tmin-height: 48px;\n\n\t\t\t& > input[type=text] {\n\t\t\t\tmin-height: 48px;\n\t\t\t}\n\t\t}\n\t\t& > .v-select,\n\t\t& > .button-vue,\n\t\t& > input[type=text] {\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\tinput[type=text] {\n\t\tmargin: 0;\n\t}\n\t.invalid {\n\t\tborder-color: var(--color-error) !important;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=e3633862&scoped=true&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Check.vue?vue&type=style&index=0&id=e3633862&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3633862\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"actions__item\" :class=\"{'colored': colored}\" :style=\"{ backgroundColor: colored ? operation.color : 'transparent' }\">\n\t\t<div class=\"icon\" :class=\"operation.iconClass\" :style=\"{ backgroundImage: operation.iconClass ? '' : `url(${operation.icon})` }\" />\n\t\t<div class=\"actions__item__description\">\n\t\t\t<h3>{{ operation.name }}</h3>\n\t\t\t<small>{{ operation.description }}</small>\n\t\t\t<NcButton v-if=\"colored\">\n\t\t\t\t{{ t('workflowengine', 'Add new flow') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div class=\"actions__item_options\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nexport default {\n\tname: 'Operation',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tprops: {\n\t\toperation: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcolored: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t@import \"./../styles/operation\";\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Operation.vue?vue&type=template&id=a0480332&scoped=true&\"\nimport script from \"./Operation.vue?vue&type=script&lang=js&\"\nexport * from \"./Operation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Operation.vue?vue&type=style&index=0&id=a0480332&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a0480332\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"actions__item\",class:{'colored': _vm.colored},style:({ backgroundColor: _vm.colored ? _vm.operation.color : 'transparent' })},[_c('div',{staticClass:\"icon\",class:_vm.operation.iconClass,style:({ backgroundImage: _vm.operation.iconClass ? '' : `url(${_vm.operation.icon})` })}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.operation.name))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.operation.description))]),_vm._v(\" \"),(_vm.colored)?_c('NcButton',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Add new flow'))+\"\\n\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions__item_options\"},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-if=\"operation\" class=\"section rule\" :style=\"{ borderLeftColor: operation.color || '' }\">\n\t\t<div class=\"trigger\">\n\t\t\t<p>\n\t\t\t\t<span>{{ t('workflowengine', 'When') }}</span>\n\t\t\t\t<Event :rule=\"rule\" @update=\"updateRule\" />\n\t\t\t</p>\n\t\t\t<p v-for=\"(check, index) in rule.checks\" :key=\"index\">\n\t\t\t\t<span>{{ t('workflowengine', 'and') }}</span>\n\t\t\t\t<Check :check=\"check\"\n\t\t\t\t\t:rule=\"rule\"\n\t\t\t\t\t@update=\"updateRule\"\n\t\t\t\t\t@validate=\"validate\"\n\t\t\t\t\t@remove=\"removeCheck(check)\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<span />\n\t\t\t\t<input v-if=\"lastCheckComplete\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"check--add\"\n\t\t\t\t\t:value=\"t('workflowengine', 'Add a new filter')\"\n\t\t\t\t\t@click=\"onAddFilter\">\n\t\t\t</p>\n\t\t</div>\n\t\t<div class=\"flow-icon icon-confirm\" />\n\t\t<div class=\"action\">\n\t\t\t<Operation :operation=\"operation\" :colored=\"false\">\n\t\t\t\t<component :is=\"operation.options\"\n\t\t\t\t\tv-if=\"operation.options\"\n\t\t\t\t\tv-model=\"rule.operation\"\n\t\t\t\t\t@input=\"updateOperation\" />\n\t\t\t</Operation>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<NcButton v-if=\"rule.id < -1 || dirty\" @click=\"cancelRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton v-else-if=\"!dirty\" @click=\"deleteRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Delete') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton :type=\"ruleStatus.type\"\n\t\t\t\t\t@click=\"saveRule\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<component :is=\"ruleStatus.icon\" :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ ruleStatus.title }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<p v-if=\"error\" class=\"error-message\">\n\t\t\t\t{{ error }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip.js'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport CheckMark from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport Event from './Event.vue'\nimport Check from './Check.vue'\nimport Operation from './Operation.vue'\n\nexport default {\n\tname: 'Rule',\n\tcomponents: {\n\t\tArrowRight,\n\t\tCheck,\n\t\tCheckMark,\n\t\tClose,\n\t\tEvent,\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcButton,\n\t\tOperation,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tediting: false,\n\t\t\tchecks: [],\n\t\t\terror: null,\n\t\t\tdirty: this.rule.id < 0,\n\t\t\toriginalRule: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\truleStatus() {\n\t\t\tif (this.error || !this.rule.valid || this.rule.checks.length === 0 || this.rule.checks.some((check) => check.invalid === true)) {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: t('workflowengine', 'The configuration is invalid'),\n\t\t\t\t\ticon: 'Close',\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttooltip: { placement: 'bottom', show: true, content: this.error },\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dirty) {\n\t\t\t\treturn { title: t('workflowengine', 'Active'), icon: 'CheckMark', type: 'success' }\n\t\t\t}\n\t\t\treturn { title: t('workflowengine', 'Save'), icon: 'ArrowRight', type: 'primary' }\n\n\t\t},\n\t\tlastCheckComplete() {\n\t\t\tconst lastCheck = this.rule.checks[this.rule.checks.length - 1]\n\t\t\treturn typeof lastCheck === 'undefined' || lastCheck.class !== null\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t},\n\tmethods: {\n\t\tasync updateOperation(operation) {\n\t\t\tthis.$set(this.rule, 'operation', operation)\n\t\t\tawait this.updateRule()\n\t\t},\n\t\tvalidate(state) {\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tupdateRule() {\n\t\t\tif (!this.dirty) {\n\t\t\t\tthis.dirty = true\n\t\t\t}\n\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tasync saveRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('pushUpdateRule', this.rule)\n\t\t\t\tthis.dirty = false\n\t\t\t\tthis.error = null\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to save operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tasync deleteRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('deleteRule', this.rule)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to delete operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tcancelRule() {\n\t\t\tif (this.rule.id < 0) {\n\t\t\t\tthis.$store.dispatch('removeRule', this.rule)\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateRule', this.originalRule)\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t\tthis.dirty = false\n\t\t\t}\n\t\t},\n\n\t\tasync removeCheck(check) {\n\t\t\tconst index = this.rule.checks.findIndex(item => item === check)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.$delete(this.rule.checks, index)\n\t\t\t}\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\n\t\tonAddFilter() {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.rule.checks.push({ class: null, operator: null, value: '' })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\n\t.buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\n\t\tbutton {\n\t\t\tmargin-left: 5px;\n\t\t}\n\t\tbutton:last-child{\n\t\t\tmargin-right: 10px;\n\t\t}\n\t}\n\n\t.error-message {\n\t\tfloat: right;\n\t\tmargin-right: 10px;\n\t}\n\n\t.flow-icon {\n\t\twidth: 44px;\n\t}\n\n\t.rule {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tborder-left: 5px solid var(--color-primary-element);\n\n\t\t.trigger,\n\t\t.action {\n\t\t\tflex-grow: 1;\n\t\t\tmin-height: 100px;\n\t\t\tmax-width: 920px;\n\t\t}\n\t\t.action {\n\t\t\tmax-width: 400px;\n\t\t\tposition: relative;\n\t\t}\n\t\t.icon-confirm {\n\t\t\tbackground-position: right 27px;\n\t\t\tpadding-right: 20px;\n\t\t\tmargin-right: 20px;\n\t\t}\n\t}\n\t.trigger p, .action p {\n\t\tmin-height: 34px;\n\t\tdisplay: flex;\n\n\t\t& > span {\n\t\t\tmin-width: 50px;\n\t\t\ttext-align: right;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tpadding-right: 10px;\n\t\t\tpadding-top: 6px;\n\t\t}\n\t\t.multiselect {\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: 300px;\n\t\t}\n\t}\n\t.trigger p:first-child span {\n\t\t\tpadding-top: 3px;\n\t}\n\t.trigger p:last-child {\n\t\t\tpadding-top: 8px;\n\t}\n\n\t.check--add {\n\t\tbackground-position: 7px center;\n\t\tbackground-color: transparent;\n\t\tpadding-left: 6px;\n\t\tmargin: 0;\n\t\twidth: 180px;\n\t\tborder-radius: var(--border-radius);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tfont-weight: normal;\n\t\ttext-align: left;\n\t\tfont-size: 1em;\n\t}\n\n\t@media (max-width:1400px) {\n\t\t.rule {\n\t\t\t&, .trigger, .action {\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t.flow-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=3def8966&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=3def8966&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3def8966\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.operation)?_c('div',{staticClass:\"section rule\",style:({ borderLeftColor: _vm.operation.color || '' })},[_c('div',{staticClass:\"trigger\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'When')))]),_vm._v(\" \"),_c('Event',{attrs:{\"rule\":_vm.rule},on:{\"update\":_vm.updateRule}})],1),_vm._v(\" \"),_vm._l((_vm.rule.checks),function(check,index){return _c('p',{key:index},[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'and')))]),_vm._v(\" \"),_c('Check',{attrs:{\"check\":check,\"rule\":_vm.rule},on:{\"update\":_vm.updateRule,\"validate\":_vm.validate,\"remove\":function($event){return _vm.removeCheck(check)}}})],1)}),_vm._v(\" \"),_c('p',[_c('span'),_vm._v(\" \"),(_vm.lastCheckComplete)?_c('input',{staticClass:\"check--add\",attrs:{\"type\":\"button\",\"value\":_vm.t('workflowengine', 'Add a new filter')},on:{\"click\":_vm.onAddFilter}}):_vm._e()])],2),_vm._v(\" \"),_c('div',{staticClass:\"flow-icon icon-confirm\"}),_vm._v(\" \"),_c('div',{staticClass:\"action\"},[_c('Operation',{attrs:{\"operation\":_vm.operation,\"colored\":false}},[(_vm.operation.options)?_c(_vm.operation.options,{tag:\"component\",on:{\"input\":_vm.updateOperation},model:{value:(_vm.rule.operation),callback:function ($$v) {_vm.$set(_vm.rule, \"operation\", $$v)},expression:\"rule.operation\"}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"buttons\"},[(_vm.rule.id < -1 || _vm.dirty)?_c('NcButton',{on:{\"click\":_vm.cancelRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Cancel'))+\"\\n\\t\\t\\t\")]):(!_vm.dirty)?_c('NcButton',{on:{\"click\":_vm.deleteRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Delete'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":_vm.ruleStatus.type},on:{\"click\":_vm.saveRule},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.ruleStatus.icon,{tag:\"component\",attrs:{\"size\":20}})]},proxy:true}],null,false,2383918876)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.ruleStatus.title)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"error-message\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\")]):_vm._e()],1)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"workflowengine\">\n\t\t<NcSettingsSection :title=\"t('workflowengine', 'Available flows')\"\n\t\t\t:doc-url=\"workflowDocUrl\">\n\t\t\t<p v-if=\"scope === 0\" class=\"settings-hint\">\n\t\t\t\t<a href=\"https://nextcloud.com/developer/\">{{ t('workflowengine', 'For details on how to write your own flow, check out the development documentation.') }}</a>\n\t\t\t</p>\n\n\t\t\t<transition-group name=\"slide\" tag=\"div\" class=\"actions\">\n\t\t\t\t<Operation v-for=\"operation in getMainOperations\"\n\t\t\t\t\t:key=\"operation.id\"\n\t\t\t\t\t:operation=\"operation\"\n\t\t\t\t\t@click.native=\"createNewRule(operation)\" />\n\n\t\t\t\t<a v-if=\"showAppStoreHint\"\n\t\t\t\t\t:key=\"'add'\"\n\t\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\t\tclass=\"actions__item colored more\">\n\t\t\t\t\t<div class=\"icon icon-add\" />\n\t\t\t\t\t<div class=\"actions__item__description\">\n\t\t\t\t\t\t<h3>{{ t('workflowengine', 'More flows') }}</h3>\n\t\t\t\t\t\t<small>{{ t('workflowengine', 'Browse the App Store') }}</small>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</transition-group>\n\n\t\t\t<div v-if=\"hasMoreOperations\" class=\"actions__more\">\n\t\t\t\t<NcButton @click=\"showMoreOperations = !showMoreOperations\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<MenuUp v-if=\"showMoreOperations\" :size=\"20\" />\n\t\t\t\t\t\t<MenuDown v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ showMoreOperations ? t('workflowengine', 'Show less') : t('workflowengine', 'Show more') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\n\t\t\t<h2 v-if=\"scope === 0\" class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Configured flows') }}\n\t\t\t</h2>\n\t\t\t<h2 v-else class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Your flows') }}\n\t\t\t</h2>\n\t\t</NcSettingsSection>\n\n\t\t<transition-group v-if=\"rules.length > 0\" name=\"slide\">\n\t\t\t<Rule v-for=\"rule in rules\" :key=\"rule.id\" :rule=\"rule\" />\n\t\t</transition-group>\n\t</div>\n</template>\n\n<script>\nimport Rule from './Rule.vue'\nimport Operation from './Operation.vue'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport { mapGetters, mapState } from 'vuex'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport MenuUp from 'vue-material-design-icons/MenuUp.vue'\nimport MenuDown from 'vue-material-design-icons/MenuDown.vue'\n\nconst ACTION_LIMIT = 3\n\nexport default {\n\tname: 'Workflow',\n\tcomponents: {\n\t\tNcButton,\n\t\tMenuDown,\n\t\tMenuUp,\n\t\tOperation,\n\t\tRule,\n\t\tNcSettingsSection,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMoreOperations: false,\n\t\t\tappstoreUrl: generateUrl('settings/apps/workflow'),\n\t\t\tworkflowDocUrl: loadState('workflowengine', 'doc-url'),\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters({\n\t\t\trules: 'getRules',\n\t\t}),\n\t\t...mapState({\n\t\t\tappstoreEnabled: 'appstoreEnabled',\n\t\t\tscope: 'scope',\n\t\t\toperations: 'operations',\n\t\t}),\n\t\thasMoreOperations() {\n\t\t\treturn Object.keys(this.operations).length > ACTION_LIMIT\n\t\t},\n\t\tgetMainOperations() {\n\t\t\tif (this.showMoreOperations) {\n\t\t\t\treturn Object.values(this.operations)\n\t\t\t}\n\t\t\treturn Object.values(this.operations).slice(0, ACTION_LIMIT)\n\t\t},\n\t\tshowAppStoreHint() {\n\t\t\treturn this.scope === 0 && this.appstoreEnabled && OC.isUserAdmin()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$store.dispatch('fetchRules')\n\t},\n\tmethods: {\n\t\tcreateNewRule(operation) {\n\t\t\tthis.$store.dispatch('createNewRule', operation)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#workflowengine {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\t.section {\n\t\tmax-width: 100vw;\n\n\t\th2.configured-flows {\n\t\t\tmargin-top: 50px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\t.actions {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 1200px;\n\t\t.actions__item {\n\t\t\tmax-width: 280px;\n\t\t\tflex-basis: 250px;\n\t\t}\n\t}\n\t.actions__more {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.slide-enter-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: ease-in;\n\t\t-webkit-transition-timing-function: ease-in;\n\t\t-o-transition-timing-function: ease-in;\n\t\ttransition-timing-function: ease-in;\n\t}\n\n\t.slide-leave-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t}\n\n\t.slide-enter-to, .slide-leave {\n\t\tmax-height: 500px;\n\t\toverflow: hidden;\n\t}\n\n\t.slide-enter, .slide-leave-to {\n\t\toverflow: hidden;\n\t\tmax-height: 0;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t}\n\n\t@import \"./../styles/operation\";\n\n\t.actions__item.more {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Workflow.vue?vue&type=template&id=4e25e34d&scoped=true&\"\nimport script from \"./Workflow.vue?vue&type=script&lang=js&\"\nexport * from \"./Workflow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Workflow.vue?vue&type=style&index=0&id=4e25e34d&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e25e34d\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\nconst regexIPv4 = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|[1-2][0-9]|[1-9])$/\nconst regexIPv6 = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/\n\nconst validateRegex = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexRegex.exec(string) !== null\n}\n\nconst validateIPv4 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv4.exec(string) !== null\n}\n\nconst validateIPv6 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv6.exec(string) !== null\n}\n\nconst stringValidator = (check) => {\n\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\treturn validateRegex(check.value)\n\t}\n\treturn true\n}\n\nexport { validateRegex, stringValidator, validateIPv4, validateIPv6 }\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a file type'),\"label\":\"label\",\"options\":_vm.options,\"clearable\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [(option.icon)?_c('span',{staticClass:\"option__icon\",class:option.icon}):_c('span',{staticClass:\"option__icon-img\"},[_c('img',{attrs:{\"src\":option.iconUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(option.label)}})],1)]}},{key:\"selected-option\",fn:function(selectedOption){return [(selectedOption.icon)?_c('span',{staticClass:\"option__icon\",class:selectedOption.icon}):_c('span',{staticClass:\"option__icon-img\"},[_c('img',{attrs:{\"src\":selectedOption.iconUrl,\"alt\":\"\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(selectedOption.label)}})],1)]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.t('workflowengine', 'e.g. httpd/unix-directory')},domProps:{\"value\":_vm.currentValue.id},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst valueMixin = {\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t}\n\t},\n\twatch: {\n\t\tvalue: {\n\t\t\timmediate: true,\n\t\t\thandler(value) {\n\t\t\t\tthis.updateInternalValue(value)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\tthis.newValue = value\n\t\t},\n\t},\n}\n\nexport default valueMixin\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:clearable=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span v-if=\"option.icon\" class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span v-else class=\"option__icon-img\">\n\t\t\t\t\t<img :src=\"option.iconUrl\" alt=\"\">\n\t\t\t\t</span>\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span v-if=\"selectedOption.icon\" class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span v-else class=\"option__icon-img\">\n\t\t\t\t\t<img :src=\"selectedOption.iconUrl\" alt=\"\">\n\t\t\t\t</span>\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.id\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from './../../mixins/valueMixin.js'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tid: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tid: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tid: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tid: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.id)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom MIME type'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.id)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n.v-select,\ninput[type='text'] {\n\twidth: 100%;\n}\n\ninput[type=text] {\n\tmin-height: 48px;\n}\n\n.option__icon,\n.option__icon-img {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: center;\n\tvertical-align: middle;\n}\n\n.option__icon-img {\n\ttext-align: center;\n}\n\n.option__title {\n\tdisplay: inline-flex;\n\twidth: calc(100% - 36px);\n\tvertical-align: middle;\n}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileMimeType.vue?vue&type=template&id=1a11f354&scoped=true&\"\nimport script from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nexport * from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileMimeType.vue?vue&type=style&index=0&id=1a11f354&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a11f354\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcSelectTags',{attrs:{\"multiple\":false},on:{\"input\":_vm.update},model:{value:(_vm.newValue),callback:function ($$v) {_vm.newValue=$$v},expression:\"newValue\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<NcSelectTags v-model=\"newValue\"\n\t\t:multiple=\"false\"\n\t\t@input=\"update\" />\n</template>\n\n<script>\nimport NcSelectTags from '@nextcloud/vue/dist/Components/NcSelectTags.js'\n\nexport default {\n\tname: 'FileSystemTag',\n\tcomponents: {\n\t\tNcSelectTags,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: [],\n\t\t}\n\t},\n\twatch: {\n\t\tvalue() {\n\t\t\tthis.updateValue()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.updateValue()\n\t},\n\tmethods: {\n\t\tupdateValue() {\n\t\t\tif (this.value !== '') {\n\t\t\t\tthis.newValue = parseInt(this.value)\n\t\t\t} else {\n\t\t\t\tthis.newValue = null\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tthis.$emit('input', this.newValue || '')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FileSystemTag.vue?vue&type=template&id=3bb09106&scoped=true&\"\nimport script from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\nexport * from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3bb09106\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { stringValidator, validateIPv4, validateIPv6 } from '../../helpers/validators.js'\nimport FileMimeType from './FileMimeType.vue'\nimport FileSystemTag from './FileSystemTag.vue'\n\nconst stringOrRegexOperators = () => {\n\treturn [\n\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t]\n}\n\nconst FileChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName',\n\t\tname: t('workflowengine', 'File name'),\n\t\toperators: stringOrRegexOperators,\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\treturn '/^dummy-.+$/i'\n\t\t\t}\n\t\t\treturn 'filename.txt'\n\t\t},\n\t\tvalidate: stringValidator,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType',\n\t\tname: t('workflowengine', 'File MIME type'),\n\t\toperators: stringOrRegexOperators,\n\t\tcomponent: FileMimeType,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize',\n\t\tname: t('workflowengine', 'File size (upload)'),\n\t\toperators: [\n\t\t\t{ operator: 'less', name: t('workflowengine', 'less') },\n\t\t\t{ operator: '!greater', name: t('workflowengine', 'less or equals') },\n\t\t\t{ operator: '!less', name: t('workflowengine', 'greater or equals') },\n\t\t\t{ operator: 'greater', name: t('workflowengine', 'greater') },\n\t\t],\n\t\tplaceholder: (check) => '5 MB',\n\t\tvalidate: (check) => check.value ? check.value.match(/^[0-9]+[ ]?[kmgt]?b$/i) !== null : false,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress',\n\t\tname: t('workflowengine', 'Request remote address'),\n\t\toperators: [\n\t\t\t{ operator: 'matchesIPv4', name: t('workflowengine', 'matches IPv4') },\n\t\t\t{ operator: '!matchesIPv4', name: t('workflowengine', 'does not match IPv4') },\n\t\t\t{ operator: 'matchesIPv6', name: t('workflowengine', 'matches IPv6') },\n\t\t\t{ operator: '!matchesIPv6', name: t('workflowengine', 'does not match IPv6') },\n\t\t],\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn '::1/128'\n\t\t\t}\n\t\t\treturn '127.0.0.1/32'\n\t\t},\n\t\tvalidate: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn validateIPv6(check.value)\n\t\t\t}\n\t\t\treturn validateIPv4(check.value)\n\t\t},\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags',\n\t\tname: t('workflowengine', 'File system tag'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is tagged with') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not tagged with') },\n\t\t],\n\t\tcomponent: FileSystemTag,\n\t},\n]\n\nexport default FileChecks\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:clearable=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ id: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ id: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ id: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.id)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.v-select,\n\tinput[type='text'] {\n\t\twidth: 100%;\n\t}\n\tinput[type='text'] {\n\t\tmin-height: 48px;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: center;\n\t\tvertical-align: middle;\n\t}\n\n\t.option__title {\n\t\tdisplay: inline-flex;\n\t\twidth: calc(100% - 36px);\n\t\tvertical-align: middle;\n\t}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserAgent.vue?vue&type=template&id=003881d4&scoped=true&\"\nimport script from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserAgent.vue?vue&type=style&index=0&id=003881d4&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"003881d4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a user agent'),\"label\":\"label\",\"options\":_vm.options,\"clearable\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_c('span',{staticClass:\"option__icon\",class:option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(option.label)}})],1)]}},{key:\"selected-option\",fn:function(selectedOption){return [_c('span',{staticClass:\"option__icon\",class:selectedOption.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(selectedOption.label)}})],1)]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"timeslot\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.startTime),expression:\"newValue.startTime\"}],staticClass:\"timeslot--start\",attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 08:00\"},domProps:{\"value\":(_vm.newValue.startTime)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.newValue, \"startTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.endTime),expression:\"newValue.endTime\"}],attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 18:00\"},domProps:{\"value\":(_vm.newValue.endTime)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.$set(_vm.newValue, \"endTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),(!_vm.valid)?_c('p',{staticClass:\"invalid-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Please enter a valid time span'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcSelect',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.valid),expression:\"valid\"}],attrs:{\"clearable\":false,\"options\":_vm.timezones},on:{\"input\":_vm.update},model:{value:(_vm.newValue.timezone),callback:function ($$v) {_vm.$set(_vm.newValue, \"timezone\", $$v)},expression:\"newValue.timezone\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"timeslot\">\n\t\t<input v-model=\"newValue.startTime\"\n\t\t\ttype=\"text\"\n\t\t\tclass=\"timeslot--start\"\n\t\t\tplaceholder=\"e.g. 08:00\"\n\t\t\t@input=\"update\">\n\t\t<input v-model=\"newValue.endTime\"\n\t\t\ttype=\"text\"\n\t\t\tplaceholder=\"e.g. 18:00\"\n\t\t\t@input=\"update\">\n\t\t<p v-if=\"!valid\" class=\"invalid-hint\">\n\t\t\t{{ t('workflowengine', 'Please enter a valid time span') }}\n\t\t</p>\n\t\t<NcSelect v-show=\"valid\"\n\t\t\tv-model=\"newValue.timezone\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"timezones\"\n\t\t\t@input=\"update\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport moment from 'moment-timezone'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nconst zones = moment.tz.names()\nexport default {\n\tname: 'RequestTime',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttimezones: zones,\n\t\t\tvalid: false,\n\t\t\tnewValue: {\n\t\t\t\tstartTime: null,\n\t\t\t\tendTime: null,\n\t\t\t\ttimezone: moment.tz.guess(),\n\t\t\t},\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(value)\n\t\t\t\tif (data.length === 2) {\n\t\t\t\t\tthis.newValue = {\n\t\t\t\t\t\tstartTime: data[0].split(' ', 2)[0],\n\t\t\t\t\t\tendTime: data[1].split(' ', 2)[0],\n\t\t\t\t\t\ttimezone: data[0].split(' ', 2)[1],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// ignore invalid values\n\t\t\t}\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& this.newValue.endTime && this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& moment.tz.zone(this.newValue.timezone) !== null\n\t\t\tif (this.valid) {\n\t\t\t\tthis.$emit('valid')\n\t\t\t} else {\n\t\t\t\tthis.$emit('invalid')\n\t\t\t}\n\t\t\treturn this.valid\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.newValue.timezone === null) {\n\t\t\t\tthis.newValue.timezone = moment.tz.guess()\n\t\t\t}\n\t\t\tif (this.validate()) {\n\t\t\t\tconst output = `[\"${this.newValue.startTime} ${this.newValue.timezone}\",\"${this.newValue.endTime} ${this.newValue.timezone}\"]`\n\t\t\t\tthis.$emit('input', output)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.timeslot {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 180px;\n\n\t\t.multiselect {\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\twidth: 50%;\n\t\t\tmargin: 0;\n\t\t\tmargin-bottom: 5px;\n\t\t\tmin-height: 48px;\n\n\t\t\t&.timeslot--start {\n\t\t\t\tmargin-right: 5px;\n\t\t\t\twidth: calc(50% - 5px);\n\t\t\t}\n\t\t}\n\n\t\t.invalid-hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestTime.vue?vue&type=template&id=7a2ecc67&scoped=true&\"\nimport script from \"./RequestTime.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestTime.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestTime.vue?vue&type=style&index=0&id=7a2ecc67&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a2ecc67\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"options\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<span class=\"option__icon\" :class=\"option.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(option.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #selected-option=\"selectedOption\">\n\t\t\t\t<span class=\"option__icon\" :class=\"selectedOption.icon\" />\n\t\t\t\t<span class=\"option__title\">\n\t\t\t\t\t<NcEllipsisedOption :name=\"String(selectedOption.label)\" />\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.id\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport valueMixin from '../../mixins/valueMixin.js'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tNcEllipsisedOption,\n\t\tNcSelect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-files-dark',\n\t\t\t\t\tid: 'webdav',\n\t\t\t\t\tlabel: t('workflowengine', 'Files WebDAV'),\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.id)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tid: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tid: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.id\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n\t.v-select,\n\tinput[type='text'] {\n\t\twidth: 100%;\n\t}\n\tinput[type='text'] {\n\t\tmin-height: 48px;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: center;\n\t\tvertical-align: middle;\n\t}\n\n\t.option__title {\n\t\tdisplay: inline-flex;\n\t\twidth: calc(100% - 36px);\n\t\tvertical-align: middle;\n\t}\n</style>\n","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestURL.vue?vue&type=template&id=1a72d97f&scoped=true&\"\nimport script from \"./RequestURL.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestURL.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestURL.vue?vue&type=style&index=0&id=1a72d97f&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a72d97f\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a request URL'),\"label\":\"label\",\"clearable\":false,\"options\":_vm.options},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_c('span',{staticClass:\"option__icon\",class:option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(option.label)}})],1)]}},{key:\"selected-option\",fn:function(selectedOption){return [_c('span',{staticClass:\"option__icon\",class:selectedOption.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_c('NcEllipsisedOption',{attrs:{\"name\":String(selectedOption.label)}})],1)]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.currentValue.id},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSelect',{attrs:{\"value\":_vm.currentValue,\"loading\":_vm.status.isLoading && _vm.groups.length === 0,\"options\":_vm.groups,\"clearable\":false,\"label\":\"displayname\",\"track-by\":\"id\"},on:{\"search-change\":_vm.searchAsync,\"input\":(value) => _vm.$emit('input', value.id)}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (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 Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcSelect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:clearable=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n.v-select {\n\twidth: 100%;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserGroup.vue?vue&type=template&id=07a6a476&scoped=true&\"\nimport script from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserGroup.vue?vue&type=style&index=0&id=07a6a476&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07a6a476\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport FileChecks from './file.js'\nimport RequestChecks from './request.js'\n\nexport default [...FileChecks, ...RequestChecks]\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport RequestUserAgent from './RequestUserAgent.vue'\nimport RequestTime from './RequestTime.vue'\nimport RequestURL from './RequestURL.vue'\nimport RequestUserGroup from './RequestUserGroup.vue'\n\nconst RequestChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL',\n\t\tname: t('workflowengine', 'Request URL'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestURL,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime',\n\t\tname: t('workflowengine', 'Request time'),\n\t\toperators: [\n\t\t\t{ operator: 'in', name: t('workflowengine', 'between') },\n\t\t\t{ operator: '!in', name: t('workflowengine', 'not between') },\n\t\t],\n\t\tcomponent: RequestTime,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent',\n\t\tname: t('workflowengine', 'Request user agent'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestUserAgent,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership',\n\t\tname: t('workflowengine', 'User group membership'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is member of') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not member of') },\n\t\t],\n\t\tcomponent: RequestUserGroup,\n\t},\n]\n\nexport default RequestChecks\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (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 Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport store from './store.js'\nimport Settings from './components/Workflow.vue'\nimport ShippedChecks from './components/Checks/index.js'\n\n/**\n * A plugin for displaying a custom value field for checks\n *\n * @typedef {object} CheckPlugin\n * @property {string} class - The PHP class name of the check\n * @property {Comparison[]} operators - A list of possible comparison operations running on the check\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n * @property {Function} placeholder - Return a placeholder of no custom component is used\n * @property {Function} validate - validate a check if no custom component is used\n */\n\n/**\n * A plugin for extending the admin page representation of an operator\n *\n * @typedef {object} OperatorPlugin\n * @property {string} id - The PHP class name of the check\n * @property {string} operation - Default value for the operation field\n * @property {string} color - Custom color code to be applied for the operator selector\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n */\n\n/**\n * @typedef {object} Comparison\n * @property {string} operator - value the comparison should have, e.g. !less, greater\n * @property {string} name - Translated readable text, e.g. less or equals\n */\n\n/**\n * Public javascript api for apps to register custom plugins\n */\nwindow.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {\n\n\t/**\n\t *\n\t * @param {CheckPlugin} Plugin the plugin to register\n\t */\n\tregisterCheck(Plugin) {\n\t\tstore.commit('addPluginCheck', Plugin)\n\t},\n\t/**\n\t *\n\t * @param {OperatorPlugin} Plugin the plugin to register\n\t */\n\tregisterOperator(Plugin) {\n\t\tstore.commit('addPluginOperator', Plugin)\n\t},\n})\n\n// Register shipped checks\nShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))\n\nVue.use(Vuex)\nVue.prototype.t = t\n\nconst View = Vue.extend(Settings)\nconst workflowengine = new View({\n\tstore,\n})\nworkflowengine.$mount('#workflowengine')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".check[data-v-e3633862]{display:flex;flex-wrap:wrap;align-items:flex-start;width:100%;padding-right:20px}.check>*[data-v-e3633862]:not(.close){width:180px}.check>.comparator[data-v-e3633862]{min-width:200px;width:200px}.check>.option[data-v-e3633862]{min-width:260px;width:260px;min-height:48px}.check>.option>input[type=text][data-v-e3633862]{min-height:48px}.check>.v-select[data-v-e3633862],.check>.button-vue[data-v-e3633862],.check>input[type=text][data-v-e3633862]{margin-right:5px;margin-bottom:5px}input[type=text][data-v-e3633862]{margin:0}.invalid[data-v-e3633862]{border-color:var(--color-error) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Check.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,YAAA,CACA,cAAA,CACA,sBAAA,CACA,UAAA,CACA,kBAAA,CAEA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CACA,eAAA,CAEA,iDACC,eAAA,CAGF,+GAGC,gBAAA,CACA,iBAAA,CAGF,kCACC,QAAA,CAED,0BACC,0CAAA\",\"sourcesContent\":[\"\\n.check {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\talign-items: flex-start; // to not stretch components vertically\\n\\twidth: 100%;\\n\\tpadding-right: 20px;\\n\\n\\t& > *:not(.close) {\\n\\t\\twidth: 180px;\\n\\t}\\n\\t& > .comparator {\\n\\t\\tmin-width: 200px;\\n\\t\\twidth: 200px;\\n\\t}\\n\\t& > .option {\\n\\t\\tmin-width: 260px;\\n\\t\\twidth: 260px;\\n\\t\\tmin-height: 48px;\\n\\n\\t\\t& > input[type=text] {\\n\\t\\t\\tmin-height: 48px;\\n\\t\\t}\\n\\t}\\n\\t& > .v-select,\\n\\t& > .button-vue,\\n\\t& > input[type=text] {\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n}\\ninput[type=text] {\\n\\tmargin: 0;\\n}\\n.invalid {\\n\\tborder-color: var(--color-error) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-select[data-v-1a11f354],input[type=text][data-v-1a11f354]{width:100%}input[type=text][data-v-1a11f354]{min-height:48px}.option__icon[data-v-1a11f354],.option__icon-img[data-v-1a11f354]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__icon-img[data-v-1a11f354]{text-align:center}.option__title[data-v-1a11f354]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue\"],\"names\":[],\"mappings\":\"AACA,6DAEC,UAAA,CAGD,kCACC,eAAA,CAGD,kEAEC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,mCACC,iBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA\",\"sourcesContent\":[\"\\n.v-select,\\ninput[type='text'] {\\n\\twidth: 100%;\\n}\\n\\ninput[type=text] {\\n\\tmin-height: 48px;\\n}\\n\\n.option__icon,\\n.option__icon-img {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: center;\\n\\tvertical-align: middle;\\n}\\n\\n.option__icon-img {\\n\\ttext-align: center;\\n}\\n\\n.option__title {\\n\\tdisplay: inline-flex;\\n\\twidth: calc(100% - 36px);\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeslot[data-v-7a2ecc67]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-7a2ecc67]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-7a2ecc67] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-7a2ecc67]{width:50%;margin:0;margin-bottom:5px;min-height:48px}.timeslot input[type=text].timeslot--start[data-v-7a2ecc67]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-7a2ecc67]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CACA,eAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA\",\"sourcesContent\":[\"\\n.timeslot {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 180px;\\n\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\\n\\t\\tborder: 1px solid transparent;\\n\\t}\\n\\n\\tinput[type=text] {\\n\\t\\twidth: 50%;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-bottom: 5px;\\n\\t\\tmin-height: 48px;\\n\\n\\t\\t&.timeslot--start {\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\twidth: calc(50% - 5px);\\n\\t\\t}\\n\\t}\\n\\n\\t.invalid-hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".v-select[data-v-1a72d97f],input[type=text][data-v-1a72d97f]{width:100%}input[type=text][data-v-1a72d97f]{min-height:48px}.option__icon[data-v-1a72d97f]{display:inline-block;min-width:30px;background-position:center;vertical-align:middle}.option__title[data-v-1a72d97f]{display:inline-flex;width:calc(100% - 36px);vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue\"],\"names\":[],\"mappings\":\"AACA,6DAEC,UAAA,CAED,kCACC,eAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,0BAAA,CACA,qBAAA,CAGD,gCACC,mBAAA,CACA,uBAAA,CACA,qBAAA\",\"sourcesContent\":[\"\\n.v-select,\\ninput[type='text'] {\\n\\twidth: 100%;\\n}\\ninput[type='text'] {\\n\\tmin-height: 48px;\\n}\\n\\n.option__icon {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: center;\\n\\tvertical-align: middle;\\n}\\n\\n.option__title {\\n\\tdisplay: inline-flex;\\n\\twidth: calc(100% - 36px);\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".event[data-v-1825d70e]{margin-bottom:5px}.isComplex img[data-v-1825d70e]{vertical-align:text-top}.isComplex span[data-v-1825d70e]{padding-top:2px;display:inline-block}.multiselect[data-v-1825d70e]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-1825d70e] .multiselect__single{display:flex}.multiselect[data-v-1825d70e]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-1825d70e] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-1825d70e]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-1825d70e]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-1825d70e]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-1825d70e]{font-weight:900}.option__icon[data-v-1825d70e]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-1825d70e],.eventlist .text[data-v-1825d70e]{vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Event.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA\",\"sourcesContent\":[\"\\n.event {\\n\\tmargin-bottom: 5px;\\n}\\n.isComplex {\\n\\timg {\\n\\t\\tvertical-align: text-top;\\n\\t}\\n\\tspan {\\n\\t\\tpadding-top: 2px;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n.multiselect {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n\\tmargin-top: 4px;\\n}\\n.multiselect::v-deep .multiselect__single {\\n\\tdisplay: flex;\\n}\\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\tborder: 1px solid transparent;\\n}\\n\\n.multiselect::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\theight: auto;\\n\\tmin-height: 34px;\\n}\\n\\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\\n\\tbackground-image: var(--icon-triangle-s-dark);\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: right center;\\n}\\n\\ninput {\\n\\tborder: 1px solid transparent;\\n}\\n\\n.option__title {\\n\\tmargin-left: 5px;\\n\\tcolor: var(--color-main-text);\\n}\\n.option__title_single {\\n\\tfont-weight: 900;\\n}\\n\\n.option__icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tfilter: var(--background-invert-if-dark);\\n}\\n\\n.eventlist img,\\n.eventlist .text {\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions__item[data-v-a0480332]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-a0480332]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-a0480332]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-a0480332]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-a0480332],small[data-v-a0480332]{padding:6px;display:block}h3[data-v-a0480332]{margin:0;padding:0;font-weight:600}small[data-v-a0480332]{font-size:10pt;flex-grow:1}.colored[data-v-a0480332]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-a0480332],.colored:not(.more) small[data-v-a0480332]{color:var(--color-primary-element-text)}.actions__item[data-v-a0480332]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-a0480332]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-a0480332]{padding:0}.actions__item:not(.colored) .icon[data-v-a0480332]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-a0480332]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-a0480332]{filter:var(--background-invert-if-bright)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,uCAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA\",\"sourcesContent\":[\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-element-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".buttons[data-v-3def8966]{display:flex;justify-content:end}.buttons button[data-v-3def8966]{margin-left:5px}.buttons button[data-v-3def8966]:last-child{margin-right:10px}.error-message[data-v-3def8966]{float:right;margin-right:10px}.flow-icon[data-v-3def8966]{width:44px}.rule[data-v-3def8966]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{flex-grow:1;min-height:100px;max-width:920px}.rule .action[data-v-3def8966]{max-width:400px;position:relative}.rule .icon-confirm[data-v-3def8966]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-3def8966],.action p[data-v-3def8966]{min-height:34px;display:flex}.trigger p>span[data-v-3def8966],.action p>span[data-v-3def8966]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-3def8966],.action p .multiselect[data-v-3def8966]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-3def8966]{padding-top:3px}.trigger p[data-v-3def8966]:last-child{padding-top:8px}.check--add[data-v-3def8966]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-3def8966],.rule .trigger[data-v-3def8966],.rule .action[data-v-3def8966]{width:100%;max-width:100%}.rule .flow-icon[data-v-3def8966]{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Rule.vue\"],\"names\":[],\"mappings\":\"AAEA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DAEC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAEF,uCACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA\",\"sourcesContent\":[\"\\n\\n.buttons {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\n\\tbutton {\\n\\t\\tmargin-left: 5px;\\n\\t}\\n\\tbutton:last-child{\\n\\t\\tmargin-right: 10px;\\n\\t}\\n}\\n\\n.error-message {\\n\\tfloat: right;\\n\\tmargin-right: 10px;\\n}\\n\\n.flow-icon {\\n\\twidth: 44px;\\n}\\n\\n.rule {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-left: 5px solid var(--color-primary-element);\\n\\n\\t.trigger,\\n\\t.action {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-height: 100px;\\n\\t\\tmax-width: 920px;\\n\\t}\\n\\t.action {\\n\\t\\tmax-width: 400px;\\n\\t\\tposition: relative;\\n\\t}\\n\\t.icon-confirm {\\n\\t\\tbackground-position: right 27px;\\n\\t\\tpadding-right: 20px;\\n\\t\\tmargin-right: 20px;\\n\\t}\\n}\\n.trigger p, .action p {\\n\\tmin-height: 34px;\\n\\tdisplay: flex;\\n\\n\\t& > span {\\n\\t\\tmin-width: 50px;\\n\\t\\ttext-align: right;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-right: 10px;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 300px;\\n\\t}\\n}\\n.trigger p:first-child span {\\n\\t\\tpadding-top: 3px;\\n}\\n.trigger p:last-child {\\n\\t\\tpadding-top: 8px;\\n}\\n\\n.check--add {\\n\\tbackground-position: 7px center;\\n\\tbackground-color: transparent;\\n\\tpadding-left: 6px;\\n\\tmargin: 0;\\n\\twidth: 180px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tfont-weight: normal;\\n\\ttext-align: left;\\n\\tfont-size: 1em;\\n}\\n\\n@media (max-width:1400px) {\\n\\t.rule {\\n\\t\\t&, .trigger, .action {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.flow-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#workflowengine[data-v-4e25e34d]{border-bottom:1px solid var(--color-border)}.section[data-v-4e25e34d]{max-width:100vw}.section h2.configured-flows[data-v-4e25e34d]{margin-top:50px;margin-bottom:0}.actions[data-v-4e25e34d]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-4e25e34d]{max-width:280px;flex-basis:250px}.actions__more[data-v-4e25e34d]{margin-bottom:10px}.slide-enter-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-4e25e34d]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-4e25e34d],.slide-leave[data-v-4e25e34d]{max-height:500px;overflow:hidden}.slide-enter[data-v-4e25e34d],.slide-leave-to[data-v-4e25e34d]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-4e25e34d]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-4e25e34d]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-4e25e34d]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-4e25e34d]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-4e25e34d],small[data-v-4e25e34d]{padding:6px;display:block}h3[data-v-4e25e34d]{margin:0;padding:0;font-weight:600}small[data-v-4e25e34d]{font-size:10pt;flex-grow:1}.colored[data-v-4e25e34d]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-4e25e34d],.colored:not(.more) small[data-v-4e25e34d]{color:var(--color-primary-element-text)}.actions__item[data-v-4e25e34d]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-4e25e34d]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-4e25e34d]{padding:0}.actions__item:not(.colored) .icon[data-v-4e25e34d]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-4e25e34d]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-4e25e34d]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-4e25e34d]{background-color:var(--color-background-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Workflow.vue\",\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AACA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCxDD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,uCAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDfD,qCACC,6CAAA\",\"sourcesContent\":[\"\\n#workflowengine {\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n.section {\\n\\tmax-width: 100vw;\\n\\n\\th2.configured-flows {\\n\\t\\tmargin-top: 50px;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n.actions {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 1200px;\\n\\t.actions__item {\\n\\t\\tmax-width: 280px;\\n\\t\\tflex-basis: 250px;\\n\\t}\\n}\\n.actions__more {\\n\\tmargin-bottom: 10px;\\n}\\n\\n.slide-enter-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: ease-in;\\n\\t-webkit-transition-timing-function: ease-in;\\n\\t-o-transition-timing-function: ease-in;\\n\\ttransition-timing-function: ease-in;\\n}\\n\\n.slide-leave-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n}\\n\\n.slide-enter-to, .slide-leave {\\n\\tmax-height: 500px;\\n\\toverflow: hidden;\\n}\\n\\n.slide-enter, .slide-leave-to {\\n\\toverflow: hidden;\\n\\tmax-height: 0;\\n\\tpadding-top: 0;\\n\\tpadding-bottom: 0;\\n}\\n\\n@import \\\"./../styles/operation\\\";\\n\\n.actions__item.more {\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\",\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-element-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-select[data-v-003881d4],\\ninput[type='text'][data-v-003881d4] {\\n\\twidth: 100%;\\n}\\ninput[type='text'][data-v-003881d4] {\\n\\tmin-height: 48px;\\n}\\n.option__icon[data-v-003881d4] {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: center;\\n\\tvertical-align: middle;\\n}\\n.option__title[data-v-003881d4] {\\n\\tdisplay: inline-flex;\\n\\twidth: calc(100% - 36px);\\n\\tvertical-align: middle;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue\"],\"names\":[],\"mappings\":\";AAmJA;;CAEA,WAAA;AACA;AACA;CACA,gBAAA;AACA;AAEA;CACA,qBAAA;CACA,eAAA;CACA,2BAAA;CACA,sBAAA;AACA;AAEA;CACA,oBAAA;CACA,wBAAA;CACA,sBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (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 Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcSelect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a user agent')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:clearable=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template #option=\\\"option\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"option.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">\\n\\t\\t\\t\\t\\t<NcEllipsisedOption :name=\\\"String(option.label)\\\" />\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template #selected-option=\\\"selectedOption\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"selectedOption.icon\\\" />\\n\\t\\t\\t\\t<span class=\\\"option__title\\\">\\n\\t\\t\\t\\t\\t<NcEllipsisedOption :name=\\\"String(selectedOption.label)\\\" />\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</template>\\n\\t\\t</NcSelect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcEllipsisedOption from '@nextcloud/vue/dist/Components/NcEllipsisedOption.js'\\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\\nimport valueMixin from '../../mixins/valueMixin.js'\\n\\nexport default {\\n\\tname: 'RequestUserAgent',\\n\\tcomponents: {\\n\\t\\tNcEllipsisedOption,\\n\\t\\tNcSelect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{ id: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ id: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ id: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\\n\\t\\t\\t\\t{ id: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.find((type) => this.newValue === type.id)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tid: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tid: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.id\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.v-select,\\n\\tinput[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\tinput[type='text'] {\\n\\t\\tmin-height: 48px;\\n\\t}\\n\\n\\t.option__icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmin-width: 30px;\\n\\t\\tbackground-position: center;\\n\\t\\tvertical-align: middle;\\n\\t}\\n\\n\\t.option__title {\\n\\t\\tdisplay: inline-flex;\\n\\t\\twidth: calc(100% - 36px);\\n\\t\\tvertical-align: middle;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-select[data-v-07a6a476] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue\"],\"names\":[],\"mappings\":\";AA4GA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (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 Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcSelect :value=\\\"currentValue\\\"\\n\\t\\t\\t:loading=\\\"status.isLoading && groups.length === 0\\\"\\n\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t:clearable=\\\"false\\\"\\n\\t\\t\\tlabel=\\\"displayname\\\"\\n\\t\\t\\ttrack-by=\\\"id\\\"\\n\\t\\t\\t@search-change=\\\"searchAsync\\\"\\n\\t\\t\\t@input=\\\"(value) => $emit('input', value.id)\\\" />\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\\nimport axios from '@nextcloud/axios'\\nimport { generateOcsUrl } from '@nextcloud/router'\\n\\nconst groups = []\\nconst status = {\\n\\tisLoading: false,\\n}\\n\\nexport default {\\n\\tname: 'RequestUserGroup',\\n\\tcomponents: {\\n\\t\\tNcSelect,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\tdefault: '',\\n\\t\\t},\\n\\t\\tcheck: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\tdefault: () => { return {} },\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgroups,\\n\\t\\t\\tstatus,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcurrentValue() {\\n\\t\\t\\treturn this.groups.find(group => group.id === this.value) || null\\n\\t\\t},\\n\\t},\\n\\tasync mounted() {\\n\\t\\tif (this.groups.length === 0) {\\n\\t\\t\\tawait this.searchAsync('')\\n\\t\\t}\\n\\t\\tif (this.currentValue === null) {\\n\\t\\t\\tawait this.searchAsync(this.value)\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchAsync(searchQuery) {\\n\\t\\t\\tif (this.status.isLoading) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.status.isLoading = true\\n\\t\\t\\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\\n\\t\\t\\t\\tresponse.data.ocs.data.groups.forEach((group) => {\\n\\t\\t\\t\\t\\tthis.addGroup({\\n\\t\\t\\t\\t\\t\\tid: group.id,\\n\\t\\t\\t\\t\\t\\tdisplayname: group.displayname,\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tthis.status.isLoading = false\\n\\t\\t\\t}, (error) => {\\n\\t\\t\\t\\tconsole.error('Error while loading group list', error.response)\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddGroup(group) {\\n\\t\\t\\tconst index = this.groups.findIndex((item) => item.id === group.id)\\n\\t\\t\\tif (index === -1) {\\n\\t\\t\\t\\tthis.groups.push(group)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n.v-select {\\n\\twidth: 100%;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8318;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8318: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(71374)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","scopeValue","loadState","getApiUrl","url","generateOcsUrl","Vue","Vuex","Store","state","rules","scope","appstoreEnabled","operations","plugins","checks","operators","entities","events","map","entity","event","id","concat","eventName","flat","mutations","addRule","rule","push","valid","updateRule","index","findIndex","item","newRule","Object","assign","removeRule","splice","addPluginCheck","plugin","class","addPluginOperator","color","actions","async","context","data","axios","values","ocs","forEach","commit","createNewRule","isComplex","fixedEntity","find","Date","getTime","name","operator","value","operation","JSON","parse","result","confirmPassword","setValid","_ref","getters","getRules","filter","sort","rule1","rule2","getOperationForRule","getEntityForOperation","getEventsForOperation","getChecksForEntity","check","supportedEntities","indexOf","length","reduce","obj","components","NcMultiselect","props","type","required","computed","$store","allEvents","currentEvent","methods","updateEvent","showWarning","t","existingEntity","newEntities","self","newEntity","$set","$emit","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","icon","_v","_s","triggerHint","on","scopedSlots","_u","key","fn","isOpen","_l","displayName","_e","option","NcActionButton","NcActions","NcSelect","CloseIcon","directives","ClickOutside","deleteVisible","currentOption","currentOperator","currentComponent","component","valuePlaceholder","placeholder","watch","validate","mounted","$nextTick","$refs","checkSelector","$el","focus","showDelete","hideDelete","invalid","updateCheck","matchingOperator","rawName","expression","ref","model","callback","$$v","tag","$event","domProps","target","composing","proxy","NcButton","colored","Boolean","default","style","backgroundColor","iconClass","backgroundImage","description","_t","ArrowRight","Check","CheckMark","Close","Event","Operation","Tooltip","editing","error","dirty","originalRule","ruleStatus","some","title","tooltip","placement","show","content","lastCheckComplete","lastCheck","stringify","dispatch","e","console","response","meta","message","cancelRule","$delete","onAddFilter","borderLeftColor","removeCheck","updateOperation","deleteRule","saveRule","MenuDown","MenuUp","Rule","NcSettingsSection","showMoreOperations","appstoreUrl","generateUrl","workflowDocUrl","mapGetters","mapState","hasMoreOperations","keys","getMainOperations","slice","showAppStoreHint","OC","isUserAdmin","nativeOn","regexRegex","regexIPv4","regexIPv6","String","newValue","immediate","handler","updateInternalValue","NcEllipsisedOption","mixins","valueMixin","predefinedTypes","label","iconUrl","imagePath","customValue","isPredefined","currentValue","validateRegex","string","exec","setValue","updateCustom","selectedOption","NcSelectTags","updateValue","beforeMount","parseInt","update","stringOrRegexOperators","FileMimeType","match","validateIPv4","FileSystemTag","matchingPredefined","pattern","zones","moment","timezones","startTime","endTime","timezone","split","output","groups","status","isLoading","group","searchAsync","searchQuery","then","addGroup","displayname","FileChecks","RequestURL","RequestTime","RequestUserAgent","RequestUserGroup","window","OCA","WorkflowEngine","registerCheck","Plugin","store","registerOperator","ShippedChecks","checkPlugin","Settings","$mount","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/l10n/ast.js b/lib/l10n/ast.js index e405a3a62a2..a6d361a6810 100644 --- a/lib/l10n/ast.js +++ b/lib/l10n/ast.js @@ -1,17 +1,24 @@ OC.L10N.register( "lib", { + "Other activities" : "Otres actividaes", "The library %s is not available." : "La biblioteca «%s» nun ta disponible.", "Authentication" : "Autenticación", "today" : "güei", "yesterday" : "ayeri", + "Help" : "Ayuda", "Apps" : "Aplicaciones", "Settings" : "Configuración", "Twitter" : "Twitter", + "Website" : "Sitiu web", "Additional settings" : "Configuración adicional", + "%1$s via %2$s" : "%1$s per %2$s", "You are not allowed to share %s" : "Nun tienes permisu pa compartir «%s»", "Sunday" : "Domingu", "Monday" : "Llunes", + "Tuesday" : "Martes", + "Wednesday" : "Miércoles", + "Thursday" : "Xueves", "Friday" : "Vienres", "Saturday" : "Sábadu", "Fri." : "Vie.", @@ -33,6 +40,7 @@ OC.L10N.register( "Sep." : "Set.", "Oct." : "Och.", "Nov." : "Pay.", - "Application is not enabled" : "L'aplicación nun ta activada" + "Application is not enabled" : "L'aplicación nun ta activada", + "Full name" : "Nome completu" }, "nplurals=2; plural=(n != 1);"); diff --git a/lib/l10n/ast.json b/lib/l10n/ast.json index 078e47e0612..37d825a0b12 100644 --- a/lib/l10n/ast.json +++ b/lib/l10n/ast.json @@ -1,15 +1,22 @@ { "translations": { + "Other activities" : "Otres actividaes", "The library %s is not available." : "La biblioteca «%s» nun ta disponible.", "Authentication" : "Autenticación", "today" : "güei", "yesterday" : "ayeri", + "Help" : "Ayuda", "Apps" : "Aplicaciones", "Settings" : "Configuración", "Twitter" : "Twitter", + "Website" : "Sitiu web", "Additional settings" : "Configuración adicional", + "%1$s via %2$s" : "%1$s per %2$s", "You are not allowed to share %s" : "Nun tienes permisu pa compartir «%s»", "Sunday" : "Domingu", "Monday" : "Llunes", + "Tuesday" : "Martes", + "Wednesday" : "Miércoles", + "Thursday" : "Xueves", "Friday" : "Vienres", "Saturday" : "Sábadu", "Fri." : "Vie.", @@ -31,6 +38,7 @@ "Sep." : "Set.", "Oct." : "Och.", "Nov." : "Pay.", - "Application is not enabled" : "L'aplicación nun ta activada" + "Application is not enabled" : "L'aplicación nun ta activada", + "Full name" : "Nome completu" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index 56adee9edb0..822de748245 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -5,6 +5,7 @@ OC.L10N.register( "This can usually be fixed by giving the web server write access to the config directory." : "Bu sorun genellikle, site sunucusuna config klasörüne yazma izni verilerek çözülebilir.", "But, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ama config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın.", "See %s" : "Şuraya bakın: %s", + "Application %1$s is not present or has a non-compatible version with this server. Please check the apps directory." : "%1$s uygulaması yok ya da bu sunucuyla uyumlu olmayan bir sürümü var. Lütfen apps klasörünü kontrol edin.", "Sample configuration detected" : "Örnek yapılandırma algılandı", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu durum kurulumunuzu bozabilir ve desteklenmez. Lütfen config.php dosyasında değişiklik yapmadan önce belgeleri okuyun", "404" : "404", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index c1e745bcce0..49f3a07bd51 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -3,6 +3,7 @@ "This can usually be fixed by giving the web server write access to the config directory." : "Bu sorun genellikle, site sunucusuna config klasörüne yazma izni verilerek çözülebilir.", "But, if you prefer to keep config.php file read only, set the option \"config_is_read_only\" to true in it." : "Ama config.php dosyasının salt okunur olarak kalmasını istiyorsanız içindeki \"config_is_read_only\" seçeneğini true olarak ayarlayın.", "See %s" : "Şuraya bakın: %s", + "Application %1$s is not present or has a non-compatible version with this server. Please check the apps directory." : "%1$s uygulaması yok ya da bu sunucuyla uyumlu olmayan bir sürümü var. Lütfen apps klasörünü kontrol edin.", "Sample configuration detected" : "Örnek yapılandırma algılandı", "It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Örnek yapılandırmanın kopyalanmış olabileceği tespit edildi. Bu durum kurulumunuzu bozabilir ve desteklenmez. Lütfen config.php dosyasında değişiklik yapmadan önce belgeleri okuyun", "404" : "404", diff --git a/lib/private/DB/Exceptions/DbalException.php b/lib/private/DB/Exceptions/DbalException.php index f9610c5bf25..2b860a50ff3 100644 --- a/lib/private/DB/Exceptions/DbalException.php +++ b/lib/private/DB/Exceptions/DbalException.php @@ -37,6 +37,7 @@ use Doctrine\DBAL\Exception\InvalidArgumentException; use Doctrine\DBAL\Exception\InvalidFieldNameException; use Doctrine\DBAL\Exception\NonUniqueFieldNameException; use Doctrine\DBAL\Exception\NotNullConstraintViolationException; +use Doctrine\DBAL\Exception\RetryableException; use Doctrine\DBAL\Exception\ServerException; use Doctrine\DBAL\Exception\SyntaxErrorException; use Doctrine\DBAL\Exception\UniqueConstraintViolationException; @@ -74,6 +75,10 @@ class DbalException extends Exception { ); } + public function isRetryable(): bool { + return $this->original instanceof RetryableException; + } + public function getReason(): ?int { /** * Constraint errors diff --git a/lib/private/Files/Cache/Propagator.php b/lib/private/Files/Cache/Propagator.php index 4bf88a60843..70fc238d9be 100644 --- a/lib/private/Files/Cache/Propagator.php +++ b/lib/private/Files/Cache/Propagator.php @@ -24,7 +24,7 @@ namespace OC\Files\Cache; -use Doctrine\DBAL\Exception\RetryableException; +use OC\DB\Exceptions\DbalException; use OC\Files\Storage\Wrapper\Encryption; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\Files\Cache\IPropagator; @@ -136,7 +136,11 @@ class Propagator implements IPropagator { try { $builder->executeStatement(); break; - } catch (RetryableException $e) { + } catch (DbalException $e) { + if (!$e->isRetryable()) { + throw $e; + } + /** @var LoggerInterface $loggerInterface */ $loggerInterface = \OCP\Server::get(LoggerInterface::class); $loggerInterface->warning('Retrying propagation query after retryable exception.', [ 'exception' => $e ]); diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php index abbcf4ea433..cd9a05a2a1d 100644 --- a/lib/private/Files/Storage/Common.php +++ b/lib/private/Files/Storage/Common.php @@ -764,6 +764,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage { try { $provider->acquireLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type, $this->getId() . '::' . $path); } catch (LockedException $e) { + $e = new LockedException($e->getPath(), $e, $e->getExistingLock(), $path); if ($logger) { $logger->info($e->getMessage(), ['exception' => $e]); } @@ -796,6 +797,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage { try { $provider->releaseLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type); } catch (LockedException $e) { + $e = new LockedException($e->getPath(), $e, $e->getExistingLock(), $path); if ($logger) { $logger->info($e->getMessage(), ['exception' => $e]); } @@ -828,6 +830,7 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage { try { $provider->changeLock('files/' . md5($this->getId() . '::' . trim($path, '/')), $type); } catch (LockedException $e) { + $e = new LockedException($e->getPath(), $e, $e->getExistingLock(), $path); if ($logger) { $logger->info($e->getMessage(), ['exception' => $e]); } diff --git a/lib/private/Template/JSResourceLocator.php b/lib/private/Template/JSResourceLocator.php index 61611c69b0f..a84ef8968b9 100644 --- a/lib/private/Template/JSResourceLocator.php +++ b/lib/private/Template/JSResourceLocator.php @@ -100,7 +100,7 @@ class JSResourceLocator extends ResourceLocator { $app_path = realpath($app_path); // check combined files - if ($this->cacheAndAppendCombineJsonIfExist($app_path, $script.'.json', $app)) { + if (!str_starts_with($script, 'l10n/') && $this->cacheAndAppendCombineJsonIfExist($app_path, $script.'.json', $app)) { return; } diff --git a/package-lock.json b/package-lock.json index f2ef547587f..5eea041d9f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -106,7 +106,7 @@ "@testing-library/vue": "^5.8.3", "@types/dockerode": "^3.3.17", "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", + "@typescript-eslint/parser": "^5.59.5", "@vue/test-utils": "^1.3.5", "@vue/tsconfig": "^0.1.3", "@vue/vue2-jest": "^29.2.4", @@ -5492,14 +5492,14 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz", + "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", "debug": "^4.3.4" }, "engines": { @@ -5518,6 +5518,125 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.59.2", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz", @@ -30369,15 +30488,88 @@ } }, "@typescript-eslint/parser": { - "version": "5.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz", - "integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==", + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.5.tgz", + "integrity": "sha512-NJXQC4MRnF9N9yWqQE2/KLRSOLvrrlZb48NGVfBa+RuPMN6B7ZcK5jZOvhuygv4D64fRKnZI4L4p8+M+rfeQuw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.59.2", - "@typescript-eslint/types": "5.59.2", - "@typescript-eslint/typescript-estree": "5.59.2", + "@typescript-eslint/scope-manager": "5.59.5", + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/typescript-estree": "5.59.5", "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.5.tgz", + "integrity": "sha512-jVecWwnkX6ZgutF+DovbBJirZcAxgxC0EOHYt/niMROf8p4PwxxG32Qdhj/iIQQIuOflLjNkxoXyArkcIP7C3A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5" + } + }, + "@typescript-eslint/types": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.5.tgz", + "integrity": "sha512-xkfRPHbqSH4Ggx4eHRIO/eGL8XL4Ysb4woL8c87YuAo8Md7AUjyWKa9YMwTL519SyDPrfEgKdewjkxNCVeJW7w==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.5.tgz", + "integrity": "sha512-+XXdLN2CZLZcD/mO7mQtJMvCkzRfmODbeSKuMY/yXbGkzvA9rJyDY5qDYNoiz2kP/dmyAxXquL2BvLQLJFPQIg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "@typescript-eslint/visitor-keys": "5.59.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.59.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.5.tgz", + "integrity": "sha512-qL+Oz+dbeBRTeyJTIy0eniD3uvqU7x+y1QceBismZ41hd4aBSRh8UAw4pZP0+XzLuPZmx4raNMq/I+59W2lXKA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.59.5", + "eslint-visitor-keys": "^3.3.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "@typescript-eslint/scope-manager": { diff --git a/package.json b/package.json index 30b99c76b34..0ab553dbf8c 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "@testing-library/vue": "^5.8.3", "@types/dockerode": "^3.3.17", "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", + "@typescript-eslint/parser": "^5.59.5", "@vue/test-utils": "^1.3.5", "@vue/tsconfig": "^0.1.3", "@vue/vue2-jest": "^29.2.4", |